tango-app-ui-analyse-report 3.7.1-alpha.2 → 3.7.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -364,7 +364,7 @@ export class UserReportComponent {
364
364
  this.service.saveAsExcelFile(res, this.selectedData.name);
365
365
  }
366
366
  }, (error) => {
367
- this.toast.getErrorToast('Something went wrong');
367
+ this.toast.getErrorToast('The export limit cannot exceed 8,000.');
368
368
  });
369
369
  }
370
370
  }
@@ -394,7 +394,7 @@ export class UserReportComponent {
394
394
  this.service.saveAsExcelFile(res, 'customTemplate');
395
395
  }
396
396
  }, (error) => {
397
- this.toast.getErrorToast('Something went wrong');
397
+ this.toast.getErrorToast('The export limit cannot exceed 8,000.');
398
398
  });
399
399
  }
400
400
  }
@@ -446,4 +446,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
446
446
  type: ViewChild,
447
447
  args: ['confirmationModal']
448
448
  }] } });
449
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS1yZXBvcnQvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVwb3J0L3VzZXItcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtcmVwb3J0L3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcG9ydC91c2VyLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBa0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTeEQsTUFBTSxPQUFPLG1CQUFtQjtJQWlDVjtJQUE4QjtJQUE4QjtJQUFxQztJQUE0QjtJQS9CakgsaUJBQWlCLENBQU07SUFDdkQsUUFBUSxDQUEwQjtJQUNsQyxPQUFPLEdBQVcsSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sR0FBVyxLQUFLLENBQUM7SUFDdkIsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixVQUFVLEdBQVcsS0FBSyxDQUFDO0lBQzNCLGFBQWEsR0FBVyxLQUFLLENBQUM7SUFDOUIsVUFBVSxHQUFNLEVBQUUsQ0FBQztJQUNuQixZQUFZLEdBQU8sQ0FBQyxFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxDQUFDLENB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QUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDSCxDQUFDO3dHQXRiUSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwrS0NaaEMsNnZuQkF1UmdCOzs0RkQzUUgsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs0TUFNSyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCxPbkRlc3Ryb3ksT25Jbml0LFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWwsTmdiTW9kYWxNb2R1bGUsTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFuYWx5c2VyZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hbmFseXNlcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVzZXItcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91c2VyLXJlcG9ydC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybWF0aW9uTW9kYWwnKSBjb25maXJtYXRpb25Nb2RhbDogYW55O1xyXG4gIG1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDtcclxuICBsb2FkaW5nOmJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YTpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3NpZGVuYXY6Ym9vbGVhbiA9IHRydWU7XHJcbiAgb3BlbkN1c3RvbTpib29sZWFuID0gZmFsc2U7XHJcbiAgb3BlbkFjY29yZGlhbjpib29sZWFuID0gZmFsc2U7XHJcbiAgY3VzdG9tTmFtZTphbnkgPScnO1xyXG4gIHN0YW5kYXJkRGF0YTphbnkgPSBbe25hbWU6J1RlbXBsYXRlIEEnLHZhbHVlOidBJ30se25hbWU6J1RlbXBsYXRlIEInLHZhbHVlOidCJ30se25hbWU6J1RlbXBsYXRlIEMnLHZhbHVlOidDJ30se25hbWU6J1RlbXBsYXRlIEQnLHZhbHVlOidEJ31dXHJcbiAgY29zdG9tQnV0dG9uczphbnkgPSBbJ01ldHJpY3MnLCdDb21wYXJpc2lvbicsJ1RpbWUgRmlsdGVyJ11cclxuICBtZXRyaWNzRGF0YTphbnkgPSBbXVxyXG4gIGNvbXBhcmlzaW9uRGF0YTphbnkgPSBbJ1dURCcsJ01URCcsJ05vbmUnXVxyXG4gIGZpbHRlckRhdGE6YW55ID0gWydob3VyJywnZGF5J11cclxuICBpbmZyYVRhYmxlOmFueSA9IFtdXHJcbiAgc2VsZWN0ZWREYXRhOiBhbnk7XHJcbiAgY3VzdG9tYnRuOiBhbnkgPSAnTWV0cmljcyc7XHJcbiAgbWV0cmljc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGNvbXBhcmlzaW9uRmlsdGVyOiBzdHJpbmcgPSAnV1REJztcclxuICBmaWx0ZXJEYXRhTGlzdDogc3RyaW5nID0gJ2hvdXInO1xyXG4gIC8vIHNvcnRCeTphbnkgPSAnJztcclxuICAvLyBzb3J0Q29sdW1OYW1lOmFueSA9ICcnO1xyXG4gIHRvdGFsQ291bnQ6YW55O1xyXG4gIC8vIHNlYXJjaFZhbHVlOiBhbnkgPSAnJztcclxuICBkeW5hbWljRGF0YTphbnkgPSB7fTtcclxuICBkaXNwbGF5ZWRDb2x1bW5zOmFueSA9IFtdO1xyXG4gIHBhZ2VTaXplOmFueT1bMTAsMjAsMzBdO1xyXG4gIGNsaWVudERhdGE6YW55ID1bXTtcclxuICBzaG93UmVwb3J0UHJvY2Vzc2luZ0NhcmQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHllc3RlcmRheURhdGU6IHN0cmluZyA9ICcnO1xyXG4gIGRhdGFQcm9jZXNzZWRMb2FkaW5nID0gdHJ1ZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsc2VydmljZTpOZ2JNb2RhbCxwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIHNlcnZpY2U6QW5hbHlzZXJlcG9ydFNlcnZpY2UscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpe1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBoZWFkZXJEYXRhOmFueTtcclxuICBzdG9yZUFycmF5OmFueSA9IFtdO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSB0aGlzLnN0YW5kYXJkRGF0YVswXTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLGRlYm91bmNlVGltZSg2MDApKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5zdG9yZUFycmF5ID0gZGF0YT8uc3RvcmVzPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5jaGVja2VkKS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZUlkKTtcclxuICAgICAgICB0aGlzLmNoZWNrVG9kYXlSZXBvcnRTdGF0dXMoKSAgXHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCA9PT0gJzQzMCcpIHtcclxuICAgICAgICAgIGNvbnN0IGlzVGVtcGxhdGVFRXhpc3RzID0gdGhpcy5zdGFuZGFyZERhdGEuc29tZSgoaXRlbTphbnkpID0+IGl0ZW0udmFsdWUgPT09ICdFJyk7XHJcbiAgICAgICAgICBpZiAoIWlzVGVtcGxhdGVFRXhpc3RzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhbmRhcmREYXRhLnB1c2goeyBuYW1lOiAnVGVtcGxhdGUgRScsIHZhbHVlOiAnRScgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEgPSB7XHJcbiAgICAgICAgICBjbGllbnRJZDogZGF0YS5jbGllbnQsXHJcbiAgICAgICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlQXJyYXkubGVuZ3RoID8gdGhpcy5zdG9yZUFycmF5IDogZGF0YS5zdG9yZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmVJZCksXHJcbiAgICAgICAgICBmcm9tRGF0ZTogZGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICAgIHRvRGF0ZTogZGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICB0ZW1wbGF0ZVR5cGU6IHRoaXMuc2VsZWN0ZWREYXRhLnZhbHVlLFxyXG4gICAgICAgICAgZXhwb3J0OiBmYWxzZSxcclxuICAgICAgICAgIHNlYXJjaDogJycsXHJcbiAgICAgICAgICBzb3J0OiAnJyxcclxuICAgICAgICAgIHNvcnRCeTogJydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghdGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbUNyZWF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNsaWVudERhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjbGllbnQtZGV0YWlsc1wiKSB8fCBcInt9XCIpO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnREYXRhID0gY2xpZW50RGF0YTtcclxuICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGxpbWl0ID0gY2xpZW50RGF0YT8uYm91bmNlZExpbWl0Py52YWx1ZSA/PyBjbGllbnREYXRhPy5ib3VuY2VkTGltaXRWYWx1ZSA/PyAnJztcclxuICAgICAgICAgIGNvbnN0IGNvbnYgPSBjbGllbnREYXRhPy5jb252ZXJzaW9uPy52YWx1ZSA/PyBjbGllbnREYXRhPy5jb252ZXJzaW9uVmFsdWUgPz8gJyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhLmNsaWVudCA9PT0gJzQ1MicpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubWV0cmljc0RhdGE9W3tuYW1lOmBMZXNzIHRoYW4gJHtsaW1pdH0gbWluc2AsY2hlY2tlZDpmYWxzZSx2YWx1ZTpcIkJvdW5jZWQgQ291bnRcIn0se25hbWU6YCR7bGltaXR9IC0gJHtjb252fSBtaW5zYCxjaGVja2VkOmZhbHNlLHZhbHVlOidNaXNzZWQgT3Bwb3J0dW5pdHkgQ291bnQnfSx7bmFtZTpgTW9yZSB0aGFuICR7bGltaXR9IG1pbnNgLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0VuZ2FnZXJzIENvdW50J30se25hbWU6YE1vcmUgdGhhbiAke2NvbnZ9IG1pbnMgUmF0ZWAsY2hlY2tlZDpmYWxzZSx2YWx1ZTonQ29udmVyc2lvbiBSYXRlJ30se25hbWU6J0FnZScsY2hlY2tlZDpmYWxzZSx2YWx1ZTonYWdlJ30se25hbWU6J0dlbmRlcicsY2hlY2tlZDpmYWxzZSx2YWx1ZTonZ2VuZGVyJ30se25hbWU6J05PQicsY2hlY2tlZDpmYWxzZSx2YWx1ZTonbm9iJ30se25hbWU6J0F2ZyBJbmZyYSBEb3dudGltZSAobWlucyknLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0F2ZyBJbmZyYSBEb3dudGltZSAobWlucyknfV1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1ldHJpY3NEYXRhPVt7bmFtZTonUG90ZW50aWFsIEJ1eWVycycsY2hlY2tlZDpmYWxzZSx2YWx1ZTonUG90ZW50aWFsIEJ1eWVycyd9LHtuYW1lOidCb3VuY2VkIEZvb3RmYWxsJyxjaGVja2VkOmZhbHNlLHZhbHVlOlwiQm91bmNlZCBDb3VudFwifSx7bmFtZTonTWlzc2VkIE9wcG9ydHVuaXR5JyxjaGVja2VkOmZhbHNlLHZhbHVlOidNaXNzZWQgT3Bwb3J0dW5pdHkgQ291bnQnfSx7bmFtZTonRW5nYWdlcnMgQ291bnQnLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0VuZ2FnZXJzIENvdW50J30se25hbWU6J0NvbnZlcnNpb24nLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0NvbnZlcnNpb24gUmF0ZSd9LHtuYW1lOidBZ2UnLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J2FnZSd9LHtuYW1lOidHZW5kZXInLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J2dlbmRlcid9LHtuYW1lOidOT0InLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J25vYid9LHtuYW1lOidBdmcgSW5mcmEgRG93bnRpbWUgKG1pbnMpJyxjaGVja2VkOmZhbHNlLHZhbHVlOidBdmcgSW5mcmEgRG93bnRpbWUgKG1pbnMpJ31dXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICAgZ2V0RGlzcGxheU5hbWUoY29sdW1uOiBhbnksIHJvdzogYW55KTogYW55IHtcclxuICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5jbGllbnREYXRhPy5ib3VuY2VkTGltaXQ/LnZhbHVlID8/IHRoaXMuY2xpZW50RGF0YT8uYm91bmNlZExpbWl0VmFsdWUgPz8gJyc7XHJcbiAgICAgIGNvbnN0IGNvbnYgPSB0aGlzLmNsaWVudERhdGE/LmNvbnZlcnNpb24/LnZhbHVlID8/IHRoaXMuY2xpZW50RGF0YT8uY29udmVyc2lvblZhbHVlID8/ICcnO1xyXG4gICAgICBpZiAoY2xpZW50ID09PSAnNDUyJykge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUxhYmVsczphbnkgPSB7XHJcbiAgICAgICAgICAnQm91bmNlZCBDb3VudCc6IGBMZXNzIHRoYW4gJHtsaW1pdH0gbWluc2AsXHJcbiAgICAgICAgICAnRW5nYWdlcnMgQ291bnQnOiBgTW9yZSB0aGFuICR7bGltaXR9IG1pbnNgLFxyXG4gICAgICAgICAgJ0NvbnZlcnNpb24gUmF0ZSc6IGBNb3JlIHRoYW4gJHtjb252fSBtaW5zIFJhdGVgLFxyXG4gICAgICAgICAgJ01pc3NlZCBPcHBvcnR1bml0eSBDb3VudCc6IGAke2xpbWl0fSAtICR7Y29udn0gbWluc2AsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbUxhYmVsc1tjb2x1bW5dID8/IGNvbHVtbjtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIHJldHVybiBjb2x1bW47IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgZ2V0VGVtcGxhdGVzKCkge1xyXG4gICAgdGhpcy5pbmZyYVRhYmxlID0gW107XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnJlcG9ydExpc3QodGhpcy5keW5hbWljRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcy5kYXRhLnRlbXBsYXRlRGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pbmZyYVRhYmxlID0gcmVzLmRhdGE/LnRlbXBsYXRlRGF0YTtcclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbENvdW50O1xyXG4gICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAvLyB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gdGhpcy50b3RhbENvdW50IDwgMTAgPyB0aGlzLnRvdGFsQ291bnQgOiB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0O1xyXG4gICAgICAgIGlmKHRoaXMuaGVhZGVyRGF0YS5jbGllbnQgPT09JzQ1Micpe1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5rZXlzKHRoaXMuaW5mcmFUYWJsZVswXSkuZmlsdGVyKFxyXG4gICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaWRlbmF2KCl7XHJcbiAgICB0aGlzLnNob3dzaWRlbmF2ID0gIXRoaXMuc2hvd3NpZGVuYXY7XHJcbiAgfVxyXG4gIHNlbGVjdFJhZGlvKGRhdGE6YW55KXtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMDsgXHJcbiAgICB0aGlzLmluZnJhVGFibGUgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gZGF0YTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSAxMDtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEudGVtcGxhdGVUeXBlID0gZGF0YS52YWx1ZTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnQgPSAnJztcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydEJ5PScnO1xyXG4gICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICB9XHJcbiAgY3JlYXRlQ3VzdG9tKCl7XHJcbiAgICB0aGlzLmN1c3RvbU5hbWUgPSAnJztcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbHNlcnZpY2Uub3Blbih0aGlzLmNvbmZpcm1hdGlvbk1vZGFsLCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4geyBcclxuICAgICAgdGhpcy5vcGVuQWNjb3JkaWFuID0gIXRoaXMub3BlbkFjY29yZGlhbjtcclxuICAgICAgdGhpcy5vcGVuQ3VzdG9tID0gIXRoaXMub3BlbkN1c3RvbTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjdXN0b21PcHRpb24oZGF0YTphbnkpe1xyXG4gICAgdGhpcy5jdXN0b21idG4gPSBkYXRhO1xyXG4gIH1cclxuICBtb3ZldG9OZXh0KCl7XHJcbiAgICBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ01ldHJpY3MnKXtcclxuICAgICAgdGhpcy5jdXN0b21idG4gPSAnQ29tcGFyaXNpb24nXHJcbiAgICB9ZWxzZSBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ0NvbXBhcmlzaW9uJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ1RpbWUgRmlsdGVyJ1xyXG4gICAgfVxyXG4gIH1cclxuICBtb3ZldG9CYWNrKCl7XHJcbiAgICBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ0NvbXBhcmlzaW9uJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ01ldHJpY3MnXHJcbiAgICB9ZWxzZSBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ1RpbWUgRmlsdGVyJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ0NvbXBhcmlzaW9uJ1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDb21wYXJpc2lvbihkYXRhOmFueSl7XHJcbiAgICB0aGlzLmNvbXBhcmlzaW9uRmlsdGVyID0gZGF0YTtcclxuICB9XHJcbiAgZ2V0RmlsdGVyKGRhdGE6YW55KXtcclxuICAgIHRoaXMuZmlsdGVyRGF0YUxpc3QgPSBkYXRhO1xyXG4gIH1cclxuICBjdXN0b21DcmVhdGUoKXtcclxuICAgIHRoaXMuaW5mcmFUYWJsZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0ge307XHJcblxyXG4gICAgbGV0IHNlbGVjdEZpZWxkID0gIHRoaXMubWV0cmljc0RhdGEuZmlsdGVyKChpdGVtOmFueSkgPT4gaXRlbS5jaGVja2VkKS5tYXAoKGl0ZW06YW55KSA9PiBpdGVtLnZhbHVlKTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDp0aGlzLmR5bmFtaWNEYXRhLmNsaWVudElkLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmR5bmFtaWNEYXRhLnN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLmZyb21EYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZHluYW1pY0RhdGEudG9EYXRlLFxyXG4gICAgICBsaW1pdDogdGhpcy5keW5hbWljRGF0YS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCxcclxuICAgICAgZXhwb3J0OmZhbHNlLCAgICBcclxuICAgICAgY29tcGFyaXNvbkZpbHRlcjogdGhpcy5jb21wYXJpc2lvbkZpbHRlciAhPSAnTm9uZScgPyB0aGlzLmNvbXBhcmlzaW9uRmlsdGVyIDogJycsXHJcbiAgICAgIHRpbWVGaWx0ZXI6IHRoaXMuZmlsdGVyRGF0YUxpc3QsIFxyXG4gICAgICBzZWxldGVkRmllbGRzOnNlbGVjdEZpZWxkLFxyXG4gICAgICBzZWFyY2g6dGhpcy5keW5hbWljRGF0YS5zZWFyY2gsXHJcbiAgICAgIHNvcnQ6dGhpcy5keW5hbWljRGF0YS5zb3J0LFxyXG4gICAgICBzb3J0Qnk6dGhpcy5keW5hbWljRGF0YS5zb3J0QnlcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5jdXN0b21UZW1wbGF0ZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuZGF0YT8uY3VzdG9tVGVtcGxhdGU/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5pbmZyYVRhYmxlID0gcmVzLmRhdGEuY3VzdG9tVGVtcGxhdGU7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uU2l6ZXMoKTtcclxuICAgICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAgIC8vIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IHRoaXMudG90YWxDb3VudCA6IHRoaXMuZHluYW1pY0RhdGEubGltaXQ7XHJcbiAgICAgICAgICBpZih0aGlzLmhlYWRlckRhdGEuY2xpZW50ID09PSc0NTInKXtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gT2JqZWN0LmtleXModGhpcy5pbmZyYVRhYmxlWzBdKS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YSh2YWx1ZTphbnkpe1xyXG4gICAgaWYodGhpcy5keW5hbWljRGF0YS5zb3J0LnRvTG93ZXJDYXNlKCkgPT0gdmFsdWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeSAqPSAtMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeSA9IDE7XHJcbiAgICB9XHJcbiAgICBpZih2YWx1ZSA9PSAnRm9vdEZhbGwgQ291bnQnICYmIHRoaXMub3BlbkN1c3RvbSkge1xyXG4gICAgICB2YWx1ZSA9ICdGb290ZmFsbCBDb3VudCdcclxuICAgIH1cclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydCA9IHZhbHVlO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gcGFnZU9mZnNldCAtIDE7XHJcbiAgICBpZih0aGlzLm9wZW5DdXN0b20pIHtcclxuICAgICAgdGhpcy5jdXN0b21DcmVhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAwO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoRGF0YSgpe1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAwO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgIHRoaXMuaW5mcmFUYWJsZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6dGhpcy5keW5hbWljRGF0YS5jbGllbnRJZCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5keW5hbWljRGF0YS5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5keW5hbWljRGF0YS5mcm9tRGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLnRvRGF0ZSxcclxuICAgICAgbGltaXQ6IHRoaXMuZHluYW1pY0RhdGEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy5keW5hbWljRGF0YS5vZmZzZXQsXHJcbiAgICAgIHRlbXBsYXRlVHlwZTogdGhpcy5zZWxlY3RlZERhdGEudmFsdWUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZSwgICAgXHJcbiAgICAgIHNlYXJjaDp0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaCxcclxuICAgICAgc29ydDp0aGlzLmR5bmFtaWNEYXRhLnNvcnQsXHJcbiAgICAgIHNvcnRCeTp0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeVxyXG4gICAgfVxyXG4gICAgIHRoaXMuc2VydmljZS5yZXBvcnRMaXN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcyAmJiByZXMuZGF0YS50ZW1wbGF0ZURhdGE/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaW5mcmFUYWJsZSA9IHJlcy5kYXRhPy50ZW1wbGF0ZURhdGE7XHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxDb3VudDtcclxuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAvLyB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gdGhpcy50b3RhbENvdW50IDwgMTAgPyB0aGlzLnRvdGFsQ291bnQgOiB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0O1xyXG4gICAgICAgIGlmKHRoaXMuaGVhZGVyRGF0YS5jbGllbnQgPT09JzQ1Micpe1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5rZXlzKHRoaXMuaW5mcmFUYWJsZVswXSkuZmlsdGVyKFxyXG4gICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhZ2luYXRpb25TaXplczphbnkgPSBbMTAsMjAsMzBdO1xyXG4gICAgc2V0UGFnaW5hdGlvblNpemVzKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxDb3VudCA+IDEwKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbdGhpcy50b3RhbENvdW50XTsgLy8gSnVzdCBvbmUgb3B0aW9uIGlmIGxlc3MgdGhhbiAxMFxyXG4gICAgfVxyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblNpemVzWzBdO1xyXG4gIH1cclxuICBFeHBvcnRhc1hsc3goKXtcclxuICAgIGlmKHRoaXMub3BlbkN1c3RvbSkge1xyXG4gICAgICB0aGlzLmV4cG9ydEN1c3RvbVRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5leHBvcnRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgZXhwb3J0VGVtcGxhdGVzKCkge1xyXG4gICAgaWYodGhpcy5keW5hbWljRGF0YS5saW1pdCA+IDI1MDAwKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdUaGUgZXhwb3J0IGxpbWl0IGNhbm5vdCBleGNlZWQgMjUsMDAwLicpXHJcbiAgICB9IGVsc2V7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6dGhpcy5keW5hbWljRGF0YS5jbGllbnRJZCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5keW5hbWljRGF0YS5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5keW5hbWljRGF0YS5mcm9tRGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLnRvRGF0ZSxcclxuICAgICAgbGltaXQ6IHRoaXMuZHluYW1pY0RhdGEubGltaXQsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgdGVtcGxhdGVUeXBlOiB0aGlzLnNlbGVjdGVkRGF0YS52YWx1ZSxcclxuICAgICAgZXhwb3J0OnRydWUsXHJcbiAgICAgIHNlYXJjaDp0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaCxcclxuICAgICAgc29ydDp0aGlzLmR5bmFtaWNEYXRhLnNvcnQsXHJcbiAgICAgIHNvcnRCeTp0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkUmVwb3J0TGlzdChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMgKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsdGhpcy5zZWxlY3RlZERhdGEubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1NvbWV0aGluZyB3ZW50IHdyb25nJyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgfVxyXG4gIGV4cG9ydEN1c3RvbVRlbXBsYXRlKCkge1xyXG4gICAgaWYodGhpcy5keW5hbWljRGF0YS5saW1pdCA+IDI1MDAwKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdUaGUgZXhwb3J0IGxpbWl0IGNhbm5vdCBleGNlZWQgMjUsMDAwLicpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgbGV0IHNlbGVjdEZpZWxkID0gIHRoaXMubWV0cmljc0RhdGEuZmlsdGVyKChpdGVtOmFueSkgPT4gaXRlbS5jaGVja2VkKS5tYXAoKGl0ZW06YW55KSA9PiBpdGVtLnZhbHVlKTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDp0aGlzLmR5bmFtaWNEYXRhLmNsaWVudElkLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmR5bmFtaWNEYXRhLnN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLmZyb21EYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZHluYW1pY0RhdGEudG9EYXRlLFxyXG4gICAgICBsaW1pdDogdGhpcy5keW5hbWljRGF0YS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICBleHBvcnQ6dHJ1ZSwgICAgXHJcbiAgICAgIGNvbXBhcmlzb25GaWx0ZXI6IHRoaXMuY29tcGFyaXNpb25GaWx0ZXIgIT0gJ05vbmUnID8gdGhpcy5jb21wYXJpc2lvbkZpbHRlciA6ICcnLFxyXG4gICAgICB0aW1lRmlsdGVyOiB0aGlzLmZpbHRlckRhdGFMaXN0LCBcclxuICAgICAgc2VsZXRlZEZpZWxkczpzZWxlY3RGaWVsZCxcclxuICAgICAgc2VhcmNoOnRoaXMuZHluYW1pY0RhdGEuc2VhcmNoLFxyXG4gICAgICBzb3J0OnRoaXMuZHluYW1pY0RhdGEuc29ydCxcclxuICAgICAgc29ydEJ5OnRoaXMuZHluYW1pY0RhdGEuc29ydEJ5XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlcnZpY2UuZG93bmxvYWRDdXN0b21SZXBvcnRMaXN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcyApIHtcclxuICAgICAgICB0aGlzLnNlcnZpY2Uuc2F2ZUFzRXhjZWxGaWxlKHJlcywnY3VzdG9tVGVtcGxhdGUnKTtcclxuICAgICAgfVxyXG4gICAgfSwoZXJyb3I6YW55KSA9PiB7XHJcbiAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdCgnU29tZXRoaW5nIHdlbnQgd3JvbmcnKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICB9XHJcbiAgcmVzZXQoKSB7XHJcbiAgICB0aGlzLm9wZW5DdXN0b20gPSBmYWxzZTtcclxuICAgIHRoaXMuY3VzdG9tYnRuID0gJ01ldHJpY3MnO1xyXG4gICAgdGhpcy5tZXRyaWNzRGF0YS5mb3JFYWNoKChpdGVtOmFueSkgPT4gaXRlbS5jaGVja2VkID0gZmFsc2UpO1xyXG4gICAgdGhpcy5jb21wYXJpc2lvbkZpbHRlciA9ICAnV1REJztcclxuICAgIHRoaXMuZmlsdGVyRGF0YUxpc3QgPSAnaG91cic7XHJcbiAgfVxyXG4gIHJlc2V0VmFsdWVzKCkge1xyXG4gICAgXHJcbiAgICB0aGlzLm9wZW5DdXN0b20gPSAhdGhpcy5vcGVuQ3VzdG9tO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQ9MDtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydCA9ICcnO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5zb3J0QnkgPSAnJztcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc2VhcmNoID0gJyc7XHJcbiAgfVxyXG4gIGNoZWNrVG9kYXlSZXBvcnRTdGF0dXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFQcm9jZXNzZWRMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHJlcG9ydFBhcmFtcyA9IHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldENoZWNrVG9kYXlSZXBvcnRTdGF0dXMocmVwb3J0UGFyYW1zKVxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVByb2Nlc3NlZExvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuc2hvd1JlcG9ydFByb2Nlc3NpbmdDYXJkID0gcmVzPy5kYXRhPy5yZXBvcnRTZW5kU3RhdHVzID09PSB0cnVlO1xyXG4gICAgICAgIHRoaXMueWVzdGVyZGF5RGF0ZSA9IHJlcz8uZGF0YT8ueWVzdGVyZGF5IHx8ICcnO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNoZWNraW5nIHJlcG9ydCBzdGF0dXM6JywgZXJyKTtcclxuICAgICAgICB0aGlzLnNob3dSZXBvcnRQcm9jZXNzaW5nQ2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGF0YVByb2Nlc3NlZExvYWRpbmcgPSBmYWxzZVxyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cclxuICA8ZGl2IFtuZ0NsYXNzXT1cInNob3dzaWRlbmF2ID8gJ2NvbC1zbS0zJzonZC1ub25lJ1wiPlxyXG4gICAgIDxkaXYgY2xhc3M9XCJjYXJkIHBvc2l0aW9uLXJlbGF0aXZlIGgtMTAwXCI+XHJcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wIG92ZXJmbG93LWF1dG9cIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gW2Nsb3NlT3RoZXJzXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3RhbmRhcmQgVGVtcGxhdGUgU3RhcnQgIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbSBbY29sbGFwc2VkXT1cIm9wZW5BY2NvcmRpYW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmdcIiBuZ2JBY2NvcmRpb25CdXR0b24gKGNsaWNrKT1cInJlc2V0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWRcIj5TdGFuZGFyZCBUZW1wbGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHQtMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBoLWF1dG8gcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IGEgcmVwb3J0IHRvIHByZXZpZXcgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBkYXRhIG9mIHN0YW5kYXJkRGF0YVwiIGNsYXNzPVwibXQtNSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdFJhZGlvKGRhdGEpXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtjaGVja2VkXT1cInNlbGVjdGVkRGF0YS5uYW1lID09PSBkYXRhLm5hbWVcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cInJhZGlvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHN0YW5kYXJkXCI+e3tkYXRhLm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBTdGFuZGFyZCBUZW1wbGF0ZSBFbmQgIC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gVGVtcGxhdGUgU3RhcnQgIC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAqbmdJZj1cIiFvcGVuQ3VzdG9tXCIgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBuZ2JBY2NvcmRpb25JdGVtIFtjb2xsYXBzZWRdPVwiIW9wZW5DdXN0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcHQtMFwiIG5nYkFjY29yZGlvbkJ1dHRvbiAoY2xpY2spPVwicmVzZXRWYWx1ZXMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZ3JpZFwiPkN1c3RvbSBUZW1wbGF0ZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC0xMDBweCBwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWxlY3QgeW91ciBkYXRhIHBvaW50cyB0byBhZGQgaW50byB0aGUgcmVwb3J0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bmhlYWRlciB3LTEwMCBwLTIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImN1cnNvci1wb2ludGVyIHB4LTJcIiAoY2xpY2spPVwiY3VzdG9tT3B0aW9uKGJ1dHRvbilcIiBbbmdDbGFzc109XCJ0aGlzLmN1c3RvbWJ0biA9PT0gYnV0dG9uID8gJ2J0biAnOicnXCIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBjb3N0b21CdXR0b25zXCI+e3tidXR0b259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnaGVpZ2h0JzogaW5mcmFUYWJsZS5sZW5ndGggPyAnYXV0bycgOiAnMTAwJScgfVwiIGNsYXNzPVwib3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbWJ0biA9PT0gJ01ldHJpY3MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBtZXRyaWNzRGF0YVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwibXQtMiBjdXJzb3ItcG9pbnRlclwiIFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgc3RhbmRhcmQgZnMtNFwiPnt7ZGF0YS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tYnRuID09PSAnQ29tcGFyaXNpb24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjb21wYXJpc2lvbkRhdGFcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIiAoY2xpY2spPVwiZ2V0Q29tcGFyaXNpb24oZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJjb21wYXJpc2lvbkZpbHRlciA9PT0gZGF0YVwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwicmFkaW9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSBzdGFuZGFyZCBmcy00XCI+e3tkYXRhfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY3VzdG9tYnRuID09PSAnVGltZSBGaWx0ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBmaWx0ZXJEYXRhXCIgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cImdldEZpbHRlcihkYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtjaGVja2VkXT1cImZpbHRlckRhdGFMaXN0ID09PSBkYXRhXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJyYWRpb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHN0YW5kYXJkIGZzLTRcIj57e2RhdGEgPT09ICdob3VyJyA/ICdCeSBIb3VyJyA6ICdCeSBEYXRlJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwib3BlbkN1c3RvbVwiIGNsYXNzPVwiZC1mbGV4IHctMTAwXCIgW25nQ2xhc3NdPVwiIWxvYWRpbmcgPyAnbXQtNSc6JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0zIG1iLTNcIiBbbmdDbGFzc109XCJjdXN0b21idG4gPT09ICdNZXRyaWNzJyA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJtb3ZldG9CYWNrKClcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY3VzdG9tYnRuICE9PSAnVGltZSBGaWx0ZXInXCIgKGNsaWNrKT1cIm1vdmV0b05leHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXByaW1hcnkgdy01MCBtcy0zIG1iLTNcIj5OZXh0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY3VzdG9tYnRuID09PSAnVGltZSBGaWx0ZXInXCIgKGNsaWNrKT1cImR5bmFtaWNEYXRhLmxpbWl0ID0gMTA7Y3VzdG9tQ3JlYXRlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1wcmltYXJ5IHctNTAgbXMtMyBtYi0zXCI+VmlldzwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSBDdXN0b20gVGVtcGxhdGUgRW5kICAtLT5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICBcclxuICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wIG10LTVcIj4gLS0+XHJcbiAgICAgICAgICAgICA8IS0tIDxidXR0b24gKm5nSWY9XCIhb3BlbkFjY29yZGlhblwiIChjbGljayk9XCJjcmVhdGVDdXN0b20oKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgQ3JlYXRlIEN1c3RvbSBUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwib3BlbkN1c3RvbVwiIGNsYXNzPVwiZC1mbGV4IHctMTAwIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmUgdy01MCBtZS0zXCIgW25nQ2xhc3NdPVwiY3VzdG9tYnRuID09PSAnTWV0cmljcycgPyAnaGlkZGVuJyA6ICcnXCIgKGNsaWNrKT1cIm1vdmV0b0JhY2soKVwiPkJhY2s8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjdXN0b21idG4gIT09ICdUaW1lIEZpbHRlcidcIiAoY2xpY2spPVwibW92ZXRvTmV4dCgpXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXByaW1hcnkgdy01MCBtcy0zXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImN1c3RvbWJ0biA9PT0gJ1RpbWUgRmlsdGVyJ1wiIChjbGljayk9XCJjdXN0b21DcmVhdGUoKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1wcmltYXJ5IHctNTAgbXMtM1wiPlZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICA8IS0tIDwvZGl2PiAtLT5cclxuICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dzaWRlbmF2XCIgKGNsaWNrKT1cInNpZGVuYXYoKVwiIGNsYXNzPVwiYmFja0J1dHRvbnJpZ2h0IHRleHQtY2VudGVyIHB0LTEgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTguMjcyNTkgMTIuNjM2M0w0LjYzNjIzIDguOTk5ODlMOC4yNzI1OSA1LjM2MzUzTTEzLjM2MzUgMTIuNjM2M0w5LjcyNzE0IDguOTk5ODlMMTMuMzYzNSA1LjM2MzUzXCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNDU0NTVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJzaG93c2lkZW5hdiA/ICdjb2wtc20tOSc6J2NvbC1zbS0xMidcIj5cclxuICAgICA8ZGl2ICpuZ0lmPVwiIXNob3dSZXBvcnRQcm9jZXNzaW5nQ2FyZCAmJiAhZGF0YVByb2Nlc3NlZExvYWRpbmdcIiBjbGFzcz1cImNhcmQgcG9zaXRpb24tcmVsYXRpdmUgIG1pbi1oLXNtLTMwMHB4IG1pbi1oLW1kLTQwMHB4ICBtaW4taC14bC01NTBweCBtaW4taC1sZy01MDBweCBtYXgtaC1hdXRvXCI+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiFzaG93c2lkZW5hdlwiIChjbGljayk9XCJzaWRlbmF2KClcIiBjbGFzcz1cImJhY2tCdXR0b25sZWZ0IHRleHQtY2VudGVyIHB0LTEgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuNzI3MTQgMTIuNjM2NUwxMy4zNjM1IDkuMDAwMTNMOS43MjcxNCA1LjM2Mzc3TTQuNjM2MjMgMTIuNjM2NUw4LjI3MjU5IDkuMDAwMTNMNC42MzYyMyA1LjM2Mzc3XCIgc3Ryb2tlPVwiIzEwMTgyOFwiIHN0cm9rZS13aWR0aD1cIjEuNDU0NTVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsXCI+e3tzZWxlY3RlZERhdGE/Lm5hbWUgfHwgJ0N1c3RvbSBUZW1wbGF0ZSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSBtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IG9wYWNpdHk9XCIwLjVcIiB4PVwiMTcuMDM2NVwiIHk9XCIxNS4xMjIzXCIgd2lkdGg9XCI4LjE1NTQ2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyXCIgcng9XCIxXCIgdHJhbnNmb3JtPVwicm90YXRlKDQ1IDE3LjAzNjUgMTUuMTIyMylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3JlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTEgMTlDNi41NTU1NiAxOSAzIDE1LjQ0NDQgMyAxMUMzIDYuNTU1NTYgNi41NTU1NiAzIDExIDNDMTUuNDQ0NCAzIDE5IDYuNTU1NTYgMTkgMTFDMTkgMTUuNDQ0NCAxNS40NDQ0IDE5IDExIDE5Wk0xMSA1QzcuNTMzMzMgNSA1IDcuNTMzMzMgNSAxMUM1IDE0LjQ2NjcgNy41MzMzMyAxNyAxMSAxN0MxNC40NjY3IDE3IDE3IDE0LjQ2NjcgMTcgMTFDMTcgNy41MzMzMyAxNC40NjY3IDUgMTEgNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwcy0xNCBtZS0yXCIgKGNoYW5nZSk9XCJzZWFyY2hEYXRhKClcIiBbKG5nTW9kZWwpXT1cInRoaXMuZHluYW1pY0RhdGEuc2VhcmNoXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIi8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj4gXHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIG1lLTNcIiAoY2xpY2spPVwiRXhwb3J0YXNYbHN4KClcIiBbZGlzYWJsZWRdPVwiIWluZnJhVGFibGUubGVuZ3RoXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE3LjUgMTIuNVYxNS44MzMzQzE3LjUgMTYuMjc1NCAxNy4zMjQ0IDE2LjY5OTMgMTcuMDExOCAxNy4wMTE4QzE2LjY5OTMgMTcuMzI0NCAxNi4yNzU0IDE3LjUgMTUuODMzMyAxNy41SDQuMTY2NjdDMy43MjQ2NCAxNy41IDMuMzAwNzIgMTcuMzI0NCAyLjk4ODE2IDE3LjAxMThDMi42NzU1OSAxNi42OTkzIDIuNSAxNi4yNzU0IDIuNSAxNS44MzMzVjEyLjVNMTQuMTY2NyA2LjY2NjY3TDEwIDIuNU0xMCAyLjVMNS44MzMzMyA2LjY2NjY3TTEwIDIuNVYxMi41XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICA8L3N2Zz4gPHNwYW4gIGNsYXNzPVwibXMtM1wiPkV4cG9ydDwvc3Bhbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJzaGFyZURhdGEoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMDE2NF81NTc5KVwiPjxwYXRoIGQ9XCJNMTguMzMzMiAxLjY2Njc1TDkuMTY2NSAxMC44MzM0TTE4LjMzMzIgMS42NjY3NUwxMi40OTk4IDE4LjMzMzRMOS4xNjY1IDEwLjgzMzRNMTguMzMzMiAxLjY2Njc1TDEuNjY2NSA3LjUwMDA4TDkuMTY2NSAxMC44MzM0XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPC9nPjxkZWZzPjxjbGlwUGF0aCBpZD1cImNsaXAwXzEwMTY0XzU1NzlcIj48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIi8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+PHNwYW4gKm5nSWY9XCIhc2hvd3NpZGVuYXZcIiBjbGFzcz1cIm1zLTNcIj5TaGFyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj4gXHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBjYXJkICBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cIiFsb2FkaW5nICYmIG5vRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgbXktOCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmNcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibm9kYXRhbWFpbnRleHQgbXQtM1wiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIFJlcG9ydCBBbmFseXNpczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIW5vRGF0YSAmJiAgaW5mcmFUYWJsZS5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGJvdHRvbS1ib3JkZXIgdGV4dC1ub3dyYXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIGRpc3BsYXllZENvbHVtbnM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic29ydERhdGEoY29sdW1uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBnZXREaXNwbGF5TmFtZShjb2x1bW4sIGluZnJhVGFibGVbMF0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRoaXMuZHluYW1pY0RhdGEuc29ydC50b0xvd2VyQ2FzZSgpID09PSBjb2x1bW4udG9Mb3dlckNhc2UoKSYmIHRoaXMuZHluYW1pY0RhdGEuc29ydEJ5ICE9PSAxIHx8IHRoaXMuZHluYW1pY0RhdGEuc29ydC50b0xvd2VyQ2FzZSgpICE9PSBjb2x1bW4udG9Mb3dlckNhc2UoKVwiIGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEuMzMzMzdWMTAuNjY2N002LjAwMDE2IDEwLjY2NjdMMTAuNjY2OCA2LjAwMDA0TTYuMDAwMTYgMTAuNjY2N0wxLjMzMzUgNi4wMDAwNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLnN0cm9rZV09XCJ0aGlzLmR5bmFtaWNEYXRhLnNvcnQudG9Mb3dlckNhc2UoKSA9PT0gY29sdW1uLnRvTG93ZXJDYXNlKCkgPyAnIzAwQTNGRicgOicjNjY3MDg1J1wiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aGlzLmR5bmFtaWNEYXRhLnNvcnQudG9Mb3dlckNhc2UoKSA9PT0gY29sdW1uLnRvTG93ZXJDYXNlKCkgJiYgdGhpcy5keW5hbWljRGF0YS5zb3J0QnkgIT09IC0xXCIgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTYuMDAwMTYgMTAuNjY2N0w2LjAwMDE2IDEuMzMzMzdNNi4wMDAxNiAxLjMzMzM3TDEuMzMzNSA2LjAwMDA0TTYuMDAwMTYgMS4zMzMzN0wxMC42NjY4IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidGhpcy5keW5hbWljRGF0YS5zb3J0LnRvTG93ZXJDYXNlKCkgPT09IGNvbHVtbi50b0xvd2VyQ2FzZSgpID8gJyMwMEEzRkYnIDonIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2YgaW5mcmFUYWJsZTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBrZXkgb2YgZGlzcGxheWVkQ29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBrZXkgPT09ICdkYXRlJyA/IChkYXRhW2tleV0gfCBkYXRlOiAnZGQgTU1NLCBZWVlZJykgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmluY2x1ZGVzKCdBdmcgdGltZSB0byBJbnRlcmFjdCcpICYmIGRhdGFba2V5XSA9PT0gJy0xJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnMCcgOiAoZGF0YVtrZXldICE9PSAnJyAmJiBkYXRhW2tleV0gIT09IG51bGwgJiYgZGF0YVtrZXldICE9PSB1bmRlZmluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGRhdGFba2V5XSA6ICctLScpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiKGR5bmFtaWNEYXRhLm9mZnNldCArIDEpXCIgW3RvdGFsSXRlbXNdPVwidG90YWxDb3VudFwiXHJcbiAgICAgICAgICAgIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCIgKm5nSWY9XCIhbG9hZGluZyAmJiAhbm9EYXRhICYmIGluZnJhVGFibGUubGVuZ3RoXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICA8L2Rpdj5cclxuICBcclxuICAgIDxkaXYgKm5nSWY9XCJzaG93UmVwb3J0UHJvY2Vzc2luZ0NhcmQgJiYgIWRhdGFQcm9jZXNzZWRMb2FkaW5nXCIgY2xhc3M9XCJyb3cgcHgtM1wiPiAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBkYXRhcHJvY2Vzc2VkIHBiLTAgcHgtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImRhdGFwcm9jZXNzZWRnaWZcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9kYXRhX2FuYWx5c2VfZ2lmLmdpZlwiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YXByb2Nlc3NlZC10aXRsZVwiPkRhdGEgYmVpbmcgUHJvY2Vzc2VkPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhcHJvY2Vzc2VkLXN1YlwiPkRhdGEgZm9yIHRoZSBzZWxlY3RlZCBkYXRlIHt7IHllc3RlcmRheURhdGUgfX0sIGlzIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQgYW5kIHdpbGwgYmUgYXZhaWxhYmxlIHNob3J0bHkuPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhcHJvY2Vzc2VkLXN1YlwiPiBJZiB5b3Ugd2lzaCB0byB2aWV3IGRhdGEgZm9yIG90aGVyIGRhdGVzLCBSZW1vdmUge3sgeWVzdGVyZGF5RGF0ZSB9fSBmcm9tIHlvdXIgc2VsZWN0aW9uIG9yIGNob29zZSBhIGRpZmZlcmVudCBkYXRlIHJhbmdlLjwvZGl2PiAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZGF0YVByb2Nlc3NlZExvYWRpbmdcIiBjbGFzcz1cImNhcmQgcm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+ICBcclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29uZmlybWF0aW9uTW9kYWwgbGV0LW1vZGFsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTBcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XHJcbiAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ltYWdlcy9jdXN0b21wb3B1cC1pY29uLnBuZ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXIgZnctYm9sZFwiPkN1c3RvbSBUZW1wbGF0ZSBOYW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTMgc3ViLWhlYWRlciBmdy1zZW1pYm9sZFwiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhlIHVzZXIgZ2xvYmFsbHk/PC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMFwiPlxyXG4gICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzdWItaGVhZGVyXCIgc3R5bGU9XCJjb2xvcjogIzM0NDA1NDsgZm9udC13ZWlnaHQ6IDQwMDtcIiBmb3I9XCJjdXN0b20tbmFtZVwiPlRlbXBsYXRlIE5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImN1c3RvbU5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbCBtdC0yXCIgaWQ9XCJjdXN0b20tTmFtZVwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTEwXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMlwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy01MCBtcy0yXCIgW2Rpc2FibGVkXT1cImN1c3RvbU5hbWUgPT09ICcnXCIgKGNsaWNrKT1cIm1vZGFsLmNsb3NlKClcIj5BcHBseTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tYW5hbHlzZS1yZXBvcnQvc3JjL2xpYi9jb21wb25lbnRzL3VzZXItcmVwb3J0L3VzZXItcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtcmVwb3J0L3NyYy9saWIvY29tcG9uZW50cy91c2VyLXJlcG9ydC91c2VyLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBa0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7QUFTeEQsTUFBTSxPQUFPLG1CQUFtQjtJQWlDVjtJQUE4QjtJQUE4QjtJQUFxQztJQUE0QjtJQS9CakgsaUJBQWlCLENBQU07SUFDdkQsUUFBUSxDQUEwQjtJQUNsQyxPQUFPLEdBQVcsSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sR0FBVyxLQUFLLENBQUM7SUFDdkIsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixVQUFVLEdBQVcsS0FBSyxDQUFDO0lBQzNCLGFBQWEsR0FBVyxLQUFLLENBQUM7SUFDOUIsVUFBVSxHQUFNLEVBQUUsQ0FBQztJQUNuQixZQUFZLEdBQU8sQ0FBQyxFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxDQUFDLENB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QUssRUFBRSxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFBO2dCQUNqQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDSCxDQUFDO3dHQXRiUSxtQkFBbUI7NEZBQW5CLG1CQUFtQiwrS0NaaEMsNnZuQkF1UmdCOzs0RkQzUUgsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs0TUFNSyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCxPbkRlc3Ryb3ksT25Jbml0LFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCwgTmdiTW9kYWwsTmdiTW9kYWxNb2R1bGUsTmdiTW9kYWxSZWYgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1nbG9iYWwnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEFuYWx5c2VyZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9hbmFseXNlcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXVzZXItcmVwb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1yZXBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi91c2VyLXJlcG9ydC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFVzZXJSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29uZmlybWF0aW9uTW9kYWwnKSBjb25maXJtYXRpb25Nb2RhbDogYW55O1xyXG4gIG1vZGFsUmVmOiBOZ2JNb2RhbFJlZiB8IHVuZGVmaW5lZDtcclxuICBsb2FkaW5nOmJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vRGF0YTpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3NpZGVuYXY6Ym9vbGVhbiA9IHRydWU7XHJcbiAgb3BlbkN1c3RvbTpib29sZWFuID0gZmFsc2U7XHJcbiAgb3BlbkFjY29yZGlhbjpib29sZWFuID0gZmFsc2U7XHJcbiAgY3VzdG9tTmFtZTphbnkgPScnO1xyXG4gIHN0YW5kYXJkRGF0YTphbnkgPSBbe25hbWU6J1RlbXBsYXRlIEEnLHZhbHVlOidBJ30se25hbWU6J1RlbXBsYXRlIEInLHZhbHVlOidCJ30se25hbWU6J1RlbXBsYXRlIEMnLHZhbHVlOidDJ30se25hbWU6J1RlbXBsYXRlIEQnLHZhbHVlOidEJ31dXHJcbiAgY29zdG9tQnV0dG9uczphbnkgPSBbJ01ldHJpY3MnLCdDb21wYXJpc2lvbicsJ1RpbWUgRmlsdGVyJ11cclxuICBtZXRyaWNzRGF0YTphbnkgPSBbXVxyXG4gIGNvbXBhcmlzaW9uRGF0YTphbnkgPSBbJ1dURCcsJ01URCcsJ05vbmUnXVxyXG4gIGZpbHRlckRhdGE6YW55ID0gWydob3VyJywnZGF5J11cclxuICBpbmZyYVRhYmxlOmFueSA9IFtdXHJcbiAgc2VsZWN0ZWREYXRhOiBhbnk7XHJcbiAgY3VzdG9tYnRuOiBhbnkgPSAnTWV0cmljcyc7XHJcbiAgbWV0cmljc0FycmF5OiBhbnlbXSA9IFtdO1xyXG4gIGNvbXBhcmlzaW9uRmlsdGVyOiBzdHJpbmcgPSAnV1REJztcclxuICBmaWx0ZXJEYXRhTGlzdDogc3RyaW5nID0gJ2hvdXInO1xyXG4gIC8vIHNvcnRCeTphbnkgPSAnJztcclxuICAvLyBzb3J0Q29sdW1OYW1lOmFueSA9ICcnO1xyXG4gIHRvdGFsQ291bnQ6YW55O1xyXG4gIC8vIHNlYXJjaFZhbHVlOiBhbnkgPSAnJztcclxuICBkeW5hbWljRGF0YTphbnkgPSB7fTtcclxuICBkaXNwbGF5ZWRDb2x1bW5zOmFueSA9IFtdO1xyXG4gIHBhZ2VTaXplOmFueT1bMTAsMjAsMzBdO1xyXG4gIGNsaWVudERhdGE6YW55ID1bXTtcclxuICBzaG93UmVwb3J0UHJvY2Vzc2luZ0NhcmQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHllc3RlcmRheURhdGU6IHN0cmluZyA9ICcnO1xyXG4gIGRhdGFQcm9jZXNzZWRMb2FkaW5nID0gdHJ1ZTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsc2VydmljZTpOZ2JNb2RhbCxwcml2YXRlIGdzOkdsb2JhbFN0YXRlU2VydmljZSxwcml2YXRlIHNlcnZpY2U6QW5hbHlzZXJlcG9ydFNlcnZpY2UscHJpdmF0ZSB0b2FzdDpUb2FzdFNlcnZpY2UsIHByaXZhdGUgY2Q6Q2hhbmdlRGV0ZWN0b3JSZWYpe1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuICBoZWFkZXJEYXRhOmFueTtcclxuICBzdG9yZUFycmF5OmFueSA9IFtdO1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSB0aGlzLnN0YW5kYXJkRGF0YVswXTtcclxuXHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLGRlYm91bmNlVGltZSg2MDApKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5zdG9yZUFycmF5ID0gZGF0YT8uc3RvcmVzPy5maWx0ZXIoKGl0ZW06IGFueSkgPT4gaXRlbS5jaGVja2VkKS5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5zdG9yZUlkKTtcclxuICAgICAgICB0aGlzLmNoZWNrVG9kYXlSZXBvcnRTdGF0dXMoKSAgXHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCA9PT0gJzQzMCcpIHtcclxuICAgICAgICAgIGNvbnN0IGlzVGVtcGxhdGVFRXhpc3RzID0gdGhpcy5zdGFuZGFyZERhdGEuc29tZSgoaXRlbTphbnkpID0+IGl0ZW0udmFsdWUgPT09ICdFJyk7XHJcbiAgICAgICAgICBpZiAoIWlzVGVtcGxhdGVFRXhpc3RzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhbmRhcmREYXRhLnB1c2goeyBuYW1lOiAnVGVtcGxhdGUgRScsIHZhbHVlOiAnRScgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZHluYW1pY0RhdGEgPSB7XHJcbiAgICAgICAgICBjbGllbnRJZDogZGF0YS5jbGllbnQsXHJcbiAgICAgICAgICBzdG9yZUlkOiB0aGlzLnN0b3JlQXJyYXkubGVuZ3RoID8gdGhpcy5zdG9yZUFycmF5IDogZGF0YS5zdG9yZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uc3RvcmVJZCksXHJcbiAgICAgICAgICBmcm9tRGF0ZTogZGF0YS5kYXRlLnN0YXJ0RGF0ZSxcclxuICAgICAgICAgIHRvRGF0ZTogZGF0YS5kYXRlLmVuZERhdGUsXHJcbiAgICAgICAgICBsaW1pdDogMTAsXHJcbiAgICAgICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgICAgICB0ZW1wbGF0ZVR5cGU6IHRoaXMuc2VsZWN0ZWREYXRhLnZhbHVlLFxyXG4gICAgICAgICAgZXhwb3J0OiBmYWxzZSxcclxuICAgICAgICAgIHNlYXJjaDogJycsXHJcbiAgICAgICAgICBzb3J0OiAnJyxcclxuICAgICAgICAgIHNvcnRCeTogJydcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghdGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmN1c3RvbUNyZWF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNsaWVudERhdGE6IGFueSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjbGllbnQtZGV0YWlsc1wiKSB8fCBcInt9XCIpO1xyXG4gICAgICAgICAgdGhpcy5jbGllbnREYXRhID0gY2xpZW50RGF0YTtcclxuICAgICAgICBcclxuICAgICAgICAgIGNvbnN0IGxpbWl0ID0gY2xpZW50RGF0YT8uYm91bmNlZExpbWl0Py52YWx1ZSA/PyBjbGllbnREYXRhPy5ib3VuY2VkTGltaXRWYWx1ZSA/PyAnJztcclxuICAgICAgICAgIGNvbnN0IGNvbnYgPSBjbGllbnREYXRhPy5jb252ZXJzaW9uPy52YWx1ZSA/PyBjbGllbnREYXRhPy5jb252ZXJzaW9uVmFsdWUgPz8gJyc7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICBpZiAodGhpcy5oZWFkZXJEYXRhLmNsaWVudCA9PT0gJzQ1MicpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubWV0cmljc0RhdGE9W3tuYW1lOmBMZXNzIHRoYW4gJHtsaW1pdH0gbWluc2AsY2hlY2tlZDpmYWxzZSx2YWx1ZTpcIkJvdW5jZWQgQ291bnRcIn0se25hbWU6YCR7bGltaXR9IC0gJHtjb252fSBtaW5zYCxjaGVja2VkOmZhbHNlLHZhbHVlOidNaXNzZWQgT3Bwb3J0dW5pdHkgQ291bnQnfSx7bmFtZTpgTW9yZSB0aGFuICR7bGltaXR9IG1pbnNgLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0VuZ2FnZXJzIENvdW50J30se25hbWU6YE1vcmUgdGhhbiAke2NvbnZ9IG1pbnMgUmF0ZWAsY2hlY2tlZDpmYWxzZSx2YWx1ZTonQ29udmVyc2lvbiBSYXRlJ30se25hbWU6J0FnZScsY2hlY2tlZDpmYWxzZSx2YWx1ZTonYWdlJ30se25hbWU6J0dlbmRlcicsY2hlY2tlZDpmYWxzZSx2YWx1ZTonZ2VuZGVyJ30se25hbWU6J05PQicsY2hlY2tlZDpmYWxzZSx2YWx1ZTonbm9iJ30se25hbWU6J0F2ZyBJbmZyYSBEb3dudGltZSAobWlucyknLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0F2ZyBJbmZyYSBEb3dudGltZSAobWlucyknfV1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1ldHJpY3NEYXRhPVt7bmFtZTonUG90ZW50aWFsIEJ1eWVycycsY2hlY2tlZDpmYWxzZSx2YWx1ZTonUG90ZW50aWFsIEJ1eWVycyd9LHtuYW1lOidCb3VuY2VkIEZvb3RmYWxsJyxjaGVja2VkOmZhbHNlLHZhbHVlOlwiQm91bmNlZCBDb3VudFwifSx7bmFtZTonTWlzc2VkIE9wcG9ydHVuaXR5JyxjaGVja2VkOmZhbHNlLHZhbHVlOidNaXNzZWQgT3Bwb3J0dW5pdHkgQ291bnQnfSx7bmFtZTonRW5nYWdlcnMgQ291bnQnLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0VuZ2FnZXJzIENvdW50J30se25hbWU6J0NvbnZlcnNpb24nLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J0NvbnZlcnNpb24gUmF0ZSd9LHtuYW1lOidBZ2UnLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J2FnZSd9LHtuYW1lOidHZW5kZXInLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J2dlbmRlcid9LHtuYW1lOidOT0InLGNoZWNrZWQ6ZmFsc2UsdmFsdWU6J25vYid9LHtuYW1lOidBdmcgSW5mcmEgRG93bnRpbWUgKG1pbnMpJyxjaGVja2VkOmZhbHNlLHZhbHVlOidBdmcgSW5mcmEgRG93bnRpbWUgKG1pbnMpJ31dXHJcblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgXHJcbiAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gICAgZ2V0RGlzcGxheU5hbWUoY29sdW1uOiBhbnksIHJvdzogYW55KTogYW55IHtcclxuICAgICAgY29uc3QgY2xpZW50ID0gdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQ7XHJcbiAgICAgIGNvbnN0IGxpbWl0ID0gdGhpcy5jbGllbnREYXRhPy5ib3VuY2VkTGltaXQ/LnZhbHVlID8/IHRoaXMuY2xpZW50RGF0YT8uYm91bmNlZExpbWl0VmFsdWUgPz8gJyc7XHJcbiAgICAgIGNvbnN0IGNvbnYgPSB0aGlzLmNsaWVudERhdGE/LmNvbnZlcnNpb24/LnZhbHVlID8/IHRoaXMuY2xpZW50RGF0YT8uY29udmVyc2lvblZhbHVlID8/ICcnO1xyXG4gICAgICBpZiAoY2xpZW50ID09PSAnNDUyJykge1xyXG4gICAgICAgIGNvbnN0IGN1c3RvbUxhYmVsczphbnkgPSB7XHJcbiAgICAgICAgICAnQm91bmNlZCBDb3VudCc6IGBMZXNzIHRoYW4gJHtsaW1pdH0gbWluc2AsXHJcbiAgICAgICAgICAnRW5nYWdlcnMgQ291bnQnOiBgTW9yZSB0aGFuICR7bGltaXR9IG1pbnNgLFxyXG4gICAgICAgICAgJ0NvbnZlcnNpb24gUmF0ZSc6IGBNb3JlIHRoYW4gJHtjb252fSBtaW5zIFJhdGVgLFxyXG4gICAgICAgICAgJ01pc3NlZCBPcHBvcnR1bml0eSBDb3VudCc6IGAke2xpbWl0fSAtICR7Y29udn0gbWluc2AsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGN1c3RvbUxhYmVsc1tjb2x1bW5dID8/IGNvbHVtbjtcclxuICAgICAgfVxyXG4gICAgXHJcbiAgICAgIHJldHVybiBjb2x1bW47IFxyXG4gICAgfVxyXG4gICAgXHJcbiAgZ2V0VGVtcGxhdGVzKCkge1xyXG4gICAgdGhpcy5pbmZyYVRhYmxlID0gW107XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnJlcG9ydExpc3QodGhpcy5keW5hbWljRGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzICYmIHJlcy5kYXRhLnRlbXBsYXRlRGF0YT8ubGVuZ3RoKSB7XHJcbiAgICAgICAgdGhpcy5pbmZyYVRhYmxlID0gcmVzLmRhdGE/LnRlbXBsYXRlRGF0YTtcclxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbENvdW50O1xyXG4gICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAvLyB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gdGhpcy50b3RhbENvdW50IDwgMTAgPyB0aGlzLnRvdGFsQ291bnQgOiB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0O1xyXG4gICAgICAgIGlmKHRoaXMuaGVhZGVyRGF0YS5jbGllbnQgPT09JzQ1Micpe1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5rZXlzKHRoaXMuaW5mcmFUYWJsZVswXSkuZmlsdGVyKFxyXG4gICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzaWRlbmF2KCl7XHJcbiAgICB0aGlzLnNob3dzaWRlbmF2ID0gIXRoaXMuc2hvd3NpZGVuYXY7XHJcbiAgfVxyXG4gIHNlbGVjdFJhZGlvKGRhdGE6YW55KXtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gMDsgXHJcbiAgICB0aGlzLmluZnJhVGFibGUgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0gZGF0YTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSAxMDtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEudGVtcGxhdGVUeXBlID0gZGF0YS52YWx1ZTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnQgPSAnJztcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydEJ5PScnO1xyXG4gICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICB9XHJcbiAgY3JlYXRlQ3VzdG9tKCl7XHJcbiAgICB0aGlzLmN1c3RvbU5hbWUgPSAnJztcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbHNlcnZpY2Uub3Blbih0aGlzLmNvbmZpcm1hdGlvbk1vZGFsLCB7IGNlbnRlcmVkOiB0cnVlIH0pO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4geyBcclxuICAgICAgdGhpcy5vcGVuQWNjb3JkaWFuID0gIXRoaXMub3BlbkFjY29yZGlhbjtcclxuICAgICAgdGhpcy5vcGVuQ3VzdG9tID0gIXRoaXMub3BlbkN1c3RvbTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjdXN0b21PcHRpb24oZGF0YTphbnkpe1xyXG4gICAgdGhpcy5jdXN0b21idG4gPSBkYXRhO1xyXG4gIH1cclxuICBtb3ZldG9OZXh0KCl7XHJcbiAgICBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ01ldHJpY3MnKXtcclxuICAgICAgdGhpcy5jdXN0b21idG4gPSAnQ29tcGFyaXNpb24nXHJcbiAgICB9ZWxzZSBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ0NvbXBhcmlzaW9uJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ1RpbWUgRmlsdGVyJ1xyXG4gICAgfVxyXG4gIH1cclxuICBtb3ZldG9CYWNrKCl7XHJcbiAgICBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ0NvbXBhcmlzaW9uJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ01ldHJpY3MnXHJcbiAgICB9ZWxzZSBpZih0aGlzLmN1c3RvbWJ0biA9PT0gJ1RpbWUgRmlsdGVyJyl7XHJcbiAgICAgIHRoaXMuY3VzdG9tYnRuID0gJ0NvbXBhcmlzaW9uJ1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRDb21wYXJpc2lvbihkYXRhOmFueSl7XHJcbiAgICB0aGlzLmNvbXBhcmlzaW9uRmlsdGVyID0gZGF0YTtcclxuICB9XHJcbiAgZ2V0RmlsdGVyKGRhdGE6YW55KXtcclxuICAgIHRoaXMuZmlsdGVyRGF0YUxpc3QgPSBkYXRhO1xyXG4gIH1cclxuICBjdXN0b21DcmVhdGUoKXtcclxuICAgIHRoaXMuaW5mcmFUYWJsZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRhID0ge307XHJcblxyXG4gICAgbGV0IHNlbGVjdEZpZWxkID0gIHRoaXMubWV0cmljc0RhdGEuZmlsdGVyKChpdGVtOmFueSkgPT4gaXRlbS5jaGVja2VkKS5tYXAoKGl0ZW06YW55KSA9PiBpdGVtLnZhbHVlKTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBjbGllbnRJZDp0aGlzLmR5bmFtaWNEYXRhLmNsaWVudElkLFxyXG4gICAgICBzdG9yZUlkOiB0aGlzLmR5bmFtaWNEYXRhLnN0b3JlSWQsXHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLmZyb21EYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuZHluYW1pY0RhdGEudG9EYXRlLFxyXG4gICAgICBsaW1pdDogdGhpcy5keW5hbWljRGF0YS5saW1pdCxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmR5bmFtaWNEYXRhLm9mZnNldCxcclxuICAgICAgZXhwb3J0OmZhbHNlLCAgICBcclxuICAgICAgY29tcGFyaXNvbkZpbHRlcjogdGhpcy5jb21wYXJpc2lvbkZpbHRlciAhPSAnTm9uZScgPyB0aGlzLmNvbXBhcmlzaW9uRmlsdGVyIDogJycsXHJcbiAgICAgIHRpbWVGaWx0ZXI6IHRoaXMuZmlsdGVyRGF0YUxpc3QsIFxyXG4gICAgICBzZWxldGVkRmllbGRzOnNlbGVjdEZpZWxkLFxyXG4gICAgICBzZWFyY2g6dGhpcy5keW5hbWljRGF0YS5zZWFyY2gsXHJcbiAgICAgIHNvcnQ6dGhpcy5keW5hbWljRGF0YS5zb3J0LFxyXG4gICAgICBzb3J0Qnk6dGhpcy5keW5hbWljRGF0YS5zb3J0QnlcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5jdXN0b21UZW1wbGF0ZShkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmKHJlcyAmJiByZXMuZGF0YT8uY3VzdG9tVGVtcGxhdGU/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5pbmZyYVRhYmxlID0gcmVzLmRhdGEuY3VzdG9tVGVtcGxhdGU7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSByZXMuZGF0YS50b3RhbENvdW50O1xyXG4gICAgICAgICAgdGhpcy5zZXRQYWdpbmF0aW9uU2l6ZXMoKTtcclxuICAgICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAgIC8vIHRoaXMuZHluYW1pY0RhdGEubGltaXQgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IHRoaXMudG90YWxDb3VudCA6IHRoaXMuZHluYW1pY0RhdGEubGltaXQ7XHJcbiAgICAgICAgICBpZih0aGlzLmhlYWRlckRhdGEuY2xpZW50ID09PSc0NTInKXtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gT2JqZWN0LmtleXModGhpcy5pbmZyYVRhYmxlWzBdKS5maWx0ZXIoXHJcbiAgICAgICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm5vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzb3J0RGF0YSh2YWx1ZTphbnkpe1xyXG4gICAgaWYodGhpcy5keW5hbWljRGF0YS5zb3J0LnRvTG93ZXJDYXNlKCkgPT0gdmFsdWUudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeSAqPSAtMTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeSA9IDE7XHJcbiAgICB9XHJcbiAgICBpZih2YWx1ZSA9PSAnRm9vdEZhbGwgQ291bnQnICYmIHRoaXMub3BlbkN1c3RvbSkge1xyXG4gICAgICB2YWx1ZSA9ICdGb290ZmFsbCBDb3VudCdcclxuICAgIH1cclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydCA9IHZhbHVlO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0ID0gcGFnZU9mZnNldCAtIDE7XHJcbiAgICBpZih0aGlzLm9wZW5DdXN0b20pIHtcclxuICAgICAgdGhpcy5jdXN0b21DcmVhdGUoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFRlbXBsYXRlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZTogYW55KSB7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAwO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2VhcmNoRGF0YSgpe1xyXG4gICAgdGhpcy5keW5hbWljRGF0YS5vZmZzZXQgPSAwO1xyXG4gICAgaWYodGhpcy5vcGVuQ3VzdG9tKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tQ3JlYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgIHRoaXMuaW5mcmFUYWJsZSA9IFtdO1xyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6dGhpcy5keW5hbWljRGF0YS5jbGllbnRJZCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5keW5hbWljRGF0YS5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5keW5hbWljRGF0YS5mcm9tRGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLnRvRGF0ZSxcclxuICAgICAgbGltaXQ6IHRoaXMuZHluYW1pY0RhdGEubGltaXQsXHJcbiAgICAgIG9mZnNldDogdGhpcy5keW5hbWljRGF0YS5vZmZzZXQsXHJcbiAgICAgIHRlbXBsYXRlVHlwZTogdGhpcy5zZWxlY3RlZERhdGEudmFsdWUsXHJcbiAgICAgIGV4cG9ydDpmYWxzZSwgICAgXHJcbiAgICAgIHNlYXJjaDp0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaCxcclxuICAgICAgc29ydDp0aGlzLmR5bmFtaWNEYXRhLnNvcnQsXHJcbiAgICAgIHNvcnRCeTp0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeVxyXG4gICAgfVxyXG4gICAgIHRoaXMuc2VydmljZS5yZXBvcnRMaXN0KGRhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcyAmJiByZXMuZGF0YS50ZW1wbGF0ZURhdGE/Lmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuaW5mcmFUYWJsZSA9IHJlcy5kYXRhPy50ZW1wbGF0ZURhdGE7XHJcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gcmVzLmRhdGEudG90YWxDb3VudDtcclxuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgIC8vIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsQ291bnQgPCAxMCA/IFt0aGlzLnRvdGFsQ291bnRdIDogWzEwLDIwLDMwXTtcclxuICAgICAgICAvLyB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID0gdGhpcy50b3RhbENvdW50IDwgMTAgPyB0aGlzLnRvdGFsQ291bnQgOiB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0O1xyXG4gICAgICAgIGlmKHRoaXMuaGVhZGVyRGF0YS5jbGllbnQgPT09JzQ1Micpe1xyXG4gICAgICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IE9iamVjdC5rZXlzKHRoaXMuaW5mcmFUYWJsZVswXSkuZmlsdGVyKFxyXG4gICAgICAgICAgY29sID0+IGNvbCAhPT0gJ1BvdGVudGlhbCBCdXllcnMnXHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBPYmplY3Qua2V5cyh0aGlzLmluZnJhVGFibGVbMF0pO1xyXG4gICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub0RhdGEgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vRGF0YSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0sKCkgPT4ge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5ub0RhdGEgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhZ2luYXRpb25TaXplczphbnkgPSBbMTAsMjAsMzBdO1xyXG4gICAgc2V0UGFnaW5hdGlvblNpemVzKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxDb3VudCA+IDEwKSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uU2l6ZXMgPSBbdGhpcy50b3RhbENvdW50XTsgLy8gSnVzdCBvbmUgb3B0aW9uIGlmIGxlc3MgdGhhbiAxMFxyXG4gICAgfVxyXG4gICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblNpemVzWzBdO1xyXG4gIH1cclxuICBFeHBvcnRhc1hsc3goKXtcclxuICAgIGlmKHRoaXMub3BlbkN1c3RvbSkge1xyXG4gICAgICB0aGlzLmV4cG9ydEN1c3RvbVRlbXBsYXRlKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5leHBvcnRUZW1wbGF0ZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgZXhwb3J0VGVtcGxhdGVzKCkge1xyXG4gICAgaWYodGhpcy5keW5hbWljRGF0YS5saW1pdCA+IDI1MDAwKXtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdUaGUgZXhwb3J0IGxpbWl0IGNhbm5vdCBleGNlZWQgMjUsMDAwLicpXHJcbiAgICB9IGVsc2V7XHJcbiAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgY2xpZW50SWQ6dGhpcy5keW5hbWljRGF0YS5jbGllbnRJZCxcclxuICAgICAgc3RvcmVJZDogdGhpcy5keW5hbWljRGF0YS5zdG9yZUlkLFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5keW5hbWljRGF0YS5mcm9tRGF0ZSxcclxuICAgICAgdG9EYXRlOiB0aGlzLmR5bmFtaWNEYXRhLnRvRGF0ZSxcclxuICAgICAgbGltaXQ6IHRoaXMuZHluYW1pY0RhdGEubGltaXQsXHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgdGVtcGxhdGVUeXBlOiB0aGlzLnNlbGVjdGVkRGF0YS52YWx1ZSxcclxuICAgICAgZXhwb3J0OnRydWUsXHJcbiAgICAgIHNlYXJjaDp0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaCxcclxuICAgICAgc29ydDp0aGlzLmR5bmFtaWNEYXRhLnNvcnQsXHJcbiAgICAgIHNvcnRCeTp0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZXJ2aWNlLmRvd25sb2FkUmVwb3J0TGlzdChkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMgKSB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsdGhpcy5zZWxlY3RlZERhdGEubmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH0sKGVycm9yOmFueSkgPT4ge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1RoZSBleHBvcnQgbGltaXQgY2Fubm90IGV4Y2VlZCA4LDAwMC4nKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICB9XHJcbiAgZXhwb3J0Q3VzdG9tVGVtcGxhdGUoKSB7XHJcbiAgICBpZih0aGlzLmR5bmFtaWNEYXRhLmxpbWl0ID4gMjUwMDApe1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoJ1RoZSBleHBvcnQgbGltaXQgY2Fubm90IGV4Y2VlZCAyNSwwMDAuJylcclxuICAgIH0gZWxzZSB7XHJcbiAgICBsZXQgc2VsZWN0RmllbGQgPSAgdGhpcy5tZXRyaWNzRGF0YS5maWx0ZXIoKGl0ZW06YW55KSA9PiBpdGVtLmNoZWNrZWQpLm1hcCgoaXRlbTphbnkpID0+IGl0ZW0udmFsdWUpO1xyXG4gICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgIGNsaWVudElkOnRoaXMuZHluYW1pY0RhdGEuY2xpZW50SWQsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuZHluYW1pY0RhdGEuc3RvcmVJZCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuZHluYW1pY0RhdGEuZnJvbURhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5keW5hbWljRGF0YS50b0RhdGUsXHJcbiAgICAgIGxpbWl0OiB0aGlzLmR5bmFtaWNEYXRhLmxpbWl0LFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIGV4cG9ydDp0cnVlLCAgICBcclxuICAgICAgY29tcGFyaXNvbkZpbHRlcjogdGhpcy5jb21wYXJpc2lvbkZpbHRlciAhPSAnTm9uZScgPyB0aGlzLmNvbXBhcmlzaW9uRmlsdGVyIDogJycsXHJcbiAgICAgIHRpbWVGaWx0ZXI6IHRoaXMuZmlsdGVyRGF0YUxpc3QsIFxyXG4gICAgICBzZWxldGVkRmllbGRzOnNlbGVjdEZpZWxkLFxyXG4gICAgICBzZWFyY2g6dGhpcy5keW5hbWljRGF0YS5zZWFyY2gsXHJcbiAgICAgIHNvcnQ6dGhpcy5keW5hbWljRGF0YS5zb3J0LFxyXG4gICAgICBzb3J0Qnk6dGhpcy5keW5hbWljRGF0YS5zb3J0QnlcclxuICAgIH1cclxuICAgIHRoaXMuc2VydmljZS5kb3dubG9hZEN1c3RvbVJlcG9ydExpc3QoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYocmVzICkge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS5zYXZlQXNFeGNlbEZpbGUocmVzLCdjdXN0b21UZW1wbGF0ZScpO1xyXG4gICAgICB9XHJcbiAgICB9LChlcnJvcjphbnkpID0+IHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KCdUaGUgZXhwb3J0IGxpbWl0IGNhbm5vdCBleGNlZWQgOCwwMDAuJyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgfVxyXG4gIHJlc2V0KCkge1xyXG4gICAgdGhpcy5vcGVuQ3VzdG9tID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1c3RvbWJ0biA9ICdNZXRyaWNzJztcclxuICAgIHRoaXMubWV0cmljc0RhdGEuZm9yRWFjaCgoaXRlbTphbnkpID0+IGl0ZW0uY2hlY2tlZCA9IGZhbHNlKTtcclxuICAgIHRoaXMuY29tcGFyaXNpb25GaWx0ZXIgPSAgJ1dURCc7XHJcbiAgICB0aGlzLmZpbHRlckRhdGFMaXN0ID0gJ2hvdXInO1xyXG4gIH1cclxuICByZXNldFZhbHVlcygpIHtcclxuICAgIFxyXG4gICAgdGhpcy5vcGVuQ3VzdG9tID0gIXRoaXMub3BlbkN1c3RvbTtcclxuICAgIHRoaXMuZHluYW1pY0RhdGEub2Zmc2V0PTA7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLnNvcnQgPSAnJztcclxuICAgIHRoaXMuZHluYW1pY0RhdGEuc29ydEJ5ID0gJyc7XHJcbiAgICB0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaCA9ICcnO1xyXG4gIH1cclxuICBjaGVja1RvZGF5UmVwb3J0U3RhdHVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUHJvY2Vzc2VkTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCByZXBvcnRQYXJhbXMgPSB7XHJcbiAgICAgIGNsaWVudElkOiB0aGlzLmhlYWRlckRhdGE/LmNsaWVudCxcclxuICAgICAgZnJvbURhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uc3RhcnREYXRlLFxyXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZVxyXG4gICAgfTtcclxuICAgIHRoaXMuc2VydmljZS5nZXRDaGVja1RvZGF5UmVwb3J0U3RhdHVzKHJlcG9ydFBhcmFtcylcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFQcm9jZXNzZWRMb2FkaW5nID0gZmFsc2VcclxuICAgICAgICB0aGlzLnNob3dSZXBvcnRQcm9jZXNzaW5nQ2FyZCA9IHJlcz8uZGF0YT8ucmVwb3J0U2VuZFN0YXR1cyA9PT0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnllc3RlcmRheURhdGUgPSByZXM/LmRhdGE/Lnllc3RlcmRheSB8fCAnJztcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBjaGVja2luZyByZXBvcnQgc3RhdHVzOicsIGVycik7XHJcbiAgICAgICAgdGhpcy5zaG93UmVwb3J0UHJvY2Vzc2luZ0NhcmQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRhdGFQcm9jZXNzZWRMb2FkaW5nID0gZmFsc2VcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInJvdyBtYi01XCI+XHJcbiAgPGRpdiBbbmdDbGFzc109XCJzaG93c2lkZW5hdiA/ICdjb2wtc20tMyc6J2Qtbm9uZSdcIj5cclxuICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBwb3NpdGlvbi1yZWxhdGl2ZSBoLTEwMFwiPlxyXG4gICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtMCBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uIFtjbG9zZU90aGVyc109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIFN0YW5kYXJkIFRlbXBsYXRlIFN0YXJ0ICAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW0gW2NvbGxhcHNlZF09XCJvcGVuQWNjb3JkaWFuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nXCIgbmdiQWNjb3JkaW9uQnV0dG9uIChjbGljayk9XCJyZXNldCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkXCI+U3RhbmRhcmQgVGVtcGxhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInB0LTAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgaC1hdXRvIHAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHNlbGVjdCBhIHJlcG9ydCB0byBwcmV2aWV3IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBzdGFuZGFyZERhdGFcIiBjbGFzcz1cIm10LTUgY3Vyc29yLXBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3RSYWRpbyhkYXRhKVwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJzZWxlY3RlZERhdGEubmFtZSA9PT0gZGF0YS5uYW1lXCIgdHlwZT1cInJhZGlvXCIgY2xhc3M9XCJyYWRpb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSBzdGFuZGFyZFwiPnt7ZGF0YS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gU3RhbmRhcmQgVGVtcGxhdGUgRW5kICAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIFRlbXBsYXRlIFN0YXJ0ICAtLT5cclxuICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCIhb3BlbkN1c3RvbVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAgbmdiQWNjb3JkaW9uSXRlbSBbY29sbGFwc2VkXT1cIiFvcGVuQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHB0LTBcIiBuZ2JBY2NvcmRpb25CdXR0b24gKGNsaWNrKT1cInJlc2V0VmFsdWVzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWRcIj5DdXN0b20gVGVtcGxhdGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGgtMTAwcHggcC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2Ugc2VsZWN0IHlvdXIgZGF0YSBwb2ludHMgdG8gYWRkIGludG8gdGhlIHJlcG9ydHNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG5oZWFkZXIgdy0xMDAgcC0yIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBweC0yXCIgKGNsaWNrKT1cImN1c3RvbU9wdGlvbihidXR0b24pXCIgW25nQ2xhc3NdPVwidGhpcy5jdXN0b21idG4gPT09IGJ1dHRvbiA/ICdidG4gJzonJ1wiICpuZ0Zvcj1cImxldCBidXR0b24gb2YgY29zdG9tQnV0dG9uc1wiPnt7YnV0dG9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ2hlaWdodCc6IGluZnJhVGFibGUubGVuZ3RoID8gJ2F1dG8nIDogJzEwMCUnIH1cIiBjbGFzcz1cIm92ZXJmbG93LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjdXN0b21idG4gPT09ICdNZXRyaWNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgbWV0cmljc0RhdGFcIiBjbGFzcz1cIm10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cIm10LTIgY3Vyc29yLXBvaW50ZXJcIiBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy01IHN0YW5kYXJkIGZzLTRcIj57e2RhdGEubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbWJ0biA9PT0gJ0NvbXBhcmlzaW9uJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgY29tcGFyaXNpb25EYXRhXCIgY2xhc3M9XCJtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCIgKGNsaWNrKT1cImdldENvbXBhcmlzaW9uKGRhdGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NoZWNrZWRdPVwiY29tcGFyaXNpb25GaWx0ZXIgPT09IGRhdGFcIiB0eXBlPVwicmFkaW9cIiBjbGFzcz1cInJhZGlvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1zLTUgc3RhbmRhcmQgZnMtNFwiPnt7ZGF0YX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbWJ0biA9PT0gJ1RpbWUgRmlsdGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGRhdGEgb2YgZmlsdGVyRGF0YVwiIGNsYXNzPVwibXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiIChjbGljayk9XCJnZXRGaWx0ZXIoZGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJmaWx0ZXJEYXRhTGlzdCA9PT0gZGF0YVwiIHR5cGU9XCJyYWRpb1wiIGNsYXNzPVwicmFkaW9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtNSBzdGFuZGFyZCBmcy00XCI+e3tkYXRhID09PSAnaG91cicgPyAnQnkgSG91cicgOiAnQnkgRGF0ZSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm9wZW5DdXN0b21cIiBjbGFzcz1cImQtZmxleCB3LTEwMFwiIFtuZ0NsYXNzXT1cIiFsb2FkaW5nID8gJ210LTUnOicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtMyBtYi0zXCIgW25nQ2xhc3NdPVwiY3VzdG9tYnRuID09PSAnTWV0cmljcycgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibW92ZXRvQmFjaygpXCI+QmFjazwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImN1c3RvbWJ0biAhPT0gJ1RpbWUgRmlsdGVyJ1wiIChjbGljayk9XCJtb3ZldG9OZXh0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1wcmltYXJ5IHctNTAgbXMtMyBtYi0zXCI+TmV4dDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImN1c3RvbWJ0biA9PT0gJ1RpbWUgRmlsdGVyJ1wiIChjbGljayk9XCJkeW5hbWljRGF0YS5saW1pdCA9IDEwO2N1c3RvbUNyZWF0ZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tcHJpbWFyeSB3LTUwIG1zLTMgbWItM1wiPlZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIFRlbXBsYXRlIEVuZCAgLS0+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMCBtdC01XCI+IC0tPlxyXG4gICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiIW9wZW5BY2NvcmRpYW5cIiAoY2xpY2spPVwiY3JlYXRlQ3VzdG9tKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgIENyZWF0ZSBDdXN0b20gVGVtcGxhdGVcclxuICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIm9wZW5DdXN0b21cIiBjbGFzcz1cImQtZmxleCB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lIHctNTAgbWUtM1wiIFtuZ0NsYXNzXT1cImN1c3RvbWJ0biA9PT0gJ01ldHJpY3MnID8gJ2hpZGRlbicgOiAnJ1wiIChjbGljayk9XCJtb3ZldG9CYWNrKClcIj5CYWNrPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY3VzdG9tYnRuICE9PSAnVGltZSBGaWx0ZXInXCIgKGNsaWNrKT1cIm1vdmV0b05leHQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1wcmltYXJ5IHctNTAgbXMtM1wiPk5leHQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjdXN0b21idG4gPT09ICdUaW1lIEZpbHRlcidcIiAoY2xpY2spPVwiY3VzdG9tQ3JlYXRlKClcIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tcHJpbWFyeSB3LTUwIG1zLTNcIj5WaWV3PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93c2lkZW5hdlwiIChjbGljayk9XCJzaWRlbmF2KClcIiBjbGFzcz1cImJhY2tCdXR0b25yaWdodCB0ZXh0LWNlbnRlciBwdC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjI3MjU5IDEyLjYzNjNMNC42MzYyMyA4Ljk5OTg5TDguMjcyNTkgNS4zNjM1M00xMy4zNjM1IDEyLjYzNjNMOS43MjcxNCA4Ljk5OTg5TDEzLjM2MzUgNS4zNjM1M1wiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjQ1NDU1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgW25nQ2xhc3NdPVwic2hvd3NpZGVuYXYgPyAnY29sLXNtLTknOidjb2wtc20tMTInXCI+XHJcbiAgICAgPGRpdiAqbmdJZj1cIiFzaG93UmVwb3J0UHJvY2Vzc2luZ0NhcmQgJiYgIWRhdGFQcm9jZXNzZWRMb2FkaW5nXCIgY2xhc3M9XCJjYXJkIHBvc2l0aW9uLXJlbGF0aXZlICBtaW4taC1zbS0zMDBweCBtaW4taC1tZC00MDBweCAgbWluLWgteGwtNTUwcHggbWluLWgtbGctNTAwcHggbWF4LWgtYXV0b1wiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhc2hvd3NpZGVuYXZcIiAoY2xpY2spPVwic2lkZW5hdigpXCIgY2xhc3M9XCJiYWNrQnV0dG9ubGVmdCB0ZXh0LWNlbnRlciBwdC0xIGN1cnNvci1wb2ludGVyXCI+XHJcbiAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk05LjcyNzE0IDEyLjYzNjVMMTMuMzYzNSA5LjAwMDEzTDkuNzI3MTQgNS4zNjM3N000LjYzNjIzIDEyLjYzNjVMOC4yNzI1OSA5LjAwMDEzTDQuNjM2MjMgNS4zNjM3N1wiIHN0cm9rZT1cIiMxMDE4MjhcIiBzdHJva2Utd2lkdGg9XCIxLjQ1NDU1XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZC1sYWJlbFwiPnt7c2VsZWN0ZWREYXRhPy5uYW1lIHx8ICdDdXN0b20gVGVtcGxhdGUnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHBvc2l0aW9uLXJlbGF0aXZlIG15LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTEgcG9zaXRpb24tYWJzb2x1dGUgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMlwiIHJ4PVwiMVwiIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiIChjaGFuZ2UpPVwic2VhcmNoRGF0YSgpXCIgWyhuZ01vZGVsKV09XCJ0aGlzLmR5bmFtaWNEYXRhLnNlYXJjaFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IFxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSBtZS0zXCIgKGNsaWNrKT1cIkV4cG9ydGFzWGxzeCgpXCIgW2Rpc2FibGVkXT1cIiFpbmZyYVRhYmxlLmxlbmd0aFwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNy41IDEyLjVWMTUuODMzM0MxNy41IDE2LjI3NTQgMTcuMzI0NCAxNi42OTkzIDE3LjAxMTggMTcuMDExOEMxNi42OTkzIDE3LjMyNDQgMTYuMjc1NCAxNy41IDE1LjgzMzMgMTcuNUg0LjE2NjY3QzMuNzI0NjQgMTcuNSAzLjMwMDcyIDE3LjMyNDQgMi45ODgxNiAxNy4wMTE4QzIuNjc1NTkgMTYuNjk5MyAyLjUgMTYuMjc1NCAyLjUgMTUuODMzM1YxMi41TTE0LjE2NjcgNi42NjY2N0wxMCAyLjVNMTAgMi41TDUuODMzMzMgNi42NjY2N00xMCAyLjVWMTIuNVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgPC9zdmc+IDxzcGFuICBjbGFzcz1cIm1zLTNcIj5FeHBvcnQ8L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIiAoY2xpY2spPVwic2hhcmVEYXRhKClcIj5cclxuICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMTAxNjRfNTU3OSlcIj48cGF0aCBkPVwiTTE4LjMzMzIgMS42NjY3NUw5LjE2NjUgMTAuODMzNE0xOC4zMzMyIDEuNjY2NzVMMTIuNDk5OCAxOC4zMzM0TDkuMTY2NSAxMC44MzM0TTE4LjMzMzIgMS42NjY3NUwxLjY2NjUgNy41MDAwOEw5LjE2NjUgMTAuODMzNFwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMDE2NF81NTc5XCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPjxzcGFuICpuZ0lmPVwiIXNob3dzaWRlbmF2XCIgY2xhc3M9XCJtcy0zXCI+U2hhcmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+IFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgY2FyZCAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCIhbG9hZGluZyAmJiBub0RhdGFcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG15LTggZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YW1haW50ZXh0IG10LTNcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFzdWJ0ZXh0XCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciBSZXBvcnQgQW5hbHlzaXM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiAqbmdJZj1cIiFsb2FkaW5nICYmICFub0RhdGEgJiYgIGluZnJhVGFibGUubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyIHRleHQtbm93cmFwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBkaXNwbGF5ZWRDb2x1bW5zO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInNvcnREYXRhKGNvbHVtbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZ2V0RGlzcGxheU5hbWUoY29sdW1uLCBpbmZyYVRhYmxlWzBdKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ0aGlzLmR5bmFtaWNEYXRhLnNvcnQudG9Mb3dlckNhc2UoKSA9PT0gY29sdW1uLnRvTG93ZXJDYXNlKCkmJiB0aGlzLmR5bmFtaWNEYXRhLnNvcnRCeSAhPT0gMSB8fCB0aGlzLmR5bmFtaWNEYXRhLnNvcnQudG9Mb3dlckNhc2UoKSAhPT0gY29sdW1uLnRvTG93ZXJDYXNlKClcIiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNi4wMDAxNiAxLjMzMzM3VjEwLjY2NjdNNi4wMDAxNiAxMC42NjY3TDEwLjY2NjggNi4wMDAwNE02LjAwMDE2IDEwLjY2NjdMMS4zMzM1IDYuMDAwMDRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwidGhpcy5keW5hbWljRGF0YS5zb3J0LnRvTG93ZXJDYXNlKCkgPT09IGNvbHVtbi50b0xvd2VyQ2FzZSgpID8gJyMwMEEzRkYnIDonIzY2NzA4NSdcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidGhpcy5keW5hbWljRGF0YS5zb3J0LnRvTG93ZXJDYXNlKCkgPT09IGNvbHVtbi50b0xvd2VyQ2FzZSgpICYmIHRoaXMuZHluYW1pY0RhdGEuc29ydEJ5ICE9PSAtMVwiIGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk02LjAwMDE2IDEwLjY2NjdMNi4wMDAxNiAxLjMzMzM3TTYuMDAwMTYgMS4zMzMzN0wxLjMzMzUgNi4wMDAwNE02LjAwMDE2IDEuMzMzMzdMMTAuNjY2OCA2LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInRoaXMuZHluYW1pY0RhdGEuc29ydC50b0xvd2VyQ2FzZSgpID09PSBjb2x1bW4udG9Mb3dlckNhc2UoKSA/ICcjMDBBM0ZGJyA6JyM2NjcwODUnXCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIGluZnJhVGFibGU7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQga2V5IG9mIGRpc3BsYXllZENvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sga2V5ID09PSAnZGF0ZScgPyAoZGF0YVtrZXldIHwgZGF0ZTogJ2RkIE1NTSwgWVlZWScpIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5pbmNsdWRlcygnQXZnIHRpbWUgdG8gSW50ZXJhY3QnKSAmJiBkYXRhW2tleV0gPT09ICctMSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzAnIDogKGRhdGFba2V5XSAhPT0gJycgJiYgZGF0YVtrZXldICE9PSBudWxsICYmIGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhW2tleV0gOiAnLS0nKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgIDxsaWItcGFnaW5hdGlvbiBbaXRlbXNQZXJQYWdlXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgW2N1cnJlbnRQYWdlXT1cIihkeW5hbWljRGF0YS5vZmZzZXQgKyAxKVwiIFt0b3RhbEl0ZW1zXT1cInRvdGFsQ291bnRcIlxyXG4gICAgICAgICAgICBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKHBhZ2VTaXplQ2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIW5vRGF0YSAmJiBpbmZyYVRhYmxlLmxlbmd0aFwiPjwvbGliLXBhZ2luYXRpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgPC9kaXY+XHJcbiAgXHJcbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1JlcG9ydFByb2Nlc3NpbmdDYXJkICYmICFkYXRhUHJvY2Vzc2VkTG9hZGluZ1wiIGNsYXNzPVwicm93IHB4LTNcIj4gICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgZGF0YXByb2Nlc3NlZCBwYi0wIHB4LTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkYXRhcHJvY2Vzc2VkZ2lmXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvZGF0YV9hbmFseXNlX2dpZi5naWZcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGFwcm9jZXNzZWQtdGl0bGVcIj5EYXRhIGJlaW5nIFByb2Nlc3NlZDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YXByb2Nlc3NlZC1zdWJcIj5EYXRhIGZvciB0aGUgc2VsZWN0ZWQgZGF0ZSB7eyB5ZXN0ZXJkYXlEYXRlIH19LCBpcyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkIGFuZCB3aWxsIGJlIGF2YWlsYWJsZSBzaG9ydGx5LjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YXByb2Nlc3NlZC1zdWJcIj4gSWYgeW91IHdpc2ggdG8gdmlldyBkYXRhIGZvciBvdGhlciBkYXRlcywgUmVtb3ZlIHt7IHllc3RlcmRheURhdGUgfX0gZnJvbSB5b3VyIHNlbGVjdGlvbiBvciBjaG9vc2UgYSBkaWZmZXJlbnQgZGF0ZSByYW5nZS48L2Rpdj4gICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cImRhdGFQcm9jZXNzZWRMb2FkaW5nXCIgY2xhc3M9XCJjYXJkIHJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PiAgXHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbmZpcm1hdGlvbk1vZGFsIGxldC1tb2RhbD5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy90YW5nby9JbWFnZXMvY3VzdG9tcG9wdXAtaWNvbi5wbmdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCIgbXQtNVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyIGZ3LWJvbGRcIj5DdXN0b20gVGVtcGxhdGUgTmFtZTwvc3Bhbj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIHN1Yi1oZWFkZXIgZnctc2VtaWJvbGRcIj5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSB1c2VyIGdsb2JhbGx5PzwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMTBcIj5cclxuICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3ViLWhlYWRlclwiIHN0eWxlPVwiY29sb3I6ICMzNDQwNTQ7IGZvbnQtd2VpZ2h0OiA0MDA7XCIgZm9yPVwiY3VzdG9tLW5hbWVcIj5UZW1wbGF0ZSBOYW1lPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJjdXN0b21OYW1lXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgbXQtMlwiIGlkPVwiY3VzdG9tLU5hbWVcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC0xMFwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZSB3LTUwIG1lLTJcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctNTAgbXMtMlwiIFtkaXNhYmxlZF09XCJjdXN0b21OYW1lID09PSAnJ1wiIChjbGljayk9XCJtb2RhbC5jbG9zZSgpXCI+QXBwbHk8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -440,7 +440,7 @@ class UserReportComponent {
440
440
  this.service.saveAsExcelFile(res, this.selectedData.name);
441
441
  }
442
442
  }, (error) => {
443
- this.toast.getErrorToast('Something went wrong');
443
+ this.toast.getErrorToast('The export limit cannot exceed 8,000.');
444
444
  });
445
445
  }
446
446
  }
@@ -470,7 +470,7 @@ class UserReportComponent {
470
470
  this.service.saveAsExcelFile(res, 'customTemplate');
471
471
  }
472
472
  }, (error) => {
473
- this.toast.getErrorToast('Something went wrong');
473
+ this.toast.getErrorToast('The export limit cannot exceed 8,000.');
474
474
  });
475
475
  }
476
476
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tango-app-ui-analyse-report.mjs","sources":["../../../projects/tango-analyse-report/src/lib/service/analysereport.service.ts","../../../projects/tango-analyse-report/src/lib/components/user-report/user-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/user-report/user-report.component.html","../../../projects/tango-analyse-report/src/lib/components/tango-analyse-report/tango-analyse-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/tango-analyse-report/tango-analyse-report.component.html","../../../projects/tango-analyse-report/src/lib/tango-analyse-report-routing.module.ts","../../../projects/tango-analyse-report/src/lib/components/get-download-report/get-download-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/get-download-report/get-download-report.component.html","../../../projects/tango-analyse-report/src/lib/tango-analyse-report.module.ts","../../../projects/tango-analyse-report/src/public-api.ts","../../../projects/tango-analyse-report/src/tango-app-ui-analyse-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, catchError, map, throwError } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n \r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnalysereportService {\r\n reportApiUrl:any;\r\n reportAnalysisUrl:any;\r\n trafficApiUrl:any;\r\n\r\n constructor(private gs: GlobalStateService,private http: HttpClient) {\r\n this.gs.environment.subscribe((env)=>{\r\n if(env){\r\n this.reportApiUrl = env.reportApiUrl\r\n this.reportAnalysisUrl = env.reportAnalysisUrl\r\n this.trafficApiUrl = env.trafficApiUrl;\r\n }\r\n }); \r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n getClientListTable(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/client-list-table`,data)\r\n }\r\n\r\n generateReport(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/generate-report`,data)\r\n }\r\n\r\n uploadManualReport(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/upload-manual-report`,data)\r\n }\r\n\r\n getReportList(data:any){\r\n return this.http.get(`${this.reportApiUrl}/get-report-list?fileDate=${data?.fileDate}&clientId=${data?.clientId}`)\r\n }\r\n\r\n sentReport(data:any){\r\n return this.http.post(`${this.reportApiUrl}/send-report`,data)\r\n }\r\n\r\n downloadReport(params:any){\r\n return this.http.get(`${this.reportApiUrl}/download-report?filePath=${params}`,{ responseType: 'arraybuffer' })\r\n }\r\n\r\n reportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/standardTemplate_v1`,params)\r\n }\r\n\r\n customTemplate(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/customTemplate_v1`,params)\r\n }\r\n\r\n downloadReportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/standardTemplate_v1`,params,{ responseType: 'arraybuffer' })\r\n }\r\n\r\n downloadCustomReportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/customTemplate_v1`,params,{ responseType: 'arraybuffer' })\r\n }\r\n getCheckTodayReportStatus(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.trafficApiUrl}/checkTodayReportStatus`, params);\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component,OnDestroy,OnInit,ViewChild } from '@angular/core';\r\nimport { NgbActiveModal, NgbModal,NgbModalModule,NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { debounceTime, Subject, takeUntil } from \"rxjs\";\r\nimport { AnalysereportService } from '../../service/analysereport.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n\r\n@Component({\r\n selector: 'lib-user-report',\r\n templateUrl: './user-report.component.html',\r\n styleUrl: './user-report.component.scss'\r\n})\r\nexport class UserReportComponent implements OnInit,OnDestroy {\r\n\r\n @ViewChild('confirmationModal') confirmationModal: any;\r\n modalRef: NgbModalRef | undefined;\r\n loading:boolean = true;\r\n noData:boolean = false;\r\n showsidenav:boolean = true;\r\n openCustom:boolean = false;\r\n openAccordian:boolean = false;\r\n customName:any ='';\r\n standardData:any = [{name:'Template A',value:'A'},{name:'Template B',value:'B'},{name:'Template C',value:'C'},{name:'Template D',value:'D'}]\r\n costomButtons:any = ['Metrics','Comparision','Time Filter']\r\n metricsData:any = []\r\n comparisionData:any = ['WTD','MTD','None']\r\n filterData:any = ['hour','day']\r\n infraTable:any = []\r\n selectedData: any;\r\n custombtn: any = 'Metrics';\r\n metricsArray: any[] = [];\r\n comparisionFilter: string = 'WTD';\r\n filterDataList: string = 'hour';\r\n // sortBy:any = '';\r\n // sortColumName:any = '';\r\n totalCount:any;\r\n // searchValue: any = '';\r\n dynamicData:any = {};\r\n displayedColumns:any = [];\r\n pageSize:any=[10,20,30];\r\n clientData:any =[];\r\n showReportProcessingCard: boolean = true;\r\n yesterdayDate: string = '';\r\n dataProcessedLoading = true;\r\n private readonly destroy$ = new Subject();\r\n constructor(private modalservice:NgbModal,private gs:GlobalStateService,private service:AnalysereportService,private toast:ToastService, private cd:ChangeDetectorRef){\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n headerData:any;\r\n storeArray:any = [];\r\n ngOnInit(): void {\r\n this.selectedData = this.standardData[0];\r\n\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$),debounceTime(600)).subscribe((data: any) => {\r\n if (data !== null) {\r\n this.headerData = data;\r\n this.storeArray = data?.stores?.filter((item: any) => item.checked).map((item: any) => item.storeId);\r\n this.checkTodayReportStatus() \r\n if (data?.client === '430') {\r\n const isTemplateEExists = this.standardData.some((item:any) => item.value === 'E');\r\n if (!isTemplateEExists) {\r\n this.standardData.push({ name: 'Template E', value: 'E' });\r\n }\r\n }\r\n this.dynamicData = {\r\n clientId: data.client,\r\n storeId: this.storeArray.length ? this.storeArray : data.stores.map((item: any) => item.storeId),\r\n fromDate: data.date.startDate,\r\n toDate: data.date.endDate,\r\n limit: 10,\r\n offset: 0,\r\n templateType: this.selectedData.value,\r\n export: false,\r\n search: '',\r\n sort: '',\r\n sortBy: ''\r\n };\r\n if (!this.openCustom) {\r\n this.getTemplates();\r\n } else {\r\n this.customCreate();\r\n }\r\n \r\n\r\n setTimeout(() => {\r\n const clientData: any = JSON.parse(localStorage.getItem(\"client-details\") || \"{}\");\r\n this.clientData = clientData;\r\n \r\n const limit = clientData?.bouncedLimit?.value ?? clientData?.bouncedLimitValue ?? '';\r\n const conv = clientData?.conversion?.value ?? clientData?.conversionValue ?? '';\r\n \r\n if (this.headerData.client === '452') {\r\n\r\n this.metricsData=[{name:`Less than ${limit} mins`,checked:false,value:\"Bounced Count\"},{name:`${limit} - ${conv} mins`,checked:false,value:'Missed Opportunity Count'},{name:`More than ${limit} mins`,checked:false,value:'Engagers Count'},{name:`More than ${conv} mins Rate`,checked:false,value:'Conversion Rate'},{name:'Age',checked:false,value:'age'},{name:'Gender',checked:false,value:'gender'},{name:'NOB',checked:false,value:'nob'},{name:'Avg Infra Downtime (mins)',checked:false,value:'Avg Infra Downtime (mins)'}]\r\n \r\n } else {\r\n this.metricsData=[{name:'Potential Buyers',checked:false,value:'Potential Buyers'},{name:'Bounced Footfall',checked:false,value:\"Bounced Count\"},{name:'Missed Opportunity',checked:false,value:'Missed Opportunity Count'},{name:'Engagers Count',checked:false,value:'Engagers Count'},{name:'Conversion',checked:false,value:'Conversion Rate'},{name:'Age',checked:false,value:'age'},{name:'Gender',checked:false,value:'gender'},{name:'NOB',checked:false,value:'nob'},{name:'Avg Infra Downtime (mins)',checked:false,value:'Avg Infra Downtime (mins)'}]\r\n\r\n }\r\n }, 100);\r\n \r\n \r\n }\r\n });\r\n }\r\n\r\n getDisplayName(column: any, row: any): any {\r\n const client = this.headerData?.client;\r\n const limit = this.clientData?.bouncedLimit?.value ?? this.clientData?.bouncedLimitValue ?? '';\r\n const conv = this.clientData?.conversion?.value ?? this.clientData?.conversionValue ?? '';\r\n if (client === '452') {\r\n const customLabels:any = {\r\n 'Bounced Count': `Less than ${limit} mins`,\r\n 'Engagers Count': `More than ${limit} mins`,\r\n 'Conversion Rate': `More than ${conv} mins Rate`,\r\n 'Missed Opportunity Count': `${limit} - ${conv} mins`,\r\n };\r\n\r\n return customLabels[column] ?? column;\r\n }\r\n \r\n return column; \r\n }\r\n \r\n getTemplates() {\r\n this.infraTable = [];\r\n this.loading = true;\r\n this.service.reportList(this.dynamicData).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data.templateData?.length) {\r\n this.infraTable = res.data?.templateData;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n\r\n sidenav(){\r\n this.showsidenav = !this.showsidenav;\r\n }\r\n selectRadio(data:any){\r\n this.dynamicData.offset = 0; \r\n this.infraTable = [];\r\n this.selectedData = data;\r\n this.dynamicData.limit = 10;\r\n this.dynamicData.templateType = data.value;\r\n this.dynamicData.search = '';\r\n this.dynamicData.sort = '';\r\n this.dynamicData.sortBy='';\r\n this.getTemplates();\r\n }\r\n createCustom(){\r\n this.customName = '';\r\n const modalRef = this.modalservice.open(this.confirmationModal, { centered: true });\r\n modalRef.result.then((result) => { \r\n this.openAccordian = !this.openAccordian;\r\n this.openCustom = !this.openCustom;\r\n });\r\n }\r\n customOption(data:any){\r\n this.custombtn = data;\r\n }\r\n movetoNext(){\r\n if(this.custombtn === 'Metrics'){\r\n this.custombtn = 'Comparision'\r\n }else if(this.custombtn === 'Comparision'){\r\n this.custombtn = 'Time Filter'\r\n }\r\n }\r\n movetoBack(){\r\n if(this.custombtn === 'Comparision'){\r\n this.custombtn = 'Metrics'\r\n }else if(this.custombtn === 'Time Filter'){\r\n this.custombtn = 'Comparision'\r\n }\r\n }\r\n getComparision(data:any){\r\n this.comparisionFilter = data;\r\n }\r\n getFilter(data:any){\r\n this.filterDataList = data;\r\n }\r\n customCreate(){\r\n this.infraTable = [];\r\n this.loading = true;\r\n this.selectedData = {};\r\n\r\n let selectField = this.metricsData.filter((item:any) => item.checked).map((item:any) => item.value);\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: this.dynamicData.offset,\r\n export:false, \r\n comparisonFilter: this.comparisionFilter != 'None' ? this.comparisionFilter : '',\r\n timeFilter: this.filterDataList, \r\n seletedFields:selectField,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.customTemplate(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data?.customTemplate?.length) {\r\n this.infraTable = res.data.customTemplate;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n\r\n sortData(value:any){\r\n if(this.dynamicData.sort.toLowerCase() == value.toLowerCase()) {\r\n this.dynamicData.sortBy *= -1;\r\n }\r\n else {\r\n this.dynamicData.sortBy = 1;\r\n }\r\n if(value == 'FootFall Count' && this.openCustom) {\r\n value = 'Footfall Count'\r\n }\r\n this.dynamicData.sort = value;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: any) {\r\n this.dynamicData.offset = pageOffset - 1;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n\r\n onPageSizeChange(pageSize: any) {\r\n this.dynamicData.limit = parseInt(pageSize);\r\n this.dynamicData.offset = 0;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n searchData(){\r\n this.dynamicData.offset = 0;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.infraTable = [];\r\n this.loading = true;\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: this.dynamicData.offset,\r\n templateType: this.selectedData.value,\r\n export:false, \r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.reportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data.templateData?.length) {\r\n this.infraTable = res.data?.templateData;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n }\r\n paginationSizes:any = [10,20,30];\r\n setPaginationSizes() {\r\n if (this.totalCount > 10) {\r\n this.paginationSizes = [10, 20, 30];\r\n } else {\r\n this.paginationSizes = [this.totalCount]; // Just one option if less than 10\r\n }\r\n this.pageSize = this.paginationSizes[0];\r\n }\r\n ExportasXlsx(){\r\n if(this.openCustom) {\r\n this.exportCustomTemplate();\r\n }\r\n else {\r\n this.exportTemplates();\r\n }\r\n }\r\n exportTemplates() {\r\n if(this.dynamicData.limit > 25000){\r\n this.toast.getErrorToast('The export limit cannot exceed 25,000.')\r\n } else{\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: 0,\r\n templateType: this.selectedData.value,\r\n export:true,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.downloadReportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res ) {\r\n this.service.saveAsExcelFile(res,this.selectedData.name);\r\n }\r\n },(error:any) => {\r\n this.toast.getErrorToast('Something went wrong');\r\n });\r\n }\r\n }\r\n exportCustomTemplate() {\r\n if(this.dynamicData.limit > 25000){\r\n this.toast.getErrorToast('The export limit cannot exceed 25,000.')\r\n } else {\r\n let selectField = this.metricsData.filter((item:any) => item.checked).map((item:any) => item.value);\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: 0,\r\n export:true, \r\n comparisonFilter: this.comparisionFilter != 'None' ? this.comparisionFilter : '',\r\n timeFilter: this.filterDataList, \r\n seletedFields:selectField,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.downloadCustomReportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res ) {\r\n this.service.saveAsExcelFile(res,'customTemplate');\r\n }\r\n },(error:any) => {\r\n this.toast.getErrorToast('Something went wrong');\r\n });\r\n }\r\n }\r\n reset() {\r\n this.openCustom = false;\r\n this.custombtn = 'Metrics';\r\n this.metricsData.forEach((item:any) => item.checked = false);\r\n this.comparisionFilter = 'WTD';\r\n this.filterDataList = 'hour';\r\n }\r\n resetValues() {\r\n \r\n this.openCustom = !this.openCustom;\r\n this.dynamicData.offset=0;\r\n this.dynamicData.sort = '';\r\n this.dynamicData.sortBy = '';\r\n this.dynamicData.search = '';\r\n }\r\n checkTodayReportStatus(): void {\r\n this.dataProcessedLoading = true;\r\n const reportParams = {\r\n clientId: this.headerData?.client,\r\n fromDate: this.headerData?.date?.startDate,\r\n toDate: this.headerData?.date?.endDate\r\n };\r\n this.service.getCheckTodayReportStatus(reportParams)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.dataProcessedLoading = false\r\n this.showReportProcessingCard = res?.data?.reportSendStatus === true;\r\n this.yesterdayDate = res?.data?.yesterday || '';\r\n this.cd.detectChanges();\r\n },\r\n \r\n error: (err: any) => {\r\n console.error('Error checking report status:', err);\r\n this.showReportProcessingCard = false;\r\n this.dataProcessedLoading = false\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"row mb-5\">\r\n <div [ngClass]=\"showsidenav ? 'col-sm-3':'d-none'\">\r\n <div class=\"card position-relative h-100\">\r\n <div class=\"card-body p-0 overflow-auto\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Standard Template Start -->\r\n\r\n <div ngbAccordionItem [collapsed]=\"openAccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton (click)=\"reset()\">\r\n <div class=\"d-grid\">Standard Template</div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"pt-0 border-0\">\r\n <ng-template class=\"d-flex flex-column justify-content-between\">\r\n <div class=\"card-body h-auto p-0\">\r\n <div class=\"card-label\">\r\n Please select a report to preview \r\n </div>\r\n <div *ngFor=\"let data of standardData\" class=\"mt-5 cursor-pointer\">\r\n <div (click)=\"selectRadio(data)\" class=\"d-flex align-items-center\">\r\n <input [checked]=\"selectedData.name === data.name\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard\">{{data.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Standard Template End -->\r\n <!-- Custom Template Start -->\r\n <!-- *ngIf=\"!openCustom\" -->\r\n <div ngbAccordionItem [collapsed]=\"!openCustom\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading pt-0\" ngbAccordionButton (click)=\"resetValues()\">\r\n <div class=\"d-grid\">Custom Template</div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-body h-100px p-0\">\r\n <div class=\"card-label\">\r\n Please select your data points to add into the reports\r\n </div>\r\n <div class=\"btnheader w-100 p-2 mt-5\">\r\n <span class=\"cursor-pointer px-2\" (click)=\"customOption(button)\" [ngClass]=\"this.custombtn === button ? 'btn ':''\" *ngFor=\"let button of costomButtons\">{{button}}</span>\r\n </div>\r\n <div [ngStyle]=\"{ 'height': infraTable.length ? 'auto' : '100%' }\" class=\"overflow-auto\">\r\n <div *ngIf=\"custombtn === 'Metrics'\">\r\n <div *ngFor=\"let data of metricsData\" class=\"mt-5\">\r\n <div>\r\n <input type=\"checkbox\" class=\"mt-2 cursor-pointer\" [(ngModel)]=\"data.checked\">\r\n <span class=\"ms-5 standard fs-4\">{{data.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"custombtn === 'Comparision'\">\r\n <div *ngFor=\"let data of comparisionData\" class=\"mt-5\">\r\n <div class=\"cursor-pointer d-flex align-items-center\" (click)=\"getComparision(data)\">\r\n <input [checked]=\"comparisionFilter === data\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard fs-4\">{{data}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"custombtn === 'Time Filter'\">\r\n <div *ngFor=\"let data of filterData\" class=\"mt-5\">\r\n <div class=\"cursor-pointer d-flex align-items-center\" (click)=\"getFilter(data)\">\r\n <input [checked]=\"filterDataList === data\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard fs-4\">{{data === 'hour' ? 'By Hour' : 'By Date'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"openCustom\" class=\"d-flex w-100\" [ngClass]=\"!loading ? 'mt-5':''\">\r\n <button class=\"btn btn-default btn-outline w-50 me-3 mb-3\" [ngClass]=\"custombtn === 'Metrics' ? 'hidden' : ''\"\r\n (click)=\"movetoBack()\">Back</button>\r\n <button *ngIf=\"custombtn !== 'Time Filter'\" (click)=\"movetoNext()\"\r\n class=\"btn btn-default btn-primary w-50 ms-3 mb-3\">Next</button>\r\n <button *ngIf=\"custombtn === 'Time Filter'\" (click)=\"dynamicData.limit = 10;customCreate()\"\r\n class=\"btn btn-default btn-primary w-50 ms-3 mb-3\">View</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <!-- Custom Template End -->\r\n \r\n </div>\r\n\r\n \r\n </div>\r\n <!-- <div class=\"card-footer border-0 mt-5\"> -->\r\n <!-- <button *ngIf=\"!openAccordian\" (click)=\"createCustom()\" class=\"btn btn-primary w-100\">\r\n Create Custom Template\r\n </button> -->\r\n <!-- <div *ngIf=\"openCustom\" class=\"d-flex w-100 mt-5\">\r\n <button class=\"btn btn-default btn-outline w-50 me-3\" [ngClass]=\"custombtn === 'Metrics' ? 'hidden' : ''\" (click)=\"movetoBack()\">Back</button>\r\n <button *ngIf=\"custombtn !== 'Time Filter'\" (click)=\"movetoNext()\" class=\"btn btn-default btn-primary w-50 ms-3\">Next</button>\r\n <button *ngIf=\"custombtn === 'Time Filter'\" (click)=\"customCreate()\" class=\"btn btn-default btn-primary w-50 ms-3\">View</button>\r\n </div> -->\r\n <!-- </div> -->\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path d=\"M8.27259 12.6363L4.63623 8.99989L8.27259 5.36353M13.3635 12.6363L9.72714 8.99989L13.3635 5.36353\" stroke=\"#101828\" stroke-width=\"1.45455\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-sm-9':'col-sm-12'\">\r\n <div *ngIf=\"!showReportProcessingCard && !dataProcessedLoading\" class=\"card position-relative min-h-sm-300px min-h-md-400px min-h-xl-550px min-h-lg-500px max-h-auto\">\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\" stroke=\"#101828\" stroke-width=\"1.45455\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title\">\r\n <span class=\"card-label\">{{selectedData?.name || 'Custom Template'}}</span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\"\r\n height=\"2\" rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" (change)=\"searchData()\" [(ngModel)]=\"this.dynamicData.search\" placeholder=\"Search\"\r\n autocomplete=\"off\"/>\r\n </div> \r\n <button class=\"btn btn-default btn-outline me-3\" (click)=\"ExportasXlsx()\" [disabled]=\"!infraTable.length\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> <span class=\"ms-3\">Export</span></button>\r\n <!-- <button class=\"btn btn-default btn-outline\" (click)=\"shareData()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_10164_5579)\"><path d=\"M18.3332 1.66675L9.1665 10.8334M18.3332 1.66675L12.4998 18.3334L9.1665 10.8334M18.3332 1.66675L1.6665 7.50008L9.1665 10.8334\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g><defs><clipPath id=\"clip0_10164_5579\"><rect width=\"20\" height=\"20\" fill=\"white\"/></clipPath></defs></svg><span *ngIf=\"!showsidenav\" class=\"ms-3\">Share</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\"> \r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader card d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"!loading && noData\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Report Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"!loading && !noData && infraTable.length\">\r\n <table class=\"table bottom-border text-nowrap w-100\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of displayedColumns;let i=index\">\r\n <div class=\"cursor-pointer\" (click)=\"sortData(column)\">\r\n <span>{{ getDisplayName(column, infraTable[0]) }}</span>\r\n <span *ngIf=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase()&& this.dynamicData.sortBy !== 1 || this.dynamicData.sort.toLowerCase() !== column.toLowerCase()\" class=\"ms-3\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n [attr.stroke]=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() ? '#00A3FF' :'#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() && this.dynamicData.sortBy !== -1\" class=\"ms-3\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n [attr.stroke]=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() ? '#00A3FF' :'#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n \r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of infraTable; let i = index\">\r\n <td *ngFor=\"let key of displayedColumns\">\r\n <span>\r\n {{ key === 'date' ? (data[key] | date: 'dd MMM, YYYY') : (\r\n key.includes('Avg time to Interact') && data[key] === '-1'\r\n ? '0' : (data[key] !== '' && data[key] !== null && data[key] !== undefined\r\n ? data[key] : '--'))\r\n }}\r\n </span>\r\n \r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\"\r\n [currentPage]=\"(dynamicData.offset + 1)\" [totalItems]=\"totalCount\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\" *ngIf=\"!loading && !noData && infraTable.length\"></lib-pagination>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"showReportProcessingCard && !dataProcessedLoading\" class=\"row px-3\"> \r\n <div class=\"card dataprocessed pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"dataprocessedgif\" src=\"./assets/tango/Icons/data_analyse_gif.gif\" alt=\"\">\r\n <div class=\"dataprocessed-title\">Data being Processed</div>\r\n <div class=\"dataprocessed-sub\">Data for the selected date {{ yesterdayDate }}, is currently being processed and will be available shortly.</div>\r\n <div class=\"dataprocessed-sub\"> If you wish to view data for other dates, Remove {{ yesterdayDate }} from your selection or choose a different date range.</div> \r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"dataProcessedLoading\" class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div> \r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"card border-0\">\r\n <div class=\"card-body\">\r\n <img src=\"./assets/tango/Images/custompopup-icon.png\">\r\n <div class=\" mt-5\">\r\n <span class=\"header fw-bold\">Custom Template Name</span>\r\n <div class=\"mt-3 sub-header fw-semibold\">Are you sure you want to delete the user globally?</div>\r\n </div>\r\n <div class=\"mt-10\">\r\n <label class=\"sub-header\" style=\"color: #344054; font-weight: 400;\" for=\"custom-name\">Template Name</label>\r\n <input type=\"text\" [(ngModel)]=\"customName\" class=\"form-control mt-2\" id=\"custom-Name\">\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" [disabled]=\"customName === ''\" (click)=\"modal.close()\">Apply</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>","import { Component, OnInit } from '@angular/core';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-tango-analyse-report',\r\n templateUrl: './tango-analyse-report.component.html',\r\n styleUrl: './tango-analyse-report.component.scss'\r\n})\r\nexport class TangoAnalyseReportComponent implements OnInit {\r\n\r\n constructor(public pageInfo:PageInfoService) {}\r\n\r\n ngOnInit(): void {\r\n this.setPageData();\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle('Reports')\r\n this.pageInfo.setDescription('Reports')\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"\", path: \"\", isActive: false, isSeparator: false },\r\n ]);\r\n }\r\n\r\n}\r\n","<lib-user-report></lib-user-report>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TangoAnalyseReportComponent } from './components/tango-analyse-report/tango-analyse-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: TangoAnalyseReportComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoAnalyseReportRoutingModule { }\r\n","import { Component,Input, OnInit } from '@angular/core';\r\nimport { AnalysereportService } from '../../service/analysereport.service';\r\n\r\n@Component({\r\n selector: 'lib-get-download-report',\r\n templateUrl: './get-download-report.component.html',\r\n styleUrl: './get-download-report.component.scss'\r\n})\r\nexport class GetDownloadReportComponent implements OnInit {\r\n @Input() data:any;\r\n activeData: any;\r\n reportList: any;\r\n noData:boolean = false;\r\n\r\nconstructor(private service:AnalysereportService){\r\n\r\n}\r\n\r\nngOnInit(){\r\n this.getReportList();\r\n}\r\n\r\ngetReportList(){\r\n let payload = {\r\n fileDate : this.data?.fileDate,\r\n clientId : this.data?.clientId\r\n }\r\n this.service.getReportList(payload).subscribe({\r\n next:(res:any) => {\r\n if(res && res.code === 200){\r\n this.reportList = res?.data?.result;\r\n }else{\r\n this.noData = true;\r\n }\r\n },\r\n complete:()=>{\r\n \r\n },\r\n error:(err)=>{\r\n this.noData = true;\r\n },\r\n })\r\n}\r\n\r\ndownLoadData(type:any){\r\n this.service.downloadReport(type).subscribe((res)=>{\r\n this.saveFile(res, type.split('/').pop())\r\n })\r\n}\r\n\r\n saveFile(buffer: ArrayBuffer, filename: string) {\r\n const blob = new Blob([buffer], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n const anchor = document.createElement('a');\r\n anchor.href = url;\r\n anchor.download = filename;\r\n anchor.click();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\n}\r\n","<div class=\"card border-0\">\r\n <div class=\"card-header\">\r\n <span class=\"card-title\">Report History</span>\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"card-body\">\r\n <div *ngFor=\"let list of reportList\">\r\n <div class=\"DownloadReport mb-5 cursor-pointer\" (click)=\"downLoadData(list?.Key)\">{{list?.Key.split('/').splice(1).join('/')}}||{{list?.LastModified}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"card-body border-0\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div> \r\n </div>\r\n</div> \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoAnalyseReportRoutingModule } from './tango-analyse-report-routing.module';\r\nimport { TangoAnalyseReportComponent } from './components/tango-analyse-report/tango-analyse-report.component';\r\nimport { UserReportComponent } from './components/user-report/user-report.component';\r\nimport { GetDownloadReportComponent } from './components/get-download-report/get-download-report.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoAnalyseReportComponent,\r\n UserReportComponent,\r\n GetDownloadReportComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoAnalyseReportRoutingModule,\r\n CommonSharedModule,\r\n FormsModule,\r\n NgbAccordionModule\r\n ]\r\n})\r\nexport class TangoAnalyseReportModule { }\r\n","/*\r\n * Public API Surface of tango-analyse-report\r\n */\r\n\r\nexport * from './lib/tango-analyse-report.module';\r\nexport * from './lib/components/tango-analyse-report/tango-analyse-report.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.AnalysereportService","i2.UserReportComponent","i1.AnalysereportService"],"mappings":"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"}
1
+ {"version":3,"file":"tango-app-ui-analyse-report.mjs","sources":["../../../projects/tango-analyse-report/src/lib/service/analysereport.service.ts","../../../projects/tango-analyse-report/src/lib/components/user-report/user-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/user-report/user-report.component.html","../../../projects/tango-analyse-report/src/lib/components/tango-analyse-report/tango-analyse-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/tango-analyse-report/tango-analyse-report.component.html","../../../projects/tango-analyse-report/src/lib/tango-analyse-report-routing.module.ts","../../../projects/tango-analyse-report/src/lib/components/get-download-report/get-download-report.component.ts","../../../projects/tango-analyse-report/src/lib/components/get-download-report/get-download-report.component.html","../../../projects/tango-analyse-report/src/lib/tango-analyse-report.module.ts","../../../projects/tango-analyse-report/src/public-api.ts","../../../projects/tango-analyse-report/src/tango-app-ui-analyse-report.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, catchError, map, throwError } from 'rxjs';\r\nimport * as FileSaver from 'file-saver';\r\nimport * as XLSX from 'xlsx';\r\n \r\nconst EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\nconst EXCEL_EXTENSION = '.xlsx';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AnalysereportService {\r\n reportApiUrl:any;\r\n reportAnalysisUrl:any;\r\n trafficApiUrl:any;\r\n\r\n constructor(private gs: GlobalStateService,private http: HttpClient) {\r\n this.gs.environment.subscribe((env)=>{\r\n if(env){\r\n this.reportApiUrl = env.reportApiUrl\r\n this.reportAnalysisUrl = env.reportAnalysisUrl\r\n this.trafficApiUrl = env.trafficApiUrl;\r\n }\r\n }); \r\n }\r\n\r\n public saveAsExcelFile(buffer: any, fileName: string): void {\r\n const data: Blob = new Blob([buffer], {\r\n type: EXCEL_TYPE\r\n });\r\n FileSaver.saveAs(data, fileName + EXCEL_EXTENSION);\r\n }\r\n\r\n getClientListTable(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/client-list-table`,data)\r\n }\r\n\r\n generateReport(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/generate-report`,data)\r\n }\r\n\r\n uploadManualReport(data:any) :Observable<any>{\r\n return this.http.post(`${this.reportApiUrl}/upload-manual-report`,data)\r\n }\r\n\r\n getReportList(data:any){\r\n return this.http.get(`${this.reportApiUrl}/get-report-list?fileDate=${data?.fileDate}&clientId=${data?.clientId}`)\r\n }\r\n\r\n sentReport(data:any){\r\n return this.http.post(`${this.reportApiUrl}/send-report`,data)\r\n }\r\n\r\n downloadReport(params:any){\r\n return this.http.get(`${this.reportApiUrl}/download-report?filePath=${params}`,{ responseType: 'arraybuffer' })\r\n }\r\n\r\n reportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/standardTemplate_v1`,params)\r\n }\r\n\r\n customTemplate(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/customTemplate_v1`,params)\r\n }\r\n\r\n downloadReportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/standardTemplate_v1`,params,{ responseType: 'arraybuffer' })\r\n }\r\n\r\n downloadCustomReportList(params:any){\r\n return this.http.post(`${this.reportAnalysisUrl}/customTemplate_v1`,params,{ responseType: 'arraybuffer' })\r\n }\r\n getCheckTodayReportStatus(params: any): Observable<any> {\r\n return this.http.post<any>(`${this.trafficApiUrl}/checkTodayReportStatus`, params);\r\n }\r\n\r\n}\r\n","import { ChangeDetectorRef, Component,OnDestroy,OnInit,ViewChild } from '@angular/core';\r\nimport { NgbActiveModal, NgbModal,NgbModalModule,NgbModalRef } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GlobalStateService } from 'tango-app-ui-global';\r\nimport { debounceTime, Subject, takeUntil } from \"rxjs\";\r\nimport { AnalysereportService } from '../../service/analysereport.service';\r\nimport { ToastService } from 'tango-app-ui-shared';\r\n\r\n@Component({\r\n selector: 'lib-user-report',\r\n templateUrl: './user-report.component.html',\r\n styleUrl: './user-report.component.scss'\r\n})\r\nexport class UserReportComponent implements OnInit,OnDestroy {\r\n\r\n @ViewChild('confirmationModal') confirmationModal: any;\r\n modalRef: NgbModalRef | undefined;\r\n loading:boolean = true;\r\n noData:boolean = false;\r\n showsidenav:boolean = true;\r\n openCustom:boolean = false;\r\n openAccordian:boolean = false;\r\n customName:any ='';\r\n standardData:any = [{name:'Template A',value:'A'},{name:'Template B',value:'B'},{name:'Template C',value:'C'},{name:'Template D',value:'D'}]\r\n costomButtons:any = ['Metrics','Comparision','Time Filter']\r\n metricsData:any = []\r\n comparisionData:any = ['WTD','MTD','None']\r\n filterData:any = ['hour','day']\r\n infraTable:any = []\r\n selectedData: any;\r\n custombtn: any = 'Metrics';\r\n metricsArray: any[] = [];\r\n comparisionFilter: string = 'WTD';\r\n filterDataList: string = 'hour';\r\n // sortBy:any = '';\r\n // sortColumName:any = '';\r\n totalCount:any;\r\n // searchValue: any = '';\r\n dynamicData:any = {};\r\n displayedColumns:any = [];\r\n pageSize:any=[10,20,30];\r\n clientData:any =[];\r\n showReportProcessingCard: boolean = true;\r\n yesterdayDate: string = '';\r\n dataProcessedLoading = true;\r\n private readonly destroy$ = new Subject();\r\n constructor(private modalservice:NgbModal,private gs:GlobalStateService,private service:AnalysereportService,private toast:ToastService, private cd:ChangeDetectorRef){\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.complete();\r\n }\r\n headerData:any;\r\n storeArray:any = [];\r\n ngOnInit(): void {\r\n this.selectedData = this.standardData[0];\r\n\r\n this.gs.dataRangeValue.pipe(takeUntil(this.destroy$),debounceTime(600)).subscribe((data: any) => {\r\n if (data !== null) {\r\n this.headerData = data;\r\n this.storeArray = data?.stores?.filter((item: any) => item.checked).map((item: any) => item.storeId);\r\n this.checkTodayReportStatus() \r\n if (data?.client === '430') {\r\n const isTemplateEExists = this.standardData.some((item:any) => item.value === 'E');\r\n if (!isTemplateEExists) {\r\n this.standardData.push({ name: 'Template E', value: 'E' });\r\n }\r\n }\r\n this.dynamicData = {\r\n clientId: data.client,\r\n storeId: this.storeArray.length ? this.storeArray : data.stores.map((item: any) => item.storeId),\r\n fromDate: data.date.startDate,\r\n toDate: data.date.endDate,\r\n limit: 10,\r\n offset: 0,\r\n templateType: this.selectedData.value,\r\n export: false,\r\n search: '',\r\n sort: '',\r\n sortBy: ''\r\n };\r\n if (!this.openCustom) {\r\n this.getTemplates();\r\n } else {\r\n this.customCreate();\r\n }\r\n \r\n\r\n setTimeout(() => {\r\n const clientData: any = JSON.parse(localStorage.getItem(\"client-details\") || \"{}\");\r\n this.clientData = clientData;\r\n \r\n const limit = clientData?.bouncedLimit?.value ?? clientData?.bouncedLimitValue ?? '';\r\n const conv = clientData?.conversion?.value ?? clientData?.conversionValue ?? '';\r\n \r\n if (this.headerData.client === '452') {\r\n\r\n this.metricsData=[{name:`Less than ${limit} mins`,checked:false,value:\"Bounced Count\"},{name:`${limit} - ${conv} mins`,checked:false,value:'Missed Opportunity Count'},{name:`More than ${limit} mins`,checked:false,value:'Engagers Count'},{name:`More than ${conv} mins Rate`,checked:false,value:'Conversion Rate'},{name:'Age',checked:false,value:'age'},{name:'Gender',checked:false,value:'gender'},{name:'NOB',checked:false,value:'nob'},{name:'Avg Infra Downtime (mins)',checked:false,value:'Avg Infra Downtime (mins)'}]\r\n \r\n } else {\r\n this.metricsData=[{name:'Potential Buyers',checked:false,value:'Potential Buyers'},{name:'Bounced Footfall',checked:false,value:\"Bounced Count\"},{name:'Missed Opportunity',checked:false,value:'Missed Opportunity Count'},{name:'Engagers Count',checked:false,value:'Engagers Count'},{name:'Conversion',checked:false,value:'Conversion Rate'},{name:'Age',checked:false,value:'age'},{name:'Gender',checked:false,value:'gender'},{name:'NOB',checked:false,value:'nob'},{name:'Avg Infra Downtime (mins)',checked:false,value:'Avg Infra Downtime (mins)'}]\r\n\r\n }\r\n }, 100);\r\n \r\n \r\n }\r\n });\r\n }\r\n\r\n getDisplayName(column: any, row: any): any {\r\n const client = this.headerData?.client;\r\n const limit = this.clientData?.bouncedLimit?.value ?? this.clientData?.bouncedLimitValue ?? '';\r\n const conv = this.clientData?.conversion?.value ?? this.clientData?.conversionValue ?? '';\r\n if (client === '452') {\r\n const customLabels:any = {\r\n 'Bounced Count': `Less than ${limit} mins`,\r\n 'Engagers Count': `More than ${limit} mins`,\r\n 'Conversion Rate': `More than ${conv} mins Rate`,\r\n 'Missed Opportunity Count': `${limit} - ${conv} mins`,\r\n };\r\n\r\n return customLabels[column] ?? column;\r\n }\r\n \r\n return column; \r\n }\r\n \r\n getTemplates() {\r\n this.infraTable = [];\r\n this.loading = true;\r\n this.service.reportList(this.dynamicData).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data.templateData?.length) {\r\n this.infraTable = res.data?.templateData;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n\r\n sidenav(){\r\n this.showsidenav = !this.showsidenav;\r\n }\r\n selectRadio(data:any){\r\n this.dynamicData.offset = 0; \r\n this.infraTable = [];\r\n this.selectedData = data;\r\n this.dynamicData.limit = 10;\r\n this.dynamicData.templateType = data.value;\r\n this.dynamicData.search = '';\r\n this.dynamicData.sort = '';\r\n this.dynamicData.sortBy='';\r\n this.getTemplates();\r\n }\r\n createCustom(){\r\n this.customName = '';\r\n const modalRef = this.modalservice.open(this.confirmationModal, { centered: true });\r\n modalRef.result.then((result) => { \r\n this.openAccordian = !this.openAccordian;\r\n this.openCustom = !this.openCustom;\r\n });\r\n }\r\n customOption(data:any){\r\n this.custombtn = data;\r\n }\r\n movetoNext(){\r\n if(this.custombtn === 'Metrics'){\r\n this.custombtn = 'Comparision'\r\n }else if(this.custombtn === 'Comparision'){\r\n this.custombtn = 'Time Filter'\r\n }\r\n }\r\n movetoBack(){\r\n if(this.custombtn === 'Comparision'){\r\n this.custombtn = 'Metrics'\r\n }else if(this.custombtn === 'Time Filter'){\r\n this.custombtn = 'Comparision'\r\n }\r\n }\r\n getComparision(data:any){\r\n this.comparisionFilter = data;\r\n }\r\n getFilter(data:any){\r\n this.filterDataList = data;\r\n }\r\n customCreate(){\r\n this.infraTable = [];\r\n this.loading = true;\r\n this.selectedData = {};\r\n\r\n let selectField = this.metricsData.filter((item:any) => item.checked).map((item:any) => item.value);\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: this.dynamicData.offset,\r\n export:false, \r\n comparisonFilter: this.comparisionFilter != 'None' ? this.comparisionFilter : '',\r\n timeFilter: this.filterDataList, \r\n seletedFields:selectField,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.customTemplate(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data?.customTemplate?.length) {\r\n this.infraTable = res.data.customTemplate;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n\r\n sortData(value:any){\r\n if(this.dynamicData.sort.toLowerCase() == value.toLowerCase()) {\r\n this.dynamicData.sortBy *= -1;\r\n }\r\n else {\r\n this.dynamicData.sortBy = 1;\r\n }\r\n if(value == 'FootFall Count' && this.openCustom) {\r\n value = 'Footfall Count'\r\n }\r\n this.dynamicData.sort = value;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n\r\n onPageChange(pageOffset: any) {\r\n this.dynamicData.offset = pageOffset - 1;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n\r\n onPageSizeChange(pageSize: any) {\r\n this.dynamicData.limit = parseInt(pageSize);\r\n this.dynamicData.offset = 0;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.getTemplates();\r\n }\r\n }\r\n searchData(){\r\n this.dynamicData.offset = 0;\r\n if(this.openCustom) {\r\n this.customCreate();\r\n }\r\n else {\r\n this.infraTable = [];\r\n this.loading = true;\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: this.dynamicData.offset,\r\n templateType: this.selectedData.value,\r\n export:false, \r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.reportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res && res.data.templateData?.length) {\r\n this.infraTable = res.data?.templateData;\r\n this.totalCount = res.data.totalCount;\r\n this.setPaginationSizes();\r\n // this.pageSize = this.totalCount < 10 ? [this.totalCount] : [10,20,30];\r\n // this.dynamicData.limit = this.totalCount < 10 ? this.totalCount : this.dynamicData.limit;\r\n if(this.headerData.client ==='452'){\r\n this.displayedColumns = Object.keys(this.infraTable[0]).filter(\r\n col => col !== 'Potential Buyers'\r\n );\r\n } else {\r\n this.displayedColumns = Object.keys(this.infraTable[0]);\r\n }\r\n this.loading = false;\r\n this.noData = false;\r\n }\r\n else {\r\n this.loading = false;\r\n this.noData = true;\r\n }\r\n },() => {\r\n this.loading = false;\r\n this.noData = true;\r\n });\r\n }\r\n }\r\n paginationSizes:any = [10,20,30];\r\n setPaginationSizes() {\r\n if (this.totalCount > 10) {\r\n this.paginationSizes = [10, 20, 30];\r\n } else {\r\n this.paginationSizes = [this.totalCount]; // Just one option if less than 10\r\n }\r\n this.pageSize = this.paginationSizes[0];\r\n }\r\n ExportasXlsx(){\r\n if(this.openCustom) {\r\n this.exportCustomTemplate();\r\n }\r\n else {\r\n this.exportTemplates();\r\n }\r\n }\r\n exportTemplates() {\r\n if(this.dynamicData.limit > 25000){\r\n this.toast.getErrorToast('The export limit cannot exceed 25,000.')\r\n } else{\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: 0,\r\n templateType: this.selectedData.value,\r\n export:true,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.downloadReportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res ) {\r\n this.service.saveAsExcelFile(res,this.selectedData.name);\r\n }\r\n },(error:any) => {\r\n this.toast.getErrorToast('The export limit cannot exceed 8,000.');\r\n });\r\n }\r\n }\r\n exportCustomTemplate() {\r\n if(this.dynamicData.limit > 25000){\r\n this.toast.getErrorToast('The export limit cannot exceed 25,000.')\r\n } else {\r\n let selectField = this.metricsData.filter((item:any) => item.checked).map((item:any) => item.value);\r\n let data = {\r\n clientId:this.dynamicData.clientId,\r\n storeId: this.dynamicData.storeId,\r\n fromDate: this.dynamicData.fromDate,\r\n toDate: this.dynamicData.toDate,\r\n limit: this.dynamicData.limit,\r\n offset: 0,\r\n export:true, \r\n comparisonFilter: this.comparisionFilter != 'None' ? this.comparisionFilter : '',\r\n timeFilter: this.filterDataList, \r\n seletedFields:selectField,\r\n search:this.dynamicData.search,\r\n sort:this.dynamicData.sort,\r\n sortBy:this.dynamicData.sortBy\r\n }\r\n this.service.downloadCustomReportList(data).pipe(takeUntil(this.destroy$)).subscribe((res: any) => {\r\n if(res ) {\r\n this.service.saveAsExcelFile(res,'customTemplate');\r\n }\r\n },(error:any) => {\r\n this.toast.getErrorToast('The export limit cannot exceed 8,000.');\r\n });\r\n }\r\n }\r\n reset() {\r\n this.openCustom = false;\r\n this.custombtn = 'Metrics';\r\n this.metricsData.forEach((item:any) => item.checked = false);\r\n this.comparisionFilter = 'WTD';\r\n this.filterDataList = 'hour';\r\n }\r\n resetValues() {\r\n \r\n this.openCustom = !this.openCustom;\r\n this.dynamicData.offset=0;\r\n this.dynamicData.sort = '';\r\n this.dynamicData.sortBy = '';\r\n this.dynamicData.search = '';\r\n }\r\n checkTodayReportStatus(): void {\r\n this.dataProcessedLoading = true;\r\n const reportParams = {\r\n clientId: this.headerData?.client,\r\n fromDate: this.headerData?.date?.startDate,\r\n toDate: this.headerData?.date?.endDate\r\n };\r\n this.service.getCheckTodayReportStatus(reportParams)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: any) => {\r\n this.dataProcessedLoading = false\r\n this.showReportProcessingCard = res?.data?.reportSendStatus === true;\r\n this.yesterdayDate = res?.data?.yesterday || '';\r\n this.cd.detectChanges();\r\n },\r\n \r\n error: (err: any) => {\r\n console.error('Error checking report status:', err);\r\n this.showReportProcessingCard = false;\r\n this.dataProcessedLoading = false\r\n this.cd.detectChanges();\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"row mb-5\">\r\n <div [ngClass]=\"showsidenav ? 'col-sm-3':'d-none'\">\r\n <div class=\"card position-relative h-100\">\r\n <div class=\"card-body p-0 overflow-auto\">\r\n <div ngbAccordion [closeOthers]=\"true\">\r\n <!-- Standard Template Start -->\r\n\r\n <div ngbAccordionItem [collapsed]=\"openAccordian\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading\" ngbAccordionButton (click)=\"reset()\">\r\n <div class=\"d-grid\">Standard Template</div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"pt-0 border-0\">\r\n <ng-template class=\"d-flex flex-column justify-content-between\">\r\n <div class=\"card-body h-auto p-0\">\r\n <div class=\"card-label\">\r\n Please select a report to preview \r\n </div>\r\n <div *ngFor=\"let data of standardData\" class=\"mt-5 cursor-pointer\">\r\n <div (click)=\"selectRadio(data)\" class=\"d-flex align-items-center\">\r\n <input [checked]=\"selectedData.name === data.name\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard\">{{data.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Standard Template End -->\r\n <!-- Custom Template Start -->\r\n <!-- *ngIf=\"!openCustom\" -->\r\n <div ngbAccordionItem [collapsed]=\"!openCustom\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button class=\"mainheading pt-0\" ngbAccordionButton (click)=\"resetValues()\">\r\n <div class=\"d-grid\">Custom Template</div>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody>\r\n <ng-template>\r\n <div class=\"card-body h-100px p-0\">\r\n <div class=\"card-label\">\r\n Please select your data points to add into the reports\r\n </div>\r\n <div class=\"btnheader w-100 p-2 mt-5\">\r\n <span class=\"cursor-pointer px-2\" (click)=\"customOption(button)\" [ngClass]=\"this.custombtn === button ? 'btn ':''\" *ngFor=\"let button of costomButtons\">{{button}}</span>\r\n </div>\r\n <div [ngStyle]=\"{ 'height': infraTable.length ? 'auto' : '100%' }\" class=\"overflow-auto\">\r\n <div *ngIf=\"custombtn === 'Metrics'\">\r\n <div *ngFor=\"let data of metricsData\" class=\"mt-5\">\r\n <div>\r\n <input type=\"checkbox\" class=\"mt-2 cursor-pointer\" [(ngModel)]=\"data.checked\">\r\n <span class=\"ms-5 standard fs-4\">{{data.name}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"custombtn === 'Comparision'\">\r\n <div *ngFor=\"let data of comparisionData\" class=\"mt-5\">\r\n <div class=\"cursor-pointer d-flex align-items-center\" (click)=\"getComparision(data)\">\r\n <input [checked]=\"comparisionFilter === data\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard fs-4\">{{data}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"custombtn === 'Time Filter'\">\r\n <div *ngFor=\"let data of filterData\" class=\"mt-5\">\r\n <div class=\"cursor-pointer d-flex align-items-center\" (click)=\"getFilter(data)\">\r\n <input [checked]=\"filterDataList === data\" type=\"radio\" class=\"radio\">\r\n <span class=\"ms-5 standard fs-4\">{{data === 'hour' ? 'By Hour' : 'By Date'}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"openCustom\" class=\"d-flex w-100\" [ngClass]=\"!loading ? 'mt-5':''\">\r\n <button class=\"btn btn-default btn-outline w-50 me-3 mb-3\" [ngClass]=\"custombtn === 'Metrics' ? 'hidden' : ''\"\r\n (click)=\"movetoBack()\">Back</button>\r\n <button *ngIf=\"custombtn !== 'Time Filter'\" (click)=\"movetoNext()\"\r\n class=\"btn btn-default btn-primary w-50 ms-3 mb-3\">Next</button>\r\n <button *ngIf=\"custombtn === 'Time Filter'\" (click)=\"dynamicData.limit = 10;customCreate()\"\r\n class=\"btn btn-default btn-primary w-50 ms-3 mb-3\">View</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n \r\n </div>\r\n <!-- Custom Template End -->\r\n \r\n </div>\r\n\r\n \r\n </div>\r\n <!-- <div class=\"card-footer border-0 mt-5\"> -->\r\n <!-- <button *ngIf=\"!openAccordian\" (click)=\"createCustom()\" class=\"btn btn-primary w-100\">\r\n Create Custom Template\r\n </button> -->\r\n <!-- <div *ngIf=\"openCustom\" class=\"d-flex w-100 mt-5\">\r\n <button class=\"btn btn-default btn-outline w-50 me-3\" [ngClass]=\"custombtn === 'Metrics' ? 'hidden' : ''\" (click)=\"movetoBack()\">Back</button>\r\n <button *ngIf=\"custombtn !== 'Time Filter'\" (click)=\"movetoNext()\" class=\"btn btn-default btn-primary w-50 ms-3\">Next</button>\r\n <button *ngIf=\"custombtn === 'Time Filter'\" (click)=\"customCreate()\" class=\"btn btn-default btn-primary w-50 ms-3\">View</button>\r\n </div> -->\r\n <!-- </div> -->\r\n <div *ngIf=\"showsidenav\" (click)=\"sidenav()\" class=\"backButtonright text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path d=\"M8.27259 12.6363L4.63623 8.99989L8.27259 5.36353M13.3635 12.6363L9.72714 8.99989L13.3635 5.36353\" stroke=\"#101828\" stroke-width=\"1.45455\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"showsidenav ? 'col-sm-9':'col-sm-12'\">\r\n <div *ngIf=\"!showReportProcessingCard && !dataProcessedLoading\" class=\"card position-relative min-h-sm-300px min-h-md-400px min-h-xl-550px min-h-lg-500px max-h-auto\">\r\n <div *ngIf=\"!showsidenav\" (click)=\"sidenav()\" class=\"backButtonleft text-center pt-1 cursor-pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path d=\"M9.72714 12.6365L13.3635 9.00013L9.72714 5.36377M4.63623 12.6365L8.27259 9.00013L4.63623 5.36377\" stroke=\"#101828\" stroke-width=\"1.45455\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n <div class=\"card-header border-0\">\r\n <div class=\"card-title\">\r\n <span class=\"card-label\">{{selectedData?.name || 'Custom Template'}}</span>\r\n </div>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon svg-icon-1 position-absolute ms-3\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\"\r\n height=\"2\" rx=\"1\" transform=\"rotate(45 17.0365 15.1223)\"\r\n fill=\"currentColor\"></rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input type=\"text\" class=\"form-control ps-14 me-2\" (change)=\"searchData()\" [(ngModel)]=\"this.dynamicData.search\" placeholder=\"Search\"\r\n autocomplete=\"off\"/>\r\n </div> \r\n <button class=\"btn btn-default btn-outline me-3\" (click)=\"ExportasXlsx()\" [disabled]=\"!infraTable.length\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M17.5 12.5V15.8333C17.5 16.2754 17.3244 16.6993 17.0118 17.0118C16.6993 17.3244 16.2754 17.5 15.8333 17.5H4.16667C3.72464 17.5 3.30072 17.3244 2.98816 17.0118C2.67559 16.6993 2.5 16.2754 2.5 15.8333V12.5M14.1667 6.66667L10 2.5M10 2.5L5.83333 6.66667M10 2.5V12.5\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg> <span class=\"ms-3\">Export</span></button>\r\n <!-- <button class=\"btn btn-default btn-outline\" (click)=\"shareData()\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <g clip-path=\"url(#clip0_10164_5579)\"><path d=\"M18.3332 1.66675L9.1665 10.8334M18.3332 1.66675L12.4998 18.3334L9.1665 10.8334M18.3332 1.66675L1.6665 7.50008L9.1665 10.8334\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </g><defs><clipPath id=\"clip0_10164_5579\"><rect width=\"20\" height=\"20\" fill=\"white\"/></clipPath></defs></svg><span *ngIf=\"!showsidenav\" class=\"ms-3\">Share</span>\r\n </button> -->\r\n </div>\r\n </div>\r\n <div class=\"card-body\"> \r\n <ng-container *ngIf=\"loading\">\r\n <div class=\"row loader card d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"!loading && noData\">\r\n <div class=\"col-lg-12\">\r\n <div class=\"card-body my-8 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Report Analysis</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-responsive\" *ngIf=\"!loading && !noData && infraTable.length\">\r\n <table class=\"table bottom-border text-nowrap w-100\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let column of displayedColumns;let i=index\">\r\n <div class=\"cursor-pointer\" (click)=\"sortData(column)\">\r\n <span>{{ getDisplayName(column, infraTable[0]) }}</span>\r\n <span *ngIf=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase()&& this.dynamicData.sortBy !== 1 || this.dynamicData.sort.toLowerCase() !== column.toLowerCase()\" class=\"ms-3\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 1.33337V10.6667M6.00016 10.6667L10.6668 6.00004M6.00016 10.6667L1.3335 6.00004\"\r\n [attr.stroke]=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() ? '#00A3FF' :'#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <span *ngIf=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() && this.dynamicData.sortBy !== -1\" class=\"ms-3\">\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M6.00016 10.6667L6.00016 1.33337M6.00016 1.33337L1.3335 6.00004M6.00016 1.33337L10.6668 6.00004\"\r\n [attr.stroke]=\"this.dynamicData.sort.toLowerCase() === column.toLowerCase() ? '#00A3FF' :'#667085'\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n \r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let data of infraTable; let i = index\">\r\n <td *ngFor=\"let key of displayedColumns\">\r\n <span>\r\n {{ key === 'date' ? (data[key] | date: 'dd MMM, YYYY') : (\r\n key.includes('Avg time to Interact') && data[key] === '-1'\r\n ? '0' : (data[key] !== '' && data[key] !== null && data[key] !== undefined\r\n ? data[key] : '--'))\r\n }}\r\n </span>\r\n \r\n </td>\r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n \r\n </div>\r\n <div class=\"card-footer border-0\">\r\n <lib-pagination [itemsPerPage]=\"pageSize\"\r\n [currentPage]=\"(dynamicData.offset + 1)\" [totalItems]=\"totalCount\"\r\n [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\" *ngIf=\"!loading && !noData && infraTable.length\"></lib-pagination>\r\n </div>\r\n </div>\r\n \r\n <div *ngIf=\"showReportProcessingCard && !dataProcessedLoading\" class=\"row px-3\"> \r\n <div class=\"card dataprocessed pb-0 px-0 d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"dataprocessedgif\" src=\"./assets/tango/Icons/data_analyse_gif.gif\" alt=\"\">\r\n <div class=\"dataprocessed-title\">Data being Processed</div>\r\n <div class=\"dataprocessed-sub\">Data for the selected date {{ yesterdayDate }}, is currently being processed and will be available shortly.</div>\r\n <div class=\"dataprocessed-sub\"> If you wish to view data for other dates, Remove {{ yesterdayDate }} from your selection or choose a different date range.</div> \r\n </div>\r\n \r\n </div>\r\n <div *ngIf=\"dataProcessedLoading\" class=\"card row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div> \r\n </div>\r\n</div>\r\n\r\n<ng-template #confirmationModal let-modal>\r\n <div class=\"card border-0\">\r\n <div class=\"card-body\">\r\n <img src=\"./assets/tango/Images/custompopup-icon.png\">\r\n <div class=\" mt-5\">\r\n <span class=\"header fw-bold\">Custom Template Name</span>\r\n <div class=\"mt-3 sub-header fw-semibold\">Are you sure you want to delete the user globally?</div>\r\n </div>\r\n <div class=\"mt-10\">\r\n <label class=\"sub-header\" style=\"color: #344054; font-weight: 400;\" for=\"custom-name\">Template Name</label>\r\n <input type=\"text\" [(ngModel)]=\"customName\" class=\"form-control mt-2\" id=\"custom-Name\">\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-10\">\r\n <button type=\"button\" class=\"btn btn-default btn-outline w-50 me-2\" (click)=\"modal.dismiss()\">Cancel</button>\r\n <button type=\"button\" class=\"btn btn-primary w-50 ms-2\" [disabled]=\"customName === ''\" (click)=\"modal.close()\">Apply</button>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-template>","import { Component, OnInit } from '@angular/core';\r\nimport { PageInfoService } from 'tango-app-ui-global';\r\n\r\n@Component({\r\n selector: 'lib-tango-analyse-report',\r\n templateUrl: './tango-analyse-report.component.html',\r\n styleUrl: './tango-analyse-report.component.scss'\r\n})\r\nexport class TangoAnalyseReportComponent implements OnInit {\r\n\r\n constructor(public pageInfo:PageInfoService) {}\r\n\r\n ngOnInit(): void {\r\n this.setPageData();\r\n }\r\n\r\n setPageData() {\r\n this.pageInfo.setTitle('Reports')\r\n this.pageInfo.setDescription('Reports')\r\n this.pageInfo.setBreadcrumbs([\r\n { title: \"\", path: \"\", isActive: false, isSeparator: false },\r\n ]);\r\n }\r\n\r\n}\r\n","<lib-user-report></lib-user-report>","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TangoAnalyseReportComponent } from './components/tango-analyse-report/tango-analyse-report.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: TangoAnalyseReportComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TangoAnalyseReportRoutingModule { }\r\n","import { Component,Input, OnInit } from '@angular/core';\r\nimport { AnalysereportService } from '../../service/analysereport.service';\r\n\r\n@Component({\r\n selector: 'lib-get-download-report',\r\n templateUrl: './get-download-report.component.html',\r\n styleUrl: './get-download-report.component.scss'\r\n})\r\nexport class GetDownloadReportComponent implements OnInit {\r\n @Input() data:any;\r\n activeData: any;\r\n reportList: any;\r\n noData:boolean = false;\r\n\r\nconstructor(private service:AnalysereportService){\r\n\r\n}\r\n\r\nngOnInit(){\r\n this.getReportList();\r\n}\r\n\r\ngetReportList(){\r\n let payload = {\r\n fileDate : this.data?.fileDate,\r\n clientId : this.data?.clientId\r\n }\r\n this.service.getReportList(payload).subscribe({\r\n next:(res:any) => {\r\n if(res && res.code === 200){\r\n this.reportList = res?.data?.result;\r\n }else{\r\n this.noData = true;\r\n }\r\n },\r\n complete:()=>{\r\n \r\n },\r\n error:(err)=>{\r\n this.noData = true;\r\n },\r\n })\r\n}\r\n\r\ndownLoadData(type:any){\r\n this.service.downloadReport(type).subscribe((res)=>{\r\n this.saveFile(res, type.split('/').pop())\r\n })\r\n}\r\n\r\n saveFile(buffer: ArrayBuffer, filename: string) {\r\n const blob = new Blob([buffer], { type: 'application/octet-stream' });\r\n const url = window.URL.createObjectURL(blob);\r\n const anchor = document.createElement('a');\r\n anchor.href = url;\r\n anchor.download = filename;\r\n anchor.click();\r\n window.URL.revokeObjectURL(url);\r\n}\r\n\r\n}\r\n","<div class=\"card border-0\">\r\n <div class=\"card-header\">\r\n <span class=\"card-title\">Report History</span>\r\n </div>\r\n <div *ngIf=\"!noData\" class=\"card-body\">\r\n <div *ngFor=\"let list of reportList\">\r\n <div class=\"DownloadReport mb-5 cursor-pointer\" (click)=\"downLoadData(list?.Key)\">{{list?.Key.split('/').splice(1).join('/')}}||{{list?.LastModified}}</div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"noData\" class=\"card-body border-0\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src w-25\" src=\"./assets/tango/Icons/Nodata.svg\" alt=\"\">\r\n </div> \r\n </div>\r\n</div> \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TangoAnalyseReportRoutingModule } from './tango-analyse-report-routing.module';\r\nimport { TangoAnalyseReportComponent } from './components/tango-analyse-report/tango-analyse-report.component';\r\nimport { UserReportComponent } from './components/user-report/user-report.component';\r\nimport { GetDownloadReportComponent } from './components/get-download-report/get-download-report.component';\r\nimport { CommonSharedModule } from 'tango-app-ui-shared';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TangoAnalyseReportComponent,\r\n UserReportComponent,\r\n GetDownloadReportComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n TangoAnalyseReportRoutingModule,\r\n CommonSharedModule,\r\n FormsModule,\r\n NgbAccordionModule\r\n ]\r\n})\r\nexport class TangoAnalyseReportModule { }\r\n","/*\r\n * Public API Surface of tango-analyse-report\r\n */\r\n\r\nexport * from './lib/tango-analyse-report.module';\r\nexport * from './lib/components/tango-analyse-report/tango-analyse-report.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.AnalysereportService","i2.UserReportComponent","i1.AnalysereportService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tango-app-ui-analyse-report",
3
- "version": "3.7.1-alpha.2",
3
+ "version": "3.7.1-alpha.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0"