principal-dashboard-lib-v2 0.0.13 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/principal-dashboard-lib-v2.umd.js +9 -7
- package/bundles/principal-dashboard-lib-v2.umd.js.map +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js +1 -1
- package/bundles/principal-dashboard-lib-v2.umd.min.js.map +1 -1
- package/esm2015/lib/chartheader/chartheader.component.js +2 -2
- package/esm2015/lib/chartview/chartview.component.js +3 -2
- package/esm2015/lib/principal-dashboard-lib-v2.service.js +7 -6
- package/fesm2015/principal-dashboard-lib-v2.js +9 -7
- package/fesm2015/principal-dashboard-lib-v2.js.map +1 -1
- package/package.json +1 -1
|
@@ -11,7 +11,7 @@ export class ChartheaderComponent {
|
|
|
11
11
|
this.isChartView = true;
|
|
12
12
|
}
|
|
13
13
|
ngOnInit() {
|
|
14
|
-
this.libVersion = "0.0.
|
|
14
|
+
this.libVersion = "0.0.14";
|
|
15
15
|
// this.myIcon = document.getElementById('myIconImg');
|
|
16
16
|
// this.changeChatType()
|
|
17
17
|
}
|
|
@@ -46,4 +46,4 @@ ChartheaderComponent.decorators = [
|
|
|
46
46
|
ChartheaderComponent.ctorParameters = () => [
|
|
47
47
|
{ type: PrincipalDashboardLibV2Service }
|
|
48
48
|
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRoZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIvc3JjL2xpYi9jaGFydGhlYWRlci9jaGFydGhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBd0MsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBUXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsWUFDVSxTQUF5QztRQUF6QyxjQUFTLEdBQVQsU0FBUyxDQUFnQztRQUduRCxXQUFXO1FBQ1gsV0FBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDNUIsb0JBQWUsR0FBRyxVQUFVLENBQUM7UUFDN0IsZUFBVSxHQUFHLElBQUksQ0FBQztRQUdsQixnQkFBVyxHQUFDLElBQUksQ0FBQztJQVJkLENBQUM7SUFVSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0Isc0RBQXNEO1FBQ3RELHlCQUF5QjtJQUMzQixDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBRTVDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFFakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1QztJQUNILENBQUM7SUFDRCx1QkFBdUI7UUFDckIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7OztZQTNDRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IscXdCQUEyQzs7YUFFNUM7OztZQVBRLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvY2FsZURhdGVUaW1lRm9ybWF0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnRUeXBlIH0gZnJvbSAnYW5ndWxhci1nb29nbGUtY2hhcnRzJztcclxuaW1wb3J0IHsgUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlIH0gZnJvbSAnLi4vcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZSc7XHJcbmRlY2xhcmUgbGV0IHJlcXVpcmU6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNoYXJ0aGVhZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRoZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0aGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaGFydGhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHBkU2VydmljZTogUHJpbmNpcGFsRGFzaGJvYXJkTGliVjJTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIFxyXG4gIC8vdmFyaWFibGVzXHJcbiAgbXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gIGRhdGFkaXNwbGF5dHlwZSA9ICdVc2VyV2lzZSc7XHJcbiAgaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgbXlJY29uOiBhbnk7XHJcbiAgbGliVmVyc2lvbjphbnk7XHJcbiAgaXNDaGFydFZpZXc9dHJ1ZTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxpYlZlcnNpb24gPSBcIjAuMC4xNFwiO1xyXG4gICAgLy8gdGhpcy5teUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlJY29uSW1nJyk7XHJcbiAgICAvLyB0aGlzLmNoYW5nZUNoYXRUeXBlKCkgXHJcbiAgfVxyXG4gIGNoYW5nZUNoYXRUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMubXl0eXBlID09IENoYXJ0VHlwZS5UaW1lbGluZSkge1xyXG4gICAgICB0aGlzLmlzQ2hhcnRWaWV3ID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRhYmxlO1xyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICAgIFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pc0NoYXJ0VmlldyA9IHRydWU7XHJcbiAgICAgIHRoaXMubXl0eXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgIFxyXG4gICAgICB0aGlzLnBkU2VydmljZS5jaGFydFR5cGUubmV4dCh0aGlzLm15dHlwZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlQ2xhc3NSb29tKCkge1xyXG4gICAgdGhpcy5pc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIGNoYW5nZURhdGFUeXBlVXNlcigpIHtcclxuICAgIHRoaXMuaXNVc2VyV2lzZSA9IHRydWU7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc1VzZXJXaXNlX2RhdGEubmV4dCh0cnVlKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -145,8 +145,9 @@ export class ChartviewComponent {
|
|
|
145
145
|
}
|
|
146
146
|
else {
|
|
147
147
|
for (let i = 0; i < detailViewMatrix.length; i++) {
|
|
148
|
+
// console.log("detailViewMatrix[i]",detailViewMatrix[i]);
|
|
148
149
|
id_durationArray = {
|
|
149
|
-
name: detailViewMatrix[i].
|
|
150
|
+
name: detailViewMatrix[i].terminalIP,
|
|
150
151
|
value: parseInt(detailViewMatrix[i].duration),
|
|
151
152
|
};
|
|
152
153
|
id_durationMatrix.push(id_durationArray);
|
|
@@ -348,4 +349,4 @@ ChartviewComponent.ctorParameters = () => [
|
|
|
348
349
|
ChartviewComponent.propDecorators = {
|
|
349
350
|
data: [{ type: Input }]
|
|
350
351
|
};
|
|
351
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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dCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0VHlwZSwgR29vZ2xlQ2hhcnRDb21wb25lbnQgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xyXG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAncHJvdHJhY3Rvcic7XHJcbmltcG9ydCB7IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZSB9IGZyb20gJy4uL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jaGFydHZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydHZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0dmlldy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcnR2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBzZXQgZGF0YShyZXM6IGFueSkge1xyXG4gICAgaWYocmVzIT09IG51bGwpe1xyXG4gICAgICB0aGlzLmxvYWRDaGFydChyZXMpO1xyXG4gICAgfVxyXG4gICAgICBcclxuICB9XHJcbiAgY2hhcnR2aWV3OmFueTtcclxuICBteURhdGFMaXN0OmFueTtcclxuICBjaGFydERhdGFUYWJsZTphbnk7XHJcbiAgbXlDaGFydE9wdGlvbnM6IGFueTtcclxuICBBbGxyb3dIZWlnaHQ6IGFueTtcclxuICBteVhtbERhdGE6IGFueTtcclxuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xyXG4gIHJlc291cmNlRGF0YUxpc3Q6YW55O1xyXG4gIGFsbGRhdGFMaXN0OmFueTtcclxuICBzZWxlY3RlZFVzZXJEYXRhOmFueTtcclxuICByb3dFbGVtZW50czphbnk7XHJcbiBcclxuICBpbnN0YWxsZWRDbGFzc3Jvb21zOiBhbnk7XHJcbiAgY3VycmVudFJvb21zOiBhbnk7XHJcbiAgdG90YWxVc2VycyA9IDA7XHJcbiAgZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgY3VycmVudFVzZXJzID0gMDtcclxuICBteUNoYXJ0VHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcclxuICBteUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgbXlDaGFydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICBjdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xyXG4gIGFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gIGlzQWxsVXNlcnMgPSBmYWxzZTtcclxuICBpc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgYWxsdXNlckxpc3Q6IGFueTtcclxuICBteUNoYXJ0RGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gIFxyXG4gIHRvdGFsQ2hhcnREYXRhTWF0cml4ICA9IG5ldyBBcnJheSgpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIGxvYWRDaGFydChyZXNwb25zZTogYW55KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnIElOIC0tPiA4IGxvYWRDaGFydCcpO1xyXG4gICAgdGhpcy50b3RhbFVzZXJzID0gMDtcclxuICAgIHRoaXMuZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IDA7XHJcbiAgICB0aGlzLm15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgdGhpcy5teUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XHJcbiAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgdGhpcy5pc0FsbFVzZXJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBmYWxzZTtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPVtdO1xyXG4gICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeCAgPVtdO1xyXG5cclxuICAgIHRoaXMuY2hhcnR2aWV3ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLWNoYXJ0dmlldycpO1xyXG4gICAgdGhpcy5teURhdGFMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLXhtbERhdGEnKTtcclxuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGlmKHJlc3BvbnNlKXtcclxuICAgICAgdGhpcy5teVhtbERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYodGhpcy5teVhtbERhdGEpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRkYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XHJcbiAgICAgIHRoaXMuYWxsdXNlckxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxVc2VyQ2hhcnREYXRhKCk7XHJcbiAgICAgIHRoaXMucmVzb3VyY2VEYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xyXG4gICAgICB0aGlzLnRvdGFsVXNlcnMgPSB0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2Vyc01ldGFkYXRhLmxlbmd0aDtcclxuICAgICAgdGhpcy5maW5kQ3VycmVudFVzZXJDb3VudCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wZFNlcnZpY2UuY2hhcnRUeXBlLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hhcnRUeXBlKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhVHlwZShkYXRhKTtcclxuICAgIH0pO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemVXaW5kb3cuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG4gIG9uUmVzaXplV2luZG93KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubXlDaGFydHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjg4OyAvL3NldCBhbiBhcHByb3ByaWF0ZSAgZmFjdG9yXHJcbiAgfVxyXG4gIG15Q2hhcnRSZWFkeSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGl2Zm9yVG90YWxEdXJhcnRpb24oKTtcclxuICAgIHRoaXMuc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpO1xyXG4gICAgICAvLyB0aGlzLnJlbW92ZUJsYW5rRW50cnlCYXIoKTtcclxuICB9XHJcbiAgdXBkYXRlQ2hhcnRUeXBlKGRhdGFUeXBlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNoYXJ0dmlldyAhPSBudWxsICYmIHRoaXMuY2hhcnR2aWV3ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoZGF0YVR5cGUgPT0gQ2hhcnRUeXBlLlRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydHZpZXcuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVEYXRhVHlwZShkYXRhVHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBkYXRhVHlwZTtcclxuICAgIGlmICh0aGlzLm15WG1sRGF0YSkge1xyXG4gICAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XHJcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQWxsRGF0YSgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hbGxMaXN0ID0gXCJBbGwgUm9vbXNcIjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFJvb21zXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVDaGFydCgpIHtcclxuICAgIGxldCBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XHJcbiAgICB3aGlsZSAobGFiZWxzLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgbGFiZWxzLnJlbW92ZUNoaWxkKGxhYmVscy5sYXN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFydERhdGFUYWJsZSA9IHRoaXMubXlDaGFydERhdGFNYXRyaXg7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMubXlDaGFydERhdGFNYXRyaXhcIix0aGlzLm15Q2hhcnREYXRhTWF0cml4KTtcclxuICAgIFxyXG4gIFxyXG4gICAgKHRoaXMubXlDaGFydE9wdGlvbnMgPSB7XHJcbiAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICB0cmlnZ2VyOiAnbm9uZScsXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbG9yczogWycjZmY3ZjBlJywgJyMyY2EwMmMnLCAnIzhjNTY0YicsICcjZDYyNzI4JywgJyNiY2JkMjInLCAnIzE3YmVjZiddLFxyXG4gICAgICB0aW1lbGluZToge1xyXG4gICAgICAgIGNvbG9yQnlSb3dMYWJlbDogdHJ1ZSxcclxuICAgICAgICBiYXJMYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICBmb250U2l6ZTogNyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBoQXhpczoge1xyXG4gICAgICAgIGZvcm1hdDogJ0hIOm1tIGEnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5teUNoYXJ0SGVpZ2h0ID0gdGhpcy5BbGxyb3dIZWlnaHQgKyAxMDA7Ly90byBzZXQgcGVyZmVjdCBoZWlnaHQgb2YgY2hhcnQgXHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGNhbHVsYXRlVG90YWxEdXJhdGlvbihkZXRhaWxWaWV3TWF0cml4OmFueSkge1xyXG4gICAgIFxyXG4gICAgbGV0IGlkX2R1cmF0aW9uQXJyYXk7XHJcbiAgICBsZXQgaWRfZHVyYXRpb25NYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4ID0gW107XHJcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ID0gW107XHJcbiAgICBpZiAodGhpcy5pc1VzZXJXaXNlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsVmlld01hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlkX2R1cmF0aW9uQXJyYXkgPSB7XHJcbiAgICAgICAgICBuYW1lOiBkZXRhaWxWaWV3TWF0cml4W2ldLnVzZXJOYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWRfZHVyYXRpb25NYXRyaXgucHVzaChpZF9kdXJhdGlvbkFycmF5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcclxuICAgICAgICAgIG5hbWU6IGRldGFpbFZpZXdNYXRyaXhbaV0udGVybWluYWxMb2NhdGlvbixcclxuICAgICAgICAgIHZhbHVlOiBwYXJzZUludChkZXRhaWxWaWV3TWF0cml4W2ldLmR1cmF0aW9uKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlkX2R1cmF0aW9uTWF0cml4LnB1c2goaWRfZHVyYXRpb25BcnJheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICBpZF9kdXJhdGlvbk1hdHJpeCA9IFsuLi5uZXcgU2V0KGlkX2R1cmF0aW9uTWF0cml4KV07XHJcbiAgICBcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKG9ialtpdGVtLm5hbWVdKSB7XHJcbiAgICAgICAgb2JqW2l0ZW0ubmFtZV0udmFsdWUgPSBvYmpbaXRlbS5uYW1lXS52YWx1ZSArIGl0ZW0udmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIG9ialtpdGVtLm5hbWVdID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgdmFsdWVzQXJyID0gT2JqZWN0LnZhbHVlcyhvYmopO1xyXG4gICBcclxuICAgIGxldCBteUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgICBteUFycmF5ID0gW107XHJcbiAgICB2YWx1ZXNBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIG15QXJyYXkucHVzaChpdGVtLnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICBmb3IgKGxldCBpID0gMDsgaSA8IG15QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRvdGFsZHVyYXRpb25QZXJSb3cgPSBbdGhpcy50aW1lQ29udmVydChteUFycmF5W2ldKS50b1N0cmluZygpICsgJyBocnMnXTtcclxuICAgICAgLy8gbGV0IHRvdGFsQ2hhcnRSb3dEYXRhQXJyYXkgPSBbdG90YWxkdXJhdGlvblBlclJvd107XHJcbiAgICAgIHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgucHVzaCh0b3RhbGR1cmF0aW9uUGVyUm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgdGltZUNvbnZlcnQobjogYW55KSB7XHJcbiAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihuKTtcclxuICAgIHZhciBob3VycyA9IG51bSAvIDYwO1xyXG4gICAgdmFyIHJob3VycyA9IE1hdGguZmxvb3IoaG91cnMpO1xyXG4gICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByaG91cnMpICogNjA7XHJcbiAgICB2YXIgcm1pbnV0ZXMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMpO1xyXG4gICAgcmV0dXJuIHJob3VycyArICc6JyArIHJtaW51dGVzO1xyXG4gIH1cclxuICByZW1vdmVCbGFua0VudHJ5QmFyKCkge1xyXG4gICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlUaW1lTGluZScpO1xyXG4gICAgdmFyIGVsID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJyZWN0XCIpOyAgICAgIC8vZ2V0IGFsbCB0aGUgZGVzY2VuZGFudCByZWN0IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgICAgICBcclxuICAgIHZhciB3aWR0aCA9IDEwMDAwMDAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IGEgbGFyZ2UgaW5pdGlhbCB2YWx1ZSB0byB3aWR0aFxyXG4gICAgdmFyIGVsVG9SZW0gPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lbGVtZW50IHdvdWxkIGJlIGFkZGVkIHRvIHRoaXMgYXJyYXkgZm9yIHJlbW92YWxcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvb3Bpbmcgb3ZlciBhbGwgdGhlIHJlY3QgZWxlbWVudCBvZiBjb250YWluZXJcclxuICAgICAgdmFyIGN3aWR0aCA9IHBhcnNlSW50KGVsW2ldLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTsvL2dldHRpbmcgdGhlIHdpZHRoIG9mIGl0aCBlbGVtZW50XHJcbiAgICAgIGlmIChjd2lkdGggPCB3aWR0aCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGN1cnJlbnQgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gcHJldmlvdXMgd2lkdGggdGhlbiB0aGlzIGlzIG1pbi4gd2lkdGggYW5kIGl0aCBlbGVtZW50IHNob3VsZCBiZSByZW1vdmVkXHJcbiAgICAgICAgZWxUb1JlbSA9IFtlbFtpXV07XHJcbiAgICAgICAgd2lkdGggPSBjd2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0dGluZyB0aGUgd2lkdGggd2l0aCBtaW4gd2lkdGhcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjd2lkdGggPT0gd2lkdGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBjdXJyZW50IGVsZW1lbnQgd2lkdGggaXMgZXF1YWwgdG8gcHJldmlvdXMgd2lkdGggdGhlbiBtb3JlIHRoYXQgb25lIGVsZW1lbnQgd291bGQgYmUgcmVtb3ZlZFxyXG4gICAgICAgIGVsVG9SZW0ucHVzaChlbFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxUb1JlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyBub3cgaXRlcmF0ZSBKVVNUIHRoZSBlbGVtZW50cyB0byByZW1vdmVcclxuICAgICAgZWxUb1JlbVtpXS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZURpdmZvclRvdGFsRHVyYXJ0aW9uKCkge1xyXG4gICAgbGV0IHJvd0xhYmVscyA9IFtdO1xyXG4gICAgdGhpcy5yb3dFbGVtZW50cyA9IFtdO1xyXG4gICAgdmFyIGxhYmVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbHMnKTtcclxuICAgIHdoaWxlIChsYWJlbHMuZmlyc3RDaGlsZCkge1xyXG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHRlYW0gPSB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4W2ldWzBdO1xyXG4gICAgICByb3dMYWJlbHMucHVzaCh0ZWFtKTtcclxuICAgICAgdmFyIGxhYmVsID0gbGFiZWxzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcclxuICAgICBsYWJlbC5zdHlsZVsnYm9yZGVyLWJvdHRvbSddID0gJzFweCBzb2xpZCAjYjdiN2I3JztcclxuICAgICAgbGFiZWwuc3R5bGVbJ2ZvbnQtZmFtaWx5J10gPSAnQXJpYWwnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsnZm9udC1zaXplJ10gPSAnMTNweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWyd0ZXh0LWFsaWduJ10gPSAnbGVmdCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLWxlZnQnXSA9ICc4cHgnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsncGFkZGluZy1yaWdodCddID0gJzhweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlLnBvc2l0aW9uID0gJ2luaGVyaXQnO1xyXG4gICAgICBpZiAoaSAlIDIpIHtcclxuICAgICAgICBsYWJlbC5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJyNlNmU2ZTYnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2ZmZmZmZic7XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwuaW5uZXJIVE1MID0gdGVhbTtcclxuICAgICAgdGhpcy5yb3dFbGVtZW50cy5wdXNoKGxhYmVsKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpIHtcclxuICAgXHJcbiAgICB0aGlzLkFsbHJvd0hlaWdodCA9IDA7XHJcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XHJcbiAgICBsZXQgcm93cyA9IGNoYXJ0RGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdyZWN0Jyk7XHJcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcm93SW5kZXgrKztcclxuICAgICAgaWYgKHJvd0luZGV4IDwgdGhpcy5yb3dFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcm93SGVpZ2h0ID0gcGFyc2VGbG9hdChyb3dzW2ldLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykpICsgJ3B4JztcclxuICAgICAgICB0aGlzLkFsbHJvd0hlaWdodCArPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDZWxsID0gdGhpcy5yb3dFbGVtZW50c1tyb3dJbmRleF07XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5oZWlnaHQgPSByb3dIZWlnaHQ7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5saW5lSGVpZ2h0ID0gcm93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RSb3dEYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZXZlbnQuc2VsZWN0aW9uWzBdOyBcclxuICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5hbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICAgIFxyXG4gICB9ZWxzZXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICBcclxuICAgIFxyXG4gICB9XHJcbiAgLy8gIGNvbnNvbGUubG9nKFwidGhpcy5zZWxlY3RlZFVzZXJEYXRhXCIsdGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmRldGFpbGVkdmlld0RhdGEubmV4dCh0aGlzLnNlbGVjdGVkVXNlckRhdGEpO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgLy8gYWxsdXNlckxpc3RcclxuICB9XHJcbiAgc2hvd0FsbFVzZXIoKSB7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmlzQWxsVXNlcnMgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcclxuICAgICAgdGhpcy51c2VyV2lzZUFsbERhdGEoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmNsYXNzUm9vbVdpc2VBbGxEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dDdXJyZW50VXNlcigpIHtcclxuICAgIHRoaXMuaXNBbGxVc2VycyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZFNlcnZpY2UuaXNBbGxVc2Vycy5uZXh0KGZhbHNlKTtcclxuICAgIGlmKHRoaXMuaXNVc2VyV2lzZSl7XHJcbiAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICB0aGlzLmNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuIHVzZXJXaXNlQ3VycmVudERhdGEoKXtcclxuIFxyXG4gICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLnBkU2VydmljZS51c2VyV2lzZUNoYXJ0RGF0YSgpO1xyXG4gIC8vICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlXCIsY2hhcnREYXRhVXNlcldpc2UpO1xyXG4gICAgXHJcbiAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICB9XHJcbiAgIH0gIFxyXG4gfVxyXG4gdXNlcldpc2VBbGxEYXRhKCl7XHJcbiAgICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLmFsbHVzZXJMaXN0LmZvckNoYXJ0RGF0YTtcclxuICAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbih0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUpO1xyXG4gICAgfVxyXG4gICBcclxuIH1cclxuIGNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpe1xyXG4gICBsZXQgY2xhc3NSb29tZGF0YSA9IHRoaXMucGRTZXJ2aWNlLmNsYXNzUm9vbVdpc2VDaGFydERhdGEoKTtcclxuICAvLyAgY29uc29sZS5sb2coXCJjbGFzc1Jvb21kYXRhXCIsY2xhc3NSb29tZGF0YSk7XHJcbiAgIGlmKGNsYXNzUm9vbWRhdGEgJiYgY2xhc3NSb29tZGF0YS5sZW5ndGg+MCl7XHJcbiAgICBcclxuICAgICBcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNsYXNzUm9vbWRhdGE7ICAgIFxyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhKTtcclxuICAgIH1cclxuICAgfSBcclxuIH1cclxuIFxyXG4gY2xhc3NSb29tV2lzZUFsbERhdGEoKXtcclxuICAgbGV0IGFsbGNsYXNzUm9vbUxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxSb29tc0RhdGEoKTtcclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEgJiYgYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEubGVuZ3RoID4gMCl7XHJcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID0gYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGE7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgIH1cclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlICYmIGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZS5sZW5ndGggPiAwKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZSk7XHJcbiAgIH1cclxuICAgXHJcbiB9XHJcblxyXG4gIGZpbmRDdXJyZW50VXNlckNvdW50KCl7XHJcbiAgICBsZXQgdXNlckNvbnNvbGVEYXRhID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhO1xyXG4gICBcclxuICAgIGxldCB1c2VyTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgY29uc3QgZWxlbWVudCA9IHVzZXJDb25zb2xlRGF0YVtpbmRleF0udXNlck5hbWU7XHJcbiAgICAgdXNlck5hbWVBcnJheS5wdXNoKGVsZW1lbnQpO1xyXG4gICB9XHJcbiAgICBsZXQgdW5pcXVlVXNlck5hbWUgPSBbLi4ubmV3IFNldCh1c2VyTmFtZUFycmF5KV07XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IHVuaXF1ZVVzZXJOYW1lLmxlbmd0aDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3kgPj4nKTtcclxuICB9XHJcbn1cclxuIl19
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnR2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvY2hhcnR2aWV3L2NoYXJ0dmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSx1QkFBdUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQU12RixNQUFNLE9BQU8sa0JBQWtCO0lBbUM3QixZQUNVLFNBQXlDO1FBQXpDLGNBQVMsR0FBVCxTQUFTLENBQWdDO1FBZm5ELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDakMsaUJBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDbkMsZ0JBQVcsR0FBRyxlQUFlLENBQUM7UUFDOUIsWUFBTyxHQUFHLFdBQVcsQ0FBQztRQUN0QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbkIsc0JBQWlCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUVoQyx5QkFBb0IsR0FBSSxJQUFJLEtBQUssRUFBRSxDQUFDO0lBR2hDLENBQUM7SUFwQ0wsSUFBYSxJQUFJLENBQUMsR0FBUTtRQUN4QixJQUFHLEdBQUcsS0FBSSxJQUFJLEVBQUM7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JCO0lBRUgsQ0FB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ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBJbnB1dCxcclxuICBIb3N0TGlzdGVuZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXJ0VHlwZSwgR29vZ2xlQ2hhcnRDb21wb25lbnQgfSBmcm9tICdhbmd1bGFyLWdvb2dsZS1jaGFydHMnO1xyXG5pbXBvcnQgeyBlbGVtZW50IH0gZnJvbSAncHJvdHJhY3Rvcic7XHJcbmltcG9ydCB7IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZSB9IGZyb20gJy4uL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyLnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1jaGFydHZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFydHZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXJ0dmlldy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhcnR2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBzZXQgZGF0YShyZXM6IGFueSkge1xyXG4gICAgaWYocmVzIT09IG51bGwpe1xyXG4gICAgICB0aGlzLmxvYWRDaGFydChyZXMpO1xyXG4gICAgfVxyXG4gICAgICBcclxuICB9XHJcbiAgY2hhcnR2aWV3OmFueTtcclxuICBteURhdGFMaXN0OmFueTtcclxuICBjaGFydERhdGFUYWJsZTphbnk7XHJcbiAgbXlDaGFydE9wdGlvbnM6IGFueTtcclxuICBBbGxyb3dIZWlnaHQ6IGFueTtcclxuICBteVhtbERhdGE6IGFueTtcclxuICBjdXJyZW50ZGF0YUxpc3Q6YW55O1xyXG4gIHJlc291cmNlRGF0YUxpc3Q6YW55O1xyXG4gIGFsbGRhdGFMaXN0OmFueTtcclxuICBzZWxlY3RlZFVzZXJEYXRhOmFueTtcclxuICByb3dFbGVtZW50czphbnk7XHJcbiBcclxuICBpbnN0YWxsZWRDbGFzc3Jvb21zOiBhbnk7XHJcbiAgY3VycmVudFJvb21zOiBhbnk7XHJcbiAgdG90YWxVc2VycyA9IDA7XHJcbiAgZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgY3VycmVudFVzZXJzID0gMDtcclxuICBteUNoYXJ0VHlwZSA9IENoYXJ0VHlwZS5UaW1lbGluZTtcclxuICBteUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgbXlDaGFydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICBjdXJyZW50TGlzdCA9IFwiQ3VycmVudCBVc2Vyc1wiO1xyXG4gIGFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gIGlzQWxsVXNlcnMgPSBmYWxzZTtcclxuICBpc1VzZXJXaXNlID0gZmFsc2U7XHJcbiAgYWxsdXNlckxpc3Q6IGFueTtcclxuICBteUNoYXJ0RGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gIFxyXG4gIHRvdGFsQ2hhcnREYXRhTWF0cml4ICA9IG5ldyBBcnJheSgpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwZFNlcnZpY2U6IFByaW5jaXBhbERhc2hib2FyZExpYlYyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkgeyB9XHJcblxyXG4gIGxvYWRDaGFydChyZXNwb25zZTogYW55KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnIElOIC0tPiA4IGxvYWRDaGFydCcpO1xyXG4gICAgdGhpcy50b3RhbFVzZXJzID0gMDtcclxuICAgIHRoaXMuZWxpZ2libGVVc2VycyA9IDA7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IDA7XHJcbiAgICB0aGlzLm15Q2hhcnRUeXBlID0gQ2hhcnRUeXBlLlRpbWVsaW5lO1xyXG4gICAgdGhpcy5teUNoYXJ0d2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCAqIDAuODg7XHJcbiAgICB0aGlzLm15Q2hhcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcbiAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFVzZXJzXCI7XHJcbiAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgdGhpcy5pc0FsbFVzZXJzID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBmYWxzZTtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPVtdO1xyXG4gICAgdGhpcy50b3RhbENoYXJ0RGF0YU1hdHJpeCAgPVtdO1xyXG5cclxuICAgIHRoaXMuY2hhcnR2aWV3ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLWNoYXJ0dmlldycpO1xyXG4gICAgdGhpcy5teURhdGFMaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BkLXhtbERhdGEnKTtcclxuICAgIC8vIGxldCBwYXJzZSA9IG5ldyBET01QYXJzZXIoKTtcclxuICAgIGlmKHJlc3BvbnNlKXtcclxuICAgICAgdGhpcy5teVhtbERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgaWYodGhpcy5teVhtbERhdGEpe1xyXG4gICAgICB0aGlzLmN1cnJlbnRkYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlVXNlclJlcWl1cmVkRGF0YSh0aGlzLm15WG1sRGF0YSk7XHJcbiAgICAgIHRoaXMuYWxsdXNlckxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxVc2VyQ2hhcnREYXRhKCk7XHJcbiAgICAgIHRoaXMucmVzb3VyY2VEYXRhTGlzdCA9IHRoaXMucGRTZXJ2aWNlLmdlbmFyYXRlUmVzb3Vyc2VSZXFpdXJlZERhdGEodGhpcy5teVhtbERhdGEpO1xyXG4gICAgICB0aGlzLnRvdGFsVXNlcnMgPSB0aGlzLmN1cnJlbnRkYXRhTGlzdC51c2Vyc01ldGFkYXRhLmxlbmd0aDtcclxuICAgICAgdGhpcy5maW5kQ3VycmVudFVzZXJDb3VudCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wZFNlcnZpY2UuY2hhcnRUeXBlLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICBpZiAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ2hhcnRUeXBlKGRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmlzVXNlcldpc2VfZGF0YS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdGhpcy51cGRhdGVEYXRhVHlwZShkYXRhKTtcclxuICAgIH0pO1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25SZXNpemVXaW5kb3cuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG4gIG9uUmVzaXplV2luZG93KGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMubXlDaGFydHdpZHRoID0gd2luZG93LmlubmVyV2lkdGggKiAwLjg4OyAvL3NldCBhbiBhcHByb3ByaWF0ZSAgZmFjdG9yXHJcbiAgfVxyXG4gIG15Q2hhcnRSZWFkeSgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGl2Zm9yVG90YWxEdXJhcnRpb24oKTtcclxuICAgIHRoaXMuc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpO1xyXG4gICAgICAvLyB0aGlzLnJlbW92ZUJsYW5rRW50cnlCYXIoKTtcclxuICB9XHJcbiAgdXBkYXRlQ2hhcnRUeXBlKGRhdGFUeXBlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmNoYXJ0dmlldyAhPSBudWxsICYmIHRoaXMuY2hhcnR2aWV3ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoZGF0YVR5cGUgPT0gQ2hhcnRUeXBlLlRhYmxlKSB7XHJcbiAgICAgICAgdGhpcy5jaGFydHZpZXcuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNoYXJ0dmlldy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVEYXRhVHlwZShkYXRhVHlwZTogYW55KSB7XHJcbiAgICB0aGlzLmlzVXNlcldpc2UgPSBkYXRhVHlwZTtcclxuICAgIGlmICh0aGlzLm15WG1sRGF0YSkge1xyXG4gICAgICBpZih0aGlzLmlzVXNlcldpc2Upe1xyXG4gICAgICAgIHRoaXMuY3VycmVudExpc3QgPSBcIkN1cnJlbnQgVXNlcnNcIjtcclxuICAgICAgICB0aGlzLmFsbExpc3QgPSBcIkFsbCBVc2Vyc1wiO1xyXG4gICAgICAgIGlmKHRoaXMuaXNBbGxVc2Vycyl7XHJcbiAgICAgICAgICB0aGlzLnVzZXJXaXNlQWxsRGF0YSgpO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hbGxMaXN0ID0gXCJBbGwgUm9vbXNcIjtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0ID0gXCJDdXJyZW50IFJvb21zXCI7XHJcbiAgICAgICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUFsbERhdGEoKTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHRoaXMuY2xhc3NSb29tV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICAgICAgfSBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICB1cGRhdGVDaGFydCgpIHtcclxuICAgIGxldCBsYWJlbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGFiZWxzJyk7XHJcbiAgICB3aGlsZSAobGFiZWxzLmZpcnN0Q2hpbGQpIHtcclxuICAgICAgbGFiZWxzLnJlbW92ZUNoaWxkKGxhYmVscy5sYXN0Q2hpbGQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFydERhdGFUYWJsZSA9IHRoaXMubXlDaGFydERhdGFNYXRyaXg7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMubXlDaGFydERhdGFNYXRyaXhcIix0aGlzLm15Q2hhcnREYXRhTWF0cml4KTtcclxuICAgIFxyXG4gIFxyXG4gICAgKHRoaXMubXlDaGFydE9wdGlvbnMgPSB7XHJcbiAgICAgIHRvb2x0aXA6IHtcclxuICAgICAgICB0cmlnZ2VyOiAnbm9uZScsXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbG9yczogWycjZmY3ZjBlJywgJyMyY2EwMmMnLCAnIzhjNTY0YicsICcjZDYyNzI4JywgJyNiY2JkMjInLCAnIzE3YmVjZiddLFxyXG4gICAgICB0aW1lbGluZToge1xyXG4gICAgICAgIGNvbG9yQnlSb3dMYWJlbDogdHJ1ZSxcclxuICAgICAgICBiYXJMYWJlbFN0eWxlOiB7XHJcbiAgICAgICAgICBmb250U2l6ZTogNyxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICBoQXhpczoge1xyXG4gICAgICAgIGZvcm1hdDogJ0hIOm1tIGEnLFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5teUNoYXJ0SGVpZ2h0ID0gdGhpcy5BbGxyb3dIZWlnaHQgKyAxMDA7Ly90byBzZXQgcGVyZmVjdCBoZWlnaHQgb2YgY2hhcnQgXHJcbiAgICB9LCAxMDAwKTtcclxuICB9XHJcblxyXG4gIGNhbHVsYXRlVG90YWxEdXJhdGlvbihkZXRhaWxWaWV3TWF0cml4OmFueSkge1xyXG4gICAgIFxyXG4gICAgbGV0IGlkX2R1cmF0aW9uQXJyYXk7XHJcbiAgICBsZXQgaWRfZHVyYXRpb25NYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4ID0gW107XHJcbiAgICB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4ID0gW107XHJcbiAgICBpZiAodGhpcy5pc1VzZXJXaXNlKSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlsVmlld01hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlkX2R1cmF0aW9uQXJyYXkgPSB7XHJcbiAgICAgICAgICBuYW1lOiBkZXRhaWxWaWV3TWF0cml4W2ldLnVzZXJOYW1lLFxyXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGRldGFpbFZpZXdNYXRyaXhbaV0uZHVyYXRpb24pLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWRfZHVyYXRpb25NYXRyaXgucHVzaChpZF9kdXJhdGlvbkFycmF5KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZXRhaWxWaWV3TWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJkZXRhaWxWaWV3TWF0cml4W2ldXCIsZGV0YWlsVmlld01hdHJpeFtpXSk7XHJcbiAgICAgICAgaWRfZHVyYXRpb25BcnJheSA9IHtcclxuICAgICAgICAgIG5hbWU6IGRldGFpbFZpZXdNYXRyaXhbaV0udGVybWluYWxJUCxcclxuICAgICAgICAgIHZhbHVlOiBwYXJzZUludChkZXRhaWxWaWV3TWF0cml4W2ldLmR1cmF0aW9uKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlkX2R1cmF0aW9uTWF0cml4LnB1c2goaWRfZHVyYXRpb25BcnJheSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICBpZF9kdXJhdGlvbk1hdHJpeCA9IFsuLi5uZXcgU2V0KGlkX2R1cmF0aW9uTWF0cml4KV07XHJcbiAgICBcclxuICAgIGlkX2R1cmF0aW9uTWF0cml4LmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgaWYgKG9ialtpdGVtLm5hbWVdKSB7XHJcbiAgICAgICAgb2JqW2l0ZW0ubmFtZV0udmFsdWUgPSBvYmpbaXRlbS5uYW1lXS52YWx1ZSArIGl0ZW0udmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIG9ialtpdGVtLm5hbWVdID0gaXRlbTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgdmFsdWVzQXJyID0gT2JqZWN0LnZhbHVlcyhvYmopO1xyXG4gICBcclxuICAgIGxldCBteUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgICBteUFycmF5ID0gW107XHJcbiAgICB2YWx1ZXNBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIG15QXJyYXkucHVzaChpdGVtLnZhbHVlKTtcclxuICAgIH0pO1xyXG4gICBmb3IgKGxldCBpID0gMDsgaSA8IG15QXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHRvdGFsZHVyYXRpb25QZXJSb3cgPSBbdGhpcy50aW1lQ29udmVydChteUFycmF5W2ldKS50b1N0cmluZygpICsgJyBocnMnXTtcclxuICAgICAgLy8gbGV0IHRvdGFsQ2hhcnRSb3dEYXRhQXJyYXkgPSBbdG90YWxkdXJhdGlvblBlclJvd107XHJcbiAgICAgIHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgucHVzaCh0b3RhbGR1cmF0aW9uUGVyUm93KTtcclxuICAgIH1cclxuICB9XHJcbiAgdGltZUNvbnZlcnQobjogYW55KSB7XHJcbiAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihuKTtcclxuICAgIHZhciBob3VycyA9IG51bSAvIDYwO1xyXG4gICAgdmFyIHJob3VycyA9IE1hdGguZmxvb3IoaG91cnMpO1xyXG4gICAgdmFyIG1pbnV0ZXMgPSAoaG91cnMgLSByaG91cnMpICogNjA7XHJcbiAgICB2YXIgcm1pbnV0ZXMgPSBNYXRoLnJvdW5kKG1pbnV0ZXMpO1xyXG4gICAgcmV0dXJuIHJob3VycyArICc6JyArIHJtaW51dGVzO1xyXG4gIH1cclxuICByZW1vdmVCbGFua0VudHJ5QmFyKCkge1xyXG4gICAgY29uc3QgY2hhcnREaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlUaW1lTGluZScpO1xyXG4gICAgdmFyIGVsID0gY2hhcnREaXYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJyZWN0XCIpOyAgICAgIC8vZ2V0IGFsbCB0aGUgZGVzY2VuZGFudCByZWN0IGVsZW1lbnQgaW5zaWRlIHRoZSBjb250YWluZXIgICAgICBcclxuICAgIHZhciB3aWR0aCA9IDEwMDAwMDAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0IGEgbGFyZ2UgaW5pdGlhbCB2YWx1ZSB0byB3aWR0aFxyXG4gICAgdmFyIGVsVG9SZW0gPSBbXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9lbGVtZW50IHdvdWxkIGJlIGFkZGVkIHRvIHRoaXMgYXJyYXkgZm9yIHJlbW92YWxcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwubGVuZ3RoOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvb3Bpbmcgb3ZlciBhbGwgdGhlIHJlY3QgZWxlbWVudCBvZiBjb250YWluZXJcclxuICAgICAgdmFyIGN3aWR0aCA9IHBhcnNlSW50KGVsW2ldLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpKTsvL2dldHRpbmcgdGhlIHdpZHRoIG9mIGl0aCBlbGVtZW50XHJcbiAgICAgIGlmIChjd2lkdGggPCB3aWR0aCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGN1cnJlbnQgZWxlbWVudCB3aWR0aCBpcyBsZXNzIHRoYW4gcHJldmlvdXMgd2lkdGggdGhlbiB0aGlzIGlzIG1pbi4gd2lkdGggYW5kIGl0aCBlbGVtZW50IHNob3VsZCBiZSByZW1vdmVkXHJcbiAgICAgICAgZWxUb1JlbSA9IFtlbFtpXV07XHJcbiAgICAgICAgd2lkdGggPSBjd2lkdGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vc2V0dGluZyB0aGUgd2lkdGggd2l0aCBtaW4gd2lkdGhcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChjd2lkdGggPT0gd2lkdGgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiBjdXJyZW50IGVsZW1lbnQgd2lkdGggaXMgZXF1YWwgdG8gcHJldmlvdXMgd2lkdGggdGhlbiBtb3JlIHRoYXQgb25lIGVsZW1lbnQgd291bGQgYmUgcmVtb3ZlZFxyXG4gICAgICAgIGVsVG9SZW0ucHVzaChlbFtpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxUb1JlbS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyBub3cgaXRlcmF0ZSBKVVNUIHRoZSBlbGVtZW50cyB0byByZW1vdmVcclxuICAgICAgZWxUb1JlbVtpXS5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIFwibm9uZVwiKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIGNyZWF0ZURpdmZvclRvdGFsRHVyYXJ0aW9uKCkge1xyXG4gICAgbGV0IHJvd0xhYmVscyA9IFtdO1xyXG4gICAgdGhpcy5yb3dFbGVtZW50cyA9IFtdO1xyXG4gICAgdmFyIGxhYmVscyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYWJlbHMnKTtcclxuICAgIHdoaWxlIChsYWJlbHMuZmlyc3RDaGlsZCkge1xyXG4gICAgICBsYWJlbHMucmVtb3ZlQ2hpbGQobGFiZWxzLmxhc3RDaGlsZCk7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudG90YWxDaGFydERhdGFNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgdmFyIHRlYW0gPSB0aGlzLnRvdGFsQ2hhcnREYXRhTWF0cml4W2ldWzBdO1xyXG4gICAgICByb3dMYWJlbHMucHVzaCh0ZWFtKTtcclxuICAgICAgdmFyIGxhYmVsID0gbGFiZWxzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcclxuICAgICBsYWJlbC5zdHlsZVsnYm9yZGVyLWJvdHRvbSddID0gJzFweCBzb2xpZCAjYjdiN2I3JztcclxuICAgICAgbGFiZWwuc3R5bGVbJ2ZvbnQtZmFtaWx5J10gPSAnQXJpYWwnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsnZm9udC1zaXplJ10gPSAnMTNweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWyd0ZXh0LWFsaWduJ10gPSAnbGVmdCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlWydwYWRkaW5nLWxlZnQnXSA9ICc4cHgnO1xyXG4gICAgICBsYWJlbC5zdHlsZVsncGFkZGluZy1yaWdodCddID0gJzhweCc7XHJcbiAgICAgIGxhYmVsLnN0eWxlLnBvc2l0aW9uID0gJ2luaGVyaXQnO1xyXG4gICAgICBpZiAoaSAlIDIpIHtcclxuICAgICAgICBsYWJlbC5zdHlsZVsnYmFja2dyb3VuZC1jb2xvciddID0gJyNlNmU2ZTYnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxhYmVsLnN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAnI2ZmZmZmZic7XHJcbiAgICAgIH1cclxuICAgICAgbGFiZWwuaW5uZXJIVE1MID0gdGVhbTtcclxuICAgICAgdGhpcy5yb3dFbGVtZW50cy5wdXNoKGxhYmVsKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2V0SGVpZ2h0b2ZEaXZmb3JUb3RhbER1cmFydGlvbigpIHtcclxuICAgXHJcbiAgICB0aGlzLkFsbHJvd0hlaWdodCA9IDA7XHJcbiAgICBjb25zdCBjaGFydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteVRpbWVMaW5lJyk7XHJcbiAgICBsZXQgcm93cyA9IGNoYXJ0RGl2LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdyZWN0Jyk7XHJcbiAgICBsZXQgcm93SW5kZXggPSAtMTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgcm93SW5kZXgrKztcclxuICAgICAgaWYgKHJvd0luZGV4IDwgdGhpcy5yb3dFbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgcm93SGVpZ2h0ID0gcGFyc2VGbG9hdChyb3dzW2ldLmdldEF0dHJpYnV0ZSgnaGVpZ2h0JykpICsgJ3B4JztcclxuICAgICAgICB0aGlzLkFsbHJvd0hlaWdodCArPSBwYXJzZUZsb2F0KHJvd3NbaV0uZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRDZWxsID0gdGhpcy5yb3dFbGVtZW50c1tyb3dJbmRleF07XHJcbiAgICAgICAgaWYgKGN1cnJlbnRDZWxsKSB7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5oZWlnaHQgPSByb3dIZWlnaHQ7XHJcbiAgICAgICAgICBjdXJyZW50Q2VsbC5zdHlsZS5saW5lSGVpZ2h0ID0gcm93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RSb3dEYXRhKGV2ZW50OiBhbnkpIHtcclxuICAgY29uc3QgeyByb3csIGNvbHVtbiB9ID0gZXZlbnQuc2VsZWN0aW9uWzBdOyBcclxuICAgaWYodGhpcy5pc0FsbFVzZXJzKXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5hbGx1c2VyTGlzdC5mb3JkdXJhdGlvblRhYmxlLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICAgIFxyXG4gICB9ZWxzZXtcclxuICAgIHRoaXMuc2VsZWN0ZWRVc2VyRGF0YSA9IHRoaXMucGRTZXJ2aWNlLmRhdGFGb3JEZXRhaWxlZFZpZXcodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLHRoaXMucmVzb3VyY2VEYXRhTGlzdCwgcm93KTtcclxuICBcclxuICAgIFxyXG4gICB9XHJcbiAgLy8gIGNvbnNvbGUubG9nKFwidGhpcy5zZWxlY3RlZFVzZXJEYXRhXCIsdGhpcy5zZWxlY3RlZFVzZXJEYXRhKTtcclxuICAgIHRoaXMucGRTZXJ2aWNlLmRldGFpbGVkdmlld0RhdGEubmV4dCh0aGlzLnNlbGVjdGVkVXNlckRhdGEpO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgLy8gYWxsdXNlckxpc3RcclxuICB9XHJcbiAgc2hvd0FsbFVzZXIoKSB7XHJcbiAgICB0aGlzLnBkU2VydmljZS5pc0FsbFVzZXJzLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmlzQWxsVXNlcnMgPSB0cnVlO1xyXG4gICAgaWYodGhpcy5pc1VzZXJXaXNlKXtcclxuICAgICAgdGhpcy51c2VyV2lzZUFsbERhdGEoKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmNsYXNzUm9vbVdpc2VBbGxEYXRhKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dDdXJyZW50VXNlcigpIHtcclxuICAgIHRoaXMuaXNBbGxVc2VycyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wZFNlcnZpY2UuaXNBbGxVc2Vycy5uZXh0KGZhbHNlKTtcclxuICAgIGlmKHRoaXMuaXNVc2VyV2lzZSl7XHJcbiAgICAgdGhpcy51c2VyV2lzZUN1cnJlbnREYXRhKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICB0aGlzLmNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuIHVzZXJXaXNlQ3VycmVudERhdGEoKXtcclxuIFxyXG4gICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLnBkU2VydmljZS51c2VyV2lzZUNoYXJ0RGF0YSgpO1xyXG4gIC8vICBjb25zb2xlLmxvZyhcImNoYXJ0RGF0YVVzZXJXaXNlXCIsY2hhcnREYXRhVXNlcldpc2UpO1xyXG4gICAgXHJcbiAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKHRoaXMuY3VycmVudGRhdGFMaXN0LnVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICB9XHJcbiAgIH0gIFxyXG4gfVxyXG4gdXNlcldpc2VBbGxEYXRhKCl7XHJcbiAgICBsZXQgY2hhcnREYXRhVXNlcldpc2UgPSB0aGlzLmFsbHVzZXJMaXN0LmZvckNoYXJ0RGF0YTtcclxuICAgIGlmKGNoYXJ0RGF0YVVzZXJXaXNlLmxlbmd0aD4wKXtcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNoYXJ0RGF0YVVzZXJXaXNlO1xyXG4gICAgXHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgICB0aGlzLmNhbHVsYXRlVG90YWxEdXJhdGlvbih0aGlzLmFsbHVzZXJMaXN0LmZvcmR1cmF0aW9uVGFibGUpO1xyXG4gICAgfVxyXG4gICBcclxuIH1cclxuIGNsYXNzUm9vbVdpc2VDdXJyZW50RGF0YSgpe1xyXG4gICBsZXQgY2xhc3NSb29tZGF0YSA9IHRoaXMucGRTZXJ2aWNlLmNsYXNzUm9vbVdpc2VDaGFydERhdGEoKTtcclxuICAvLyAgY29uc29sZS5sb2coXCJjbGFzc1Jvb21kYXRhXCIsY2xhc3NSb29tZGF0YSk7XHJcbiAgIGlmKGNsYXNzUm9vbWRhdGEgJiYgY2xhc3NSb29tZGF0YS5sZW5ndGg+MCl7XHJcbiAgICBcclxuICAgICBcclxuICAgIHRoaXMubXlDaGFydERhdGFNYXRyaXggPWNsYXNzUm9vbWRhdGE7ICAgIFxyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gICAgaWYodGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhLmxlbmd0aD4wKXtcclxuICAgICAgdGhpcy5jYWx1bGF0ZVRvdGFsRHVyYXRpb24odGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhKTtcclxuICAgIH1cclxuICAgfSBcclxuIH1cclxuIFxyXG4gY2xhc3NSb29tV2lzZUFsbERhdGEoKXtcclxuICAgbGV0IGFsbGNsYXNzUm9vbUxpc3QgPSB0aGlzLnBkU2VydmljZS5hbGxSb29tc0RhdGEoKTtcclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEgJiYgYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGEubGVuZ3RoID4gMCl7XHJcbiAgICB0aGlzLm15Q2hhcnREYXRhTWF0cml4ID0gYWxsY2xhc3NSb29tTGlzdC5mb3JDaGFydERhdGE7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgIH1cclxuICAgaWYoYWxsY2xhc3NSb29tTGlzdC5mb3JkdXJhdGlvblRhYmxlICYmIGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZS5sZW5ndGggPiAwKXtcclxuICAgIHRoaXMuY2FsdWxhdGVUb3RhbER1cmF0aW9uKGFsbGNsYXNzUm9vbUxpc3QuZm9yZHVyYXRpb25UYWJsZSk7XHJcbiAgIH1cclxuICAgXHJcbiB9XHJcblxyXG4gIGZpbmRDdXJyZW50VXNlckNvdW50KCl7XHJcbiAgICBsZXQgdXNlckNvbnNvbGVEYXRhID0gdGhpcy5jdXJyZW50ZGF0YUxpc3QudXNlckNvbnNvbGVEYXRhO1xyXG4gICBcclxuICAgIGxldCB1c2VyTmFtZUFycmF5ID0gbmV3IEFycmF5KCk7XHJcbiAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgY29uc3QgZWxlbWVudCA9IHVzZXJDb25zb2xlRGF0YVtpbmRleF0udXNlck5hbWU7XHJcbiAgICAgdXNlck5hbWVBcnJheS5wdXNoKGVsZW1lbnQpO1xyXG4gICB9XHJcbiAgICBsZXQgdW5pcXVlVXNlck5hbWUgPSBbLi4ubmV3IFNldCh1c2VyTmFtZUFycmF5KV07XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VycyA9IHVuaXF1ZVVzZXJOYW1lLmxlbmd0aDtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnbmdPbkRlc3Ryb3kgPj4nKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -356,12 +356,12 @@ export class PrincipalDashboardLibV2Service {
|
|
|
356
356
|
let dataTableforChart = new Array();
|
|
357
357
|
dataTableforChart = [];
|
|
358
358
|
if (this.userConsoleData) {
|
|
359
|
-
console.log("this.userConsoleData", this.userConsoleData);
|
|
360
359
|
for (let i = 0; i < this.userConsoleData.length; i++) {
|
|
361
360
|
let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
|
|
362
361
|
dataTableforChart.push(userData);
|
|
363
362
|
}
|
|
364
363
|
}
|
|
364
|
+
console.log("this.classRoomWiseChartData", dataTableforChart);
|
|
365
365
|
return dataTableforChart;
|
|
366
366
|
}
|
|
367
367
|
allUserChartData() {
|
|
@@ -424,20 +424,21 @@ export class PrincipalDashboardLibV2Service {
|
|
|
424
424
|
let inActiveClassRoom;
|
|
425
425
|
for (let i = 0; i < this.userConsoleData.length; i++) {
|
|
426
426
|
allRoomsDetails.push(this.userConsoleData[i]);
|
|
427
|
-
let userData = [this.userConsoleData[i].
|
|
427
|
+
let userData = [this.userConsoleData[i].terminalIP, this.userConsoleData[i].startTime, this.userConsoleData[i].endTime];
|
|
428
428
|
dataTableforChart.push(userData);
|
|
429
429
|
}
|
|
430
430
|
for (let i = 0; i < this.schoolTerminalData.length; i++) {
|
|
431
|
-
|
|
431
|
+
console.log("schoolTerminalData", this.schoolTerminalData);
|
|
432
|
+
inActiveClassRoom = this.schoolTerminalData[i].terminalKey;
|
|
432
433
|
myChartRowData = {
|
|
433
434
|
userId: "",
|
|
434
435
|
userName: "",
|
|
435
436
|
startTime: new Date(this.myEndTime),
|
|
436
437
|
endTime: new Date(this.myEndTime),
|
|
437
|
-
terminalIP:
|
|
438
|
+
terminalIP: inActiveClassRoom,
|
|
438
439
|
resourceMetauserConsoleData: [],
|
|
439
440
|
duration: 0,
|
|
440
|
-
terminalLocation:
|
|
441
|
+
terminalLocation: "",
|
|
441
442
|
userSubjects: ""
|
|
442
443
|
};
|
|
443
444
|
allRoomsDetails.push(myChartRowData);
|
|
@@ -668,4 +669,4 @@ PrincipalDashboardLibV2Service.decorators = [
|
|
|
668
669
|
},] }
|
|
669
670
|
];
|
|
670
671
|
PrincipalDashboardLibV2Service.ctorParameters = () => [];
|
|
671
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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Q0FBQzs7OztZQTNxQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2Uge1xyXG5wdWJsaWMgcmVzb3VyZU1ldGFEYXRhOmFueTtcclxucHVibGljIHVzZXJzTWV0YURhdGE6YW55O1xyXG5wdWJsaWMgc2Nob29sVGVybWluYWxEYXRhOmFueTtcclxucHVibGljIHVzZXJDb25zb2xlRGF0YTphbnk7XHJcblxyXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1Jlc291cmVNZXRhRGF0YVJlYWR5JCA9IHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcclxuXHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSQgPSB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuIHB1YmxpYyBteWNoYXJ0VHlwZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGFUeXBlOiBhbnkgPSAnJztcclxuICBwdWJsaWMgdXNlckFsbERhdGE6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyB1c2VyTWV0YWRhdGE6IGFueSA9IHt1c2VyRGV0YWlsczpbXSxyZXNvdXJjZURldGFpbHM6W119O1xyXG4gIHB1YmxpYyByZXNvdXJlTWV0YWRhdGEgPSBuZXcgQXJyYXkoKTtcclxuICBwdWJsaWMgdXNlckRldGFpbE9iamVjdDogYW55ID0ge307XHJcbiAgcHVibGljIHVzZXJsaXN0OmFueSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBteUVuZFRpbWUgOmFueTtcclxuIFxyXG4gIC8vZm9yIGNoYW5nZSBjaGFydCBUeXBlXHJcbiAgcHVibGljIGNoYXJ0VHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5teWNoYXJ0VHlwZSk7XHJcbiAgcHVibGljIGNoYXJ0VHlwZSQgPSB0aGlzLmNoYXJ0VHlwZS5hc09ic2VydmFibGUoKTtcclxuICAvL2ZvciBjaGFuZ2UgdXNlcldpc2UgVG8gY2xhc3NSb29tIHdpc2Ugb3IgdmljZSB2ZXJzYVxyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEkID0gdGhpcy5pc1VzZXJXaXNlX2RhdGEuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy8gZm9yIGFsbCB1c2VyIGFuZCBjdXJyZW50IHVzZXIgaW5mb3JtYXRpb25cclxuICBwdWJsaWMgaXNBbGxVc2VycyA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VybGlzdCk7XHJcbiAgcHVibGljIGlzQWxsVXNlcnMkID0gdGhpcy5pc0FsbFVzZXJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vZm9yIGdldCBkZXRhaWxzIG9mIHNlbGVjdGVkIHVzZXJcclxuICBwdWJsaWMgZGV0YWlsZWR2aWV3RGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VyTWV0YWRhdGEpO1xyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhJCA9IHRoaXMuZGV0YWlsZWR2aWV3RGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiBcclxuICBnZW5hcmF0ZVJlc291cnNlUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dChmYWxzZSk7XHJcbiAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgXHJcbiAgICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XHJcbiAgICAgICAgbGV0IHJlc291c2VJRDogYW55O1xyXG4gICAgICAgIGxldCB0aXRsZTogYW55O1xyXG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgICAgbGV0IGdyYWRlOiBhbnk7XHJcbiAgICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xyXG4gICAgICAgIGxldCB0eXBlOiBhbnk7XHJcbiAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGEgPSBkYXRhLnJlc291cmNlc01ldGFkYXRhLnJlc291cmNlTWV0YWRhdGE7XHJcbiAgICAgICBcclxuICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhIT0gdW5kZWZpbmVkICYmIHJlc291cmNlTWV0YWRhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGEubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vcmVzb3VzZUlEXHJcbiAgICAgICAgICAgIHJlc291c2VJRCA9IHJlc291cmNlTWV0YWRhdGFbaV0ucmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9zdWJqZWN0XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vZ3JhZGVcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vY2hhcHRlclxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVhY2hpbmdwb2ludFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90eXBlXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHR5cGUgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0eXBlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGl0bGVcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aXRsZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0ge1xyXG4gICAgICAgICAgICAgIHJlc291c2VJRDpyZXNvdXNlSUQsXHJcbiAgICAgICAgICAgICAgc3ViamVjdDpzdWJqZWN0LFxyXG4gICAgICAgICAgICAgIGdyYWRlOmdyYWRlLFxyXG4gICAgICAgICAgICAgIGNoYXB0ZXI6Y2hhcHRlcixcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50OnRlYWNoaW5ncG9pbnQsXHJcbiAgICAgICAgICAgICAgdHlwZTp0eXBlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOnRpdGxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5wdXNoKHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICAgICAgICAgICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAvLyB0aGlzLnJlc291cmVNZXRhRGF0YSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICB9XHJcbiAgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xyXG4gICAgbGV0IHVzZXJzTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgc2Nob29sVGVybWluYWxNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VyQ29uc29sZU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcclxuICAgICAgbGV0IHVzZXJDb25zb2xlID0gZGF0YS51c2Vyc0NvbnNvbGUudXNlckNvbnNvbGU7XHJcbiAgICAgIGxldCB1c2Vyc01ldGFkYXRhID0gZGF0YS51c2Vyc01ldGFkYXRhLnVzZXJNZXRhZGF0YTtcclxuICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsID0gZGF0YS5zY2hvb2xUZXJtaW5hbHMuc2Nob29sVGVybWluYWw7XHJcbiAgICAgIFxyXG4gICAgICBpZih1c2Vyc01ldGFkYXRhIT0gbnVsbCAmJiB1c2Vyc01ldGFkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XHJcbiAgICAgICAgICBsZXQgbGlzdE9mVXNlcjphbnkgPSB7fVxyXG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlcklkIT1cIlwiKSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9IHVzZXJzTWV0YWRhdGFbaV0udXNlcklkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICBsaXN0T2ZVc2VyID0ge1xyXG4gICAgICAgICAgICAgIHVzZXJJZDp1c2VySWQsIFxyXG4gICAgICAgICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLCBcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaChsaXN0T2ZVc2VyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgb2YgYWxsIHVzZXJzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJOYW1lID09PSBlbGVtZW50LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQucHVzaCh1c2Vyc01ldGFkYXRhTWF0cml4W2ldKTsgIC8vYXJyYXkgb2Ygc2FtZSBuYW1lIHVzZXJzXHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguc3BsaWNlKGksIDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoZSBzYW1lIG5hbWUgdXNlcnMgZnJvbSB1c2VybWV0YWRhdGFNYXRyaXhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBjb25zdCByYW5kb21OdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgLy8gcmFuZG9tTnVtYmVyLmlubmVySFRNTCA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lID0gdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSArIFwiIFwiICsgaTtcclxuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnB1c2godXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXSk7ICAgICAgICAgICAgLy9hZGRpbmcgc2FtZSBuYW1lIHVzZXJzIGluIHVzZXJtZXRhZGF0YU1hdHJpeCB3aXRoIHNvbWUgcmFuZG9tIGNoYXJhdG9yc1xyXG4gICAgICAgIHRoaXMudXNlcnNNZXRhRGF0YSA9IHVzZXJzTWV0YWRhdGFNYXRyaXg7XHJcbiAgICAgIH1cclxuICAgICAgaWYoc2Nob29sVGVybWluYWwgIT0gbnVsbCAmJiBzY2hvb2xUZXJtaW5hbC5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgc2Nob29sSWQ6YW55O1xyXG4gICAgICAgICAgbGV0IHRlcm1pbmFsS2V5OmFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbFR5cGU6YW55O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uOmFueTtcclxuICAgICAgICAgIGxldCBzY2hvb2xUZXJtaW5hbERhdGE6YW55ID0ge307XHJcbiAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc2Nob29sSWRcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsS2V5XHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbFR5cGVcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vbG9jYXRpb25cclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXRhZGF0YUpTT04gPSBKU09OLnBhcnNlKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gbWV0YWRhdGFKU09OLmxvY2F0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWV0YWRhdGFKU09OXCIsbG9jYXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xyXG4gICAgICAgICAgc2Nob29sSWQ6c2Nob29sSWQsXHJcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcclxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXHJcbiAgICAgICAgICBsb2NhdGlvbjpsb2NhdGlvblxyXG4gICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcclxuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRFM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOmFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6YW55O1xyXG4gICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlcklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlcklkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBzdGFydFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIER1cmF0aW9uXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcyA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VyQ29uc29sZVJlc291cmNlcyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgaWYgKHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2U7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUCBhbmQgdGVybWluYWxMb2NhdGlvblxyXG4gICAgICAgICBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXVwiLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpO1xyXG4gICAgICAgICAgICBpZiAodGVybWluYWxJUCA9PT0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpIHtcclxuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBcImxvY2F0aW9uXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgdXNlcklkOnVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZShzdGFydFRpbWUpLFxyXG4gICAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKGVuZFRpbWUpLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbElQOnRlcm1pbmFsSVAsXHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXHJcbiAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVzZXJDb25zb2xlTWF0cml4LnB1c2godXNlckRhdGEpO1xyXG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcclxuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfVxyXG4gIC8vIGNvbnNvbGUubG9nKHVzZXJzTWV0YWRhdGFNYXRyaXgsc2Nob29sVGVybWluYWxNYXRyaXgsdXNlckNvbnNvbGVNYXRyaXgpO1xyXG4gICAgIHJldHVybiB7XHJcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcclxuICAgICAgc2Nob29sVGVybWluYWxEYXRhOnNjaG9vbFRlcm1pbmFsTWF0cml4LFxyXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XHJcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgfVxyXG4gIGNsYXNzUm9vbVdpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgY29uc29sZS5sb2coXCJ0aGlzLnVzZXJDb25zb2xlRGF0YVwiLHRoaXMudXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udGVybWluYWxJUCx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5zdGFydFRpbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICAgIFxyXG4gIH1cclxuICBhbGxVc2VyQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID1uZXcgQXJyYXkoKTtcclxuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcclxuICAgICAgbGV0IGluQWN0aXZldXNlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICBsZXQgbXlJRDogYW55O1xyXG4gICAgICBsZXQgQWxsdXNlckRldGFpbHMgPW5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2luZGV4XSlcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG15SUQgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlcklkO1xyXG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XHJcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZDpteUlELFxyXG4gICAgICAgICAgdXNlck5hbWU6aW5BY3RpdmV1c2VyTmFtZSxcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICB9O1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcclxuICAgICAgICAgIGVuZFRpbWU6XCJcIixcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXHJcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaChteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7Zm9yQ2hhcnREYXRhOmRhdGFUYWJsZWZvckNoYXJ0LGZvcmR1cmF0aW9uVGFibGU6QWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0fVxyXG4gIH1cclxuICBhbGxSb29tc0RhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcclxuICAgIGFsbFJvb21zRGV0YWlscyA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpe1xyXG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcclxuICAgICAgbGV0IGluQWN0aXZlQ2xhc3NSb29tOiBhbnk7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbExvY2F0aW9uLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS5sb2NhdGlvbjtcclxuICAgICAgICBcclxuICAgICAgICBteUNoYXJ0Um93RGF0YSA9IHtcclxuICAgICAgICAgIHVzZXJJZDpcIlwiLFxyXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOmluQWN0aXZlQ2xhc3NSb29tLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOlwiXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFtpbkFjdGl2ZUNsYXNzUm9vbSxuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksbmV3IERhdGUodGhpcy5teUVuZFRpbWUpXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XHJcbiAgfVxyXG4gIGRhdGFGb3JUYWJsZVZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPHVzZXJDb25zb2xlTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVR5cGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gIFxyXG5cclxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lIFxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIGR1cmF0aW9uXHJcbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xyXG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcclxuICAgICBcclxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcblxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XHJcbiAgfVxyXG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcclxuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gW107XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XHJcbiAgXHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJTdWJqZWN0cztcclxuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXHJcbiAgICAgIGlmICgodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gdW5kZWZpbmVkJiZ1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgY3VycmVudERhdGUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0TW9udGgoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmR1cmF0aW9uKTtcclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXHJcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xyXG5cclxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxyXG4gICAgICBcclxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPXJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICAgXHJcbiAgICAgIFxyXG4gICAgcmV0dXJuIHt1c2VyRGV0YWlsczpkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXgscmVzb3VyY2VEZXRhaWxzOmRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXh9O1xyXG4gIH1cclxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxyXG4gICBnZXREaXNwbGF5dHlwZVZhbHVlKGtleTogYW55KSB7XHJcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInRwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUb3BpY1wiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIndoaXRlYm9hcmRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY01lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2Fzc2V0X3ByaW50XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXHJcbiAgICAgIH0sXHJcblxyXG4gICAgXTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBrZXk7XHJcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xyXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHZhbHVlLmRpc3BsYXk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
672
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaW5jaXBhbC1kYXNoYm9hcmQtbGliLXYyL3NyYy9saWIvcHJpbmNpcGFsLWRhc2hib2FyZC1saWItdjIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0vRCxNQUFNLE9BQU8sOEJBQThCO0lBbUN6QztRQTdCSywyQkFBc0IsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzdDLDRCQUF1QixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVyRSw0QkFBdUIsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQzlDLDZCQUF3QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV0RSxnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBQ3RCLGlCQUFZLEdBQVEsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLGVBQWUsRUFBQyxFQUFFLEVBQUMsQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7UUFDOUIscUJBQWdCLEdBQVEsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBTyxLQUFLLENBQUM7UUFHNUIsdUJBQXVCO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsZUFBVSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQscURBQXFEO1FBQzlDLG9CQUFlLEdB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Q0FBQzthQUM5QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFFdEIsQ0FBQzs7OztZQTlxQkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcmluY2lwYWxEYXNoYm9hcmRMaWJWMlNlcnZpY2Uge1xyXG5wdWJsaWMgcmVzb3VyZU1ldGFEYXRhOmFueTtcclxucHVibGljIHVzZXJzTWV0YURhdGE6YW55O1xyXG5wdWJsaWMgc2Nob29sVGVybWluYWxEYXRhOmFueTtcclxucHVibGljIHVzZXJDb25zb2xlRGF0YTphbnk7XHJcblxyXG5wdWJsaWMgaXNSZXNvdXJlTWV0YURhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1Jlc291cmVNZXRhRGF0YVJlYWR5JCA9IHRoaXMuaXNSZXNvdXJlTWV0YURhdGFSZWFkeS5hc09ic2VydmFibGUoKTtcclxuXHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XHJcbnB1YmxpYyBpc1VzZXJSZXFpdXJlZERhdGFSZWFkeSQgPSB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuIHB1YmxpYyBteWNoYXJ0VHlwZTogYW55ID0gJyc7XHJcbiAgcHVibGljIGRhdGFUeXBlOiBhbnkgPSAnJztcclxuICBwdWJsaWMgdXNlckFsbERhdGE6IGFueSA9ICcnO1xyXG4gIHB1YmxpYyB1c2VyTWV0YWRhdGE6IGFueSA9IHt1c2VyRGV0YWlsczpbXSxyZXNvdXJjZURldGFpbHM6W119O1xyXG4gIHB1YmxpYyByZXNvdXJlTWV0YWRhdGEgPSBuZXcgQXJyYXkoKTtcclxuICBwdWJsaWMgdXNlckRldGFpbE9iamVjdDogYW55ID0ge307XHJcbiAgcHVibGljIHVzZXJsaXN0OmFueSA9IGZhbHNlO1xyXG4gIHB1YmxpYyBteUVuZFRpbWUgOmFueTtcclxuIFxyXG4gIC8vZm9yIGNoYW5nZSBjaGFydCBUeXBlXHJcbiAgcHVibGljIGNoYXJ0VHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5teWNoYXJ0VHlwZSk7XHJcbiAgcHVibGljIGNoYXJ0VHlwZSQgPSB0aGlzLmNoYXJ0VHlwZS5hc09ic2VydmFibGUoKTtcclxuICAvL2ZvciBjaGFuZ2UgdXNlcldpc2UgVG8gY2xhc3NSb29tIHdpc2Ugb3IgdmljZSB2ZXJzYVxyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRydWUpO1xyXG4gIHB1YmxpYyBpc1VzZXJXaXNlX2RhdGEkID0gdGhpcy5pc1VzZXJXaXNlX2RhdGEuYXNPYnNlcnZhYmxlKCk7XHJcbiAgLy8gZm9yIGFsbCB1c2VyIGFuZCBjdXJyZW50IHVzZXIgaW5mb3JtYXRpb25cclxuICBwdWJsaWMgaXNBbGxVc2VycyA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VybGlzdCk7XHJcbiAgcHVibGljIGlzQWxsVXNlcnMkID0gdGhpcy5pc0FsbFVzZXJzLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIC8vZm9yIGdldCBkZXRhaWxzIG9mIHNlbGVjdGVkIHVzZXJcclxuICBwdWJsaWMgZGV0YWlsZWR2aWV3RGF0YSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy51c2VyTWV0YWRhdGEpO1xyXG4gIHB1YmxpYyBkZXRhaWxlZHZpZXdEYXRhJCA9IHRoaXMuZGV0YWlsZWR2aWV3RGF0YS5hc09ic2VydmFibGUoKTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiBcclxuICBnZW5hcmF0ZVJlc291cnNlUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzUmVzb3VyZU1ldGFEYXRhUmVhZHkubmV4dChmYWxzZSk7XHJcbiAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgXHJcbiAgICAgIGlmKGRhdGEgJiYgZGF0YSAhPT0gbnVsbCl7XHJcbiAgICAgICAgbGV0IHJlc291c2VJRDogYW55O1xyXG4gICAgICAgIGxldCB0aXRsZTogYW55O1xyXG4gICAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgICAgbGV0IGdyYWRlOiBhbnk7XHJcbiAgICAgICAgbGV0IGNoYXB0ZXI6IGFueTtcclxuICAgICAgICBsZXQgdGVhY2hpbmdwb2ludDogYW55O1xyXG4gICAgICAgIGxldCB0eXBlOiBhbnk7XHJcbiAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGEgPSBkYXRhLnJlc291cmNlc01ldGFkYXRhLnJlc291cmNlTWV0YWRhdGE7XHJcbiAgICAgICBcclxuICAgICAgICBpZihyZXNvdXJjZU1ldGFkYXRhIT0gdW5kZWZpbmVkICYmIHJlc291cmNlTWV0YWRhdGEubGVuZ3RoPjApIHtcclxuICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc291cmNlTWV0YWRhdGEubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vcmVzb3VzZUlEXHJcbiAgICAgICAgICAgIHJlc291c2VJRCA9IHJlc291cmNlTWV0YWRhdGFbaV0ucmVzb3VyY2VJZDtcclxuICAgICAgICAgICAgLy8tLS0tLS0tLS0tLy9zdWJqZWN0XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uc3ViamVjdC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhW2ldLnN1YmplY3QudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN1YmplY3QgPSAnJztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3ViamVjdCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vLS0tLS0tLS0tLS8vZ3JhZGVcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBncmFkZSA9IHJlc291cmNlTWV0YWRhdGFbaV0uZ3JhZGUudGl0bGU7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyYWRlID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vY2hhcHRlclxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlciAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0uY2hhcHRlci50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICBjaGFwdGVyID0gcmVzb3VyY2VNZXRhZGF0YVtpXS5jaGFwdGVyLnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2hhcHRlciA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGVhY2hpbmdwb2ludFxyXG4gICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFbaV0udGVhY2hpbmdwb2ludC50aXRsZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50ID0gcmVzb3VyY2VNZXRhZGF0YVtpXS50ZWFjaGluZ3BvaW50LnRpdGxlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRlYWNoaW5ncG9pbnQgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90eXBlXHJcbiAgICAgICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHR5cGUgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YVtpXS50eXBlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0eXBlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vdGl0bGVcclxuICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhW2ldLnRpdGxlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aXRsZSA9IHJlc291cmNlTWV0YWRhdGFbaV0udGl0bGU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aXRsZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0ge1xyXG4gICAgICAgICAgICAgIHJlc291c2VJRDpyZXNvdXNlSUQsXHJcbiAgICAgICAgICAgICAgc3ViamVjdDpzdWJqZWN0LFxyXG4gICAgICAgICAgICAgIGdyYWRlOmdyYWRlLFxyXG4gICAgICAgICAgICAgIGNoYXB0ZXI6Y2hhcHRlcixcclxuICAgICAgICAgICAgICB0ZWFjaGluZ3BvaW50OnRlYWNoaW5ncG9pbnQsXHJcbiAgICAgICAgICAgICAgdHlwZTp0eXBlLFxyXG4gICAgICAgICAgICAgIHRpdGxlOnRpdGxlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzb3VyY2VNZXRhZGF0YU1hdHJpeC5wdXNoKHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMucmVzb3VyZU1ldGFEYXRhID0gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICAgICAgICAgICAgdGhpcy5pc1Jlc291cmVNZXRhRGF0YVJlYWR5Lm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAvLyB0aGlzLnJlc291cmVNZXRhRGF0YSA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXg7XHJcbiAgICByZXR1cm4gcmVzb3VyY2VNZXRhZGF0YU1hdHJpeDtcclxuICB9XHJcbiAgZ2VuYXJhdGVVc2VyUmVxaXVyZWREYXRhKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICB0aGlzLmlzVXNlclJlcWl1cmVkRGF0YVJlYWR5Lm5leHQoZmFsc2UpO1xyXG4gICAgbGV0IHVzZXJzTWV0YWRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkID0gbmV3IEFycmF5KCk7XHJcbiAgICBsZXQgc2Nob29sVGVybWluYWxNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgIGxldCB1c2VyQ29uc29sZU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgaWYoZGF0YSAmJiBkYXRhICE9PSBudWxsKXtcclxuICAgICAgbGV0IHVzZXJDb25zb2xlID0gZGF0YS51c2Vyc0NvbnNvbGUudXNlckNvbnNvbGU7XHJcbiAgICAgIGxldCB1c2Vyc01ldGFkYXRhID0gZGF0YS51c2Vyc01ldGFkYXRhLnVzZXJNZXRhZGF0YTtcclxuICAgICAgbGV0IHNjaG9vbFRlcm1pbmFsID0gZGF0YS5zY2hvb2xUZXJtaW5hbHMuc2Nob29sVGVybWluYWw7XHJcbiAgICAgIFxyXG4gICAgICBpZih1c2Vyc01ldGFkYXRhIT0gbnVsbCAmJiB1c2Vyc01ldGFkYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IHVzZXJJZDogYW55O1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlclN1YmplY3RzOiBhbnk7XHJcbiAgICAgICAgICBsZXQgbGlzdE9mVXNlcjphbnkgPSB7fVxyXG4gICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlcklkIT1cIlwiKSB7XHJcbiAgICAgICAgICAgIHVzZXJJZCA9IHVzZXJzTWV0YWRhdGFbaV0udXNlcklkO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0uZnVsbE5hbWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YVtpXS5mdWxsTmFtZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuICBcclxuICAgICAgICAgICAgaWYgKHVzZXJzTWV0YWRhdGFbaV0udXNlclN1YmplY3RzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhW2ldLnVzZXJTdWJqZWN0cyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHVzZXJTdWJqZWN0cyA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICBsaXN0T2ZVc2VyID0ge1xyXG4gICAgICAgICAgICAgIHVzZXJJZDp1c2VySWQsIFxyXG4gICAgICAgICAgICAgIHVzZXJOYW1lOnVzZXJOYW1lLCBcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXgucHVzaChsaXN0T2ZVc2VyKTsgICAgICAgICAgICAgICAgICAgICAgLy8gYXJyYXkgb2YgYWxsIHVzZXJzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmICh1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJOYW1lID09PSBlbGVtZW50LnVzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgIHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQucHVzaCh1c2Vyc01ldGFkYXRhTWF0cml4W2ldKTsgIC8vYXJyYXkgb2Ygc2FtZSBuYW1lIHVzZXJzXHJcbiAgICAgICAgICAgIHVzZXJzTWV0YWRhdGFNYXRyaXguc3BsaWNlKGksIDEpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vZGVsZXRlIHRoZSBzYW1lIG5hbWUgdXNlcnMgZnJvbSB1c2VybWV0YWRhdGFNYXRyaXhcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJtZXRhZGF0YU1hdHJpeFVwZGF0ZWQubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAvLyBjb25zdCByYW5kb21OdW1iZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgLy8gcmFuZG9tTnVtYmVyLmlubmVySFRNTCA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICB1c2VybWV0YWRhdGFNYXRyaXhVcGRhdGVkW2ldLnVzZXJOYW1lID0gdXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXS51c2VyTmFtZSArIFwiIFwiICsgaTtcclxuICAgICAgICB1c2Vyc01ldGFkYXRhTWF0cml4LnB1c2godXNlcm1ldGFkYXRhTWF0cml4VXBkYXRlZFtpXSk7ICAgICAgICAgICAgLy9hZGRpbmcgc2FtZSBuYW1lIHVzZXJzIGluIHVzZXJtZXRhZGF0YU1hdHJpeCB3aXRoIHNvbWUgcmFuZG9tIGNoYXJhdG9yc1xyXG4gICAgICAgIHRoaXMudXNlcnNNZXRhRGF0YSA9IHVzZXJzTWV0YWRhdGFNYXRyaXg7XHJcbiAgICAgIH1cclxuICAgICAgaWYoc2Nob29sVGVybWluYWwgIT0gbnVsbCAmJiBzY2hvb2xUZXJtaW5hbC5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjaG9vbFRlcm1pbmFsLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgc2Nob29sSWQ6YW55O1xyXG4gICAgICAgICAgbGV0IHRlcm1pbmFsS2V5OmFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbFR5cGU6YW55O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uOmFueTtcclxuICAgICAgICAgIGxldCBzY2hvb2xUZXJtaW5hbERhdGE6YW55ID0ge307XHJcbiAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vc2Nob29sSWRcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5zY2hvb2xJZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gc2Nob29sVGVybWluYWxbaV0uc2Nob29sSWQgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNjaG9vbElkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3Rlcm1pbmFsS2V5XHJcbiAgICAgICAgICBpZiAoc2Nob29sVGVybWluYWxbaV0udGVybWluYWxLZXkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9IHNjaG9vbFRlcm1pbmFsW2ldLnRlcm1pbmFsS2V5IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbEtleSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy90ZXJtaW5hbFR5cGVcclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbFR5cGUgPSBzY2hvb2xUZXJtaW5hbFtpXS50ZXJtaW5hbFR5cGUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsVHlwZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vbG9jYXRpb25cclxuICAgICAgICAgIGlmIChzY2hvb2xUZXJtaW5hbFtpXS5tZXRhZGF0YSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXRhZGF0YUpTT04gPSBKU09OLnBhcnNlKHNjaG9vbFRlcm1pbmFsW2ldLm1ldGFkYXRhKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxvY2F0aW9uID0gbWV0YWRhdGFKU09OLmxvY2F0aW9uIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibWV0YWRhdGFKU09OXCIsbG9jYXRpb24pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRpb24gPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgc2Nob29sVGVybWluYWxEYXRhID0ge1xyXG4gICAgICAgICAgc2Nob29sSWQ6c2Nob29sSWQsXHJcbiAgICAgICAgICB0ZXJtaW5hbEtleTp0ZXJtaW5hbEtleSxcclxuICAgICAgICAgIHRlcm1pbmFsVHlwZTp0ZXJtaW5hbFR5cGUsXHJcbiAgICAgICAgICBsb2NhdGlvbjpsb2NhdGlvblxyXG4gICAgICAgIH07XHJcbiAgXHJcbiAgICAgICAgIHNjaG9vbFRlcm1pbmFsTWF0cml4LnB1c2goc2Nob29sVGVybWluYWxEYXRhKTtcclxuICAgICAgICAgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEgPSBzY2hvb2xUZXJtaW5hbE1hdHJpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYodXNlckNvbnNvbGUgIT1udWxsICYmIHVzZXJDb25zb2xlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB1c2VyQ29uc29sZS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgIGxldCB1c2VySWQ6IGFueTtcclxuICAgICAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgICAgIGxldCBlbmRUaW1lOiBhbnk7XHJcbiAgICAgICAgICBsZXQgZHVyYXRpb246IGFueTtcclxuICAgICAgICAgIGxldCBzZWxlY3RlZERhdGU6IGFueTtcclxuICAgICAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgICAgICBsZXQgdXNlckNvbnNvbGVSZXNvdXJjZXM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YWRhdGFJRFM6IGFueTtcclxuICAgICAgICAgICAgbGV0IHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICAgbGV0IHVzZXJOYW1lOmFueTtcclxuICAgICAgICAgIGxldCB1c2VyU3ViamVjdHM6YW55O1xyXG4gICAgICAgIGxldCB0ZXJtaW5hbExvY2F0aW9uOiBhbnk7XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vL3VzZXIgaURcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlcklkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdXNlcklkID0gdXNlckNvbnNvbGVbaW5kZXhdLnVzZXJJZCAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlcklkID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBzdGFydFRpbWUgXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnN0YXJ0VGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlW2luZGV4XS5zdGFydFRpbWUgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZSA9ICcnO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gZW5kVGltZSBcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZVtpbmRleF0uZW5kVGltZSAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgICB0aGlzLm15RW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRUaW1lID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyBEYXRlIFxyXG4gICAgICAgICAgaWYgKHVzZXJDb25zb2xlW2luZGV4XS5zZWxlY3RlZERhdGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSB1c2VyQ29uc29sZVtpbmRleF0uc2VsZWN0ZWREYXRlIC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIER1cmF0aW9uXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLmR1cmF0aW9uICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgZHVyYXRpb24gPSB1c2VyQ29uc29sZVtpbmRleF0uZHVyYXRpb24gLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGR1cmF0aW9uID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLy0tLS0tLS0tLS0vLyB0ZXJtaW5hbElQXHJcbiAgICAgICAgICBpZiAodXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0ZXJtaW5hbElQID0gdXNlckNvbnNvbGVbaW5kZXhdLnRlcm1pbmFsSVAgLy8gZ2V0IG5hbWUgb2YgdXNlciB3LnIudC4gSURcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRlcm1pbmFsSVAgPSAnJztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdXNlckNvbnNvbGVSZXNvdXJjZXNcclxuICAgICAgICAgIGlmICh1c2VyQ29uc29sZVtpbmRleF0udXNlckNvbnNvbGVSZXNvdXJjZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB1c2VyQ29uc29sZVJlc291cmNlcyA9IHVzZXJDb25zb2xlW2luZGV4XS51c2VyQ29uc29sZVJlc291cmNlcyAvLyBnZXQgbmFtZSBvZiB1c2VyIHcuci50LiBJRFxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdXNlckNvbnNvbGVSZXNvdXJjZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBpZih1c2VyQ29uc29sZVJlc291cmNlcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgaWYgKHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YSA9IHVzZXJDb25zb2xlUmVzb3VyY2VzLnVzZXJDb25zb2xlUmVzb3VyY2U7IC8vIGdldCBuYW1lIG9mIHVzZXIgdy5yLnQuIElEXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgIC8vLS0tLS0tLS0tLS8vIHVzZXJOYW1lIGFuZCB1c2VyU3ViamVjdHNcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdXNlcnNNZXRhZGF0YU1hdHJpeC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodXNlcklkID09PSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJJZCkge1xyXG4gICAgICAgICAgICAgIHVzZXJOYW1lID0gdXNlcnNNZXRhZGF0YU1hdHJpeFtpXS51c2VyTmFtZTtcclxuICAgICAgICAgICAgICB1c2VyU3ViamVjdHMgPSB1c2Vyc01ldGFkYXRhTWF0cml4W2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8tLS0tLS0tLS0tLy8gdGVybWluYWxJUCBhbmQgdGVybWluYWxMb2NhdGlvblxyXG4gICAgICAgICBcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nob29sVGVybWluYWxNYXRyaXgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXVwiLHNjaG9vbFRlcm1pbmFsTWF0cml4W2ldKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbE1hdHJpeFtpXS50ZXJtaW5hbEtleVwiLHRlcm1pbmFsSVAsc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpO1xyXG4gICAgICAgICAgICBpZiAodGVybWluYWxJUCA9PT0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0udGVybWluYWxLZXkpIHtcclxuICAgICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uID0gc2Nob29sVGVybWluYWxNYXRyaXhbaV0ubG9jYXRpb247XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIHRlcm1pbmFsTG9jYXRpb24gPSBcImxvY2F0aW9uXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCB1c2VyRGF0YSA9IHtcclxuICAgICAgICAgICAgdXNlcklkOnVzZXJJZCxcclxuICAgICAgICAgICAgdXNlck5hbWU6dXNlck5hbWUsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZShzdGFydFRpbWUpLFxyXG4gICAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKGVuZFRpbWUpLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbElQOnRlcm1pbmFsSVAsXHJcbiAgICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpyZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGEsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmR1cmF0aW9uLFxyXG4gICAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOnRlcm1pbmFsTG9jYXRpb24sXHJcbiAgICAgICAgICAgIHVzZXJTdWJqZWN0czp1c2VyU3ViamVjdHNcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHVzZXJDb25zb2xlTWF0cml4LnB1c2godXNlckRhdGEpO1xyXG4gICAgICAgICAgdGhpcy51c2VyQ29uc29sZURhdGEgPSB1c2VyQ29uc29sZU1hdHJpeDtcclxuICAgICAgICAgIHRoaXMuaXNVc2VyUmVxaXVyZWREYXRhUmVhZHkubmV4dCh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgfVxyXG4gICAgfVxyXG4gIC8vIGNvbnNvbGUubG9nKHVzZXJzTWV0YWRhdGFNYXRyaXgsc2Nob29sVGVybWluYWxNYXRyaXgsdXNlckNvbnNvbGVNYXRyaXgpO1xyXG4gICAgIHJldHVybiB7XHJcbiAgICAgIHVzZXJzTWV0YWRhdGE6dXNlcnNNZXRhZGF0YU1hdHJpeCxcclxuICAgICAgc2Nob29sVGVybWluYWxEYXRhOnNjaG9vbFRlcm1pbmFsTWF0cml4LFxyXG4gICAgICB1c2VyQ29uc29sZURhdGE6IHVzZXJDb25zb2xlTWF0cml4XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVzZXJXaXNlQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBpZih0aGlzLnVzZXJDb25zb2xlRGF0YSl7XHJcbiAgICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICBsZXQgdXNlckRhdGEgPSBbdGhpcy51c2VyQ29uc29sZURhdGFbaV0udXNlck5hbWUsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YVRhYmxlZm9yQ2hhcnQ7XHJcbiAgfVxyXG4gIGNsYXNzUm9vbVdpc2VDaGFydERhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGlmKHRoaXMudXNlckNvbnNvbGVEYXRhKXtcclxuICAgICAgXHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgbGV0IHVzZXJEYXRhID0gW3RoaXMudXNlckNvbnNvbGVEYXRhW2ldLnRlcm1pbmFsSVAsdGhpcy51c2VyQ29uc29sZURhdGFbaV0uc3RhcnRUaW1lLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLmVuZFRpbWVdO1xyXG4gICAgICAgIGRhdGFUYWJsZWZvckNoYXJ0LnB1c2godXNlckRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMuY2xhc3NSb29tV2lzZUNoYXJ0RGF0YVwiLGRhdGFUYWJsZWZvckNoYXJ0KTtcclxuICAgIHJldHVybiBkYXRhVGFibGVmb3JDaGFydDtcclxuICAgIFxyXG4gIH1cclxuICBhbGxVc2VyQ2hhcnREYXRhKCl7XHJcbiAgICBsZXQgZGF0YVRhYmxlZm9yQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgIGRhdGFUYWJsZWZvckNoYXJ0ID0gW107XHJcbiAgICBsZXQgQWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0ID1uZXcgQXJyYXkoKTtcclxuICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy51c2Vyc01ldGFEYXRhKXtcclxuICAgICAgbGV0IGluQWN0aXZldXNlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHVzZXJTdWJqZWN0czogYW55O1xyXG4gICAgICBsZXQgbXlJRDogYW55O1xyXG4gICAgICBsZXQgQWxsdXNlckRldGFpbHMgPW5ldyBBcnJheSgpO1xyXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy51c2VyQ29uc29sZURhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgQWxsdXNlckRldGFpbHMucHVzaCh0aGlzLnVzZXJDb25zb2xlRGF0YVtpbmRleF0pO1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzRm9yVGFibGVDaGFydC5wdXNoKHRoaXMudXNlckNvbnNvbGVEYXRhW2luZGV4XSlcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlcnNNZXRhRGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG15SUQgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlcklkO1xyXG4gICAgICAgIGluQWN0aXZldXNlck5hbWUgPSB0aGlzLnVzZXJzTWV0YURhdGFbaV0udXNlck5hbWU7XHJcbiAgICAgICAgdXNlclN1YmplY3RzID0gdGhpcy51c2Vyc01ldGFEYXRhW2ldLnVzZXJTdWJqZWN0cztcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHVzZXJJZDpteUlELFxyXG4gICAgICAgICAgdXNlck5hbWU6aW5BY3RpdmV1c2VyTmFtZSxcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOlwiMFwiLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOnVzZXJTdWJqZWN0c1xyXG4gICAgICB9O1xyXG4gICAgICAgIEFsbHVzZXJEZXRhaWxzLnB1c2gobXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IG15VGFibGVSb3d1c2VyQ29uc29sZURhdGEgPSB7XHJcbiAgICAgICAgICB1c2VySWQ6bXlJRCxcclxuICAgICAgICAgIHVzZXJOYW1lOmluQWN0aXZldXNlck5hbWUsXHJcbiAgICAgICAgICBzdGFydFRpbWU6XCJcIixcclxuICAgICAgICAgIGVuZFRpbWU6XCJcIixcclxuICAgICAgICAgIHRlcm1pbmFsSVA6XCJcIixcclxuICAgICAgICAgIHJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTpbXSxcclxuICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICB0ZXJtaW5hbExvY2F0aW9uOlwiXCIsXHJcbiAgICAgICAgICB1c2VyU3ViamVjdHM6dXNlclN1YmplY3RzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBBbGx1c2VyRGV0YWlsc0ZvclRhYmxlQ2hhcnQucHVzaChteVRhYmxlUm93dXNlckNvbnNvbGVEYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgQWxsdXNlckRldGFpbHMubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFtBbGx1c2VyRGV0YWlsc1tpXS51c2VyTmFtZSxBbGx1c2VyRGV0YWlsc1tpXS5zdGFydFRpbWUsQWxsdXNlckRldGFpbHNbaV0uZW5kVGltZV07XHJcbiAgICAgICAgZGF0YVRhYmxlZm9yQ2hhcnQucHVzaCh1c2VyRGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB7Zm9yQ2hhcnREYXRhOmRhdGFUYWJsZWZvckNoYXJ0LGZvcmR1cmF0aW9uVGFibGU6QWxsdXNlckRldGFpbHNGb3JUYWJsZUNoYXJ0fVxyXG4gIH1cclxuICBhbGxSb29tc0RhdGEoKXtcclxuICAgIGxldCBkYXRhVGFibGVmb3JDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgZGF0YVRhYmxlZm9yQ2hhcnQgPSBbXTtcclxuICAgIGxldCBhbGxSb29tc0RldGFpbHMgPSBuZXcgQXJyYXkoKTtcclxuICAgIGFsbFJvb21zRGV0YWlscyA9IFtdO1xyXG4gICAgaWYodGhpcy51c2VyQ29uc29sZURhdGEgJiYgdGhpcy5zY2hvb2xUZXJtaW5hbERhdGEpe1xyXG4gICAgICBsZXQgbXlDaGFydFJvd0RhdGE6IGFueT17fTtcclxuICAgICAgbGV0IGluQWN0aXZlQ2xhc3NSb29tOiBhbnk7XHJcbiAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJDb25zb2xlRGF0YS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgYWxsUm9vbXNEZXRhaWxzLnB1c2godGhpcy51c2VyQ29uc29sZURhdGFbaV0pO1xyXG4gICAgICAgIGxldCB1c2VyRGF0YSA9IFt0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS50ZXJtaW5hbElQLHRoaXMudXNlckNvbnNvbGVEYXRhW2ldLnN0YXJ0VGltZSx0aGlzLnVzZXJDb25zb2xlRGF0YVtpXS5lbmRUaW1lXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKHVzZXJEYXRhKTtcclxuICAgICAgfVxyXG4gICAgIFxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2Nob29sVGVybWluYWxEYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzY2hvb2xUZXJtaW5hbERhdGFcIix0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaW5BY3RpdmVDbGFzc1Jvb20gPSB0aGlzLnNjaG9vbFRlcm1pbmFsRGF0YVtpXS50ZXJtaW5hbEtleTtcclxuICAgICAgICBcclxuICAgICAgICBteUNoYXJ0Um93RGF0YSA9IHtcclxuICAgICAgICAgIHVzZXJJZDpcIlwiLFxyXG4gICAgICAgICAgdXNlck5hbWU6XCJcIixcclxuICAgICAgICAgIHN0YXJ0VGltZTpuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksXHJcbiAgICAgICAgICBlbmRUaW1lOm5ldyBEYXRlKHRoaXMubXlFbmRUaW1lKSxcclxuICAgICAgICAgIHRlcm1pbmFsSVA6aW5BY3RpdmVDbGFzc1Jvb20sXHJcbiAgICAgICAgICByZXNvdXJjZU1ldGF1c2VyQ29uc29sZURhdGE6W10sXHJcbiAgICAgICAgICBkdXJhdGlvbjowLFxyXG4gICAgICAgICAgdGVybWluYWxMb2NhdGlvbjpcIlwiLFxyXG4gICAgICAgICAgdXNlclN1YmplY3RzOlwiXCJcclxuICAgICAgICB9O1xyXG4gICAgICAgIGFsbFJvb21zRGV0YWlscy5wdXNoKG15Q2hhcnRSb3dEYXRhKTtcclxuICAgICAgICBsZXQgbXlDaGFydFJvd3VzZXJDb25zb2xlRGF0YSA9IFtpbkFjdGl2ZUNsYXNzUm9vbSxuZXcgRGF0ZSh0aGlzLm15RW5kVGltZSksbmV3IERhdGUodGhpcy5teUVuZFRpbWUpXTtcclxuICAgICAgICBkYXRhVGFibGVmb3JDaGFydC5wdXNoKG15Q2hhcnRSb3d1c2VyQ29uc29sZURhdGEpO1xyXG4gICAgICB9XHJcbiAgICAgXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2ZvckNoYXJ0RGF0YTpkYXRhVGFibGVmb3JDaGFydCxmb3JkdXJhdGlvblRhYmxlOmFsbFJvb21zRGV0YWlsc307XHJcbiAgfVxyXG4gIGRhdGFGb3JUYWJsZVZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnkpIHtcclxuICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IG5ldyBBcnJheSgpO1xyXG4gICAgbGV0IHJlc291cmNlTWF0cml4Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgIHJlc291cmNlTWF0cml4Rm9yVGFibGVDaGFydCA9IFtdO1xyXG4gICAgcmVzb3VyY2VNYXRyaXhGb3JFeGNlbCA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPHVzZXJDb25zb2xlTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZVR5cGU6IGFueTtcclxuICAgICAgbGV0IHJlc291cmNlVGl0bGU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoaW5ncG9pbnQ6IGFueTtcclxuICAgICAgbGV0IGxvY2F0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGVyTmFtZTogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlclN1YmplY3Q6IGFueTtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXNvdXJjZU1ldGFkYXRhSURzOiBhbnk7XHJcbiAgICAgIGxldCByZXNvdXJjZUFycmF5Rm9yRXhjZWwgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgbGV0IHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgIGxldCB1c2VyQ29uc29sZURhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAgdXNlckNvbnNvbGVEYXRhTWF0cml4ID0gW107XHJcbiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3Igc3ViamVjdCBhbmQgTmFtZVxyXG4gIFxyXG5cclxuICAgICAgdGVhY2hlclN1YmplY3QgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS51c2VyU3ViamVjdHM7XHJcbiAgICAgIHRlYWNoZXJOYW1lID0gdXNlckNvbnNvbGVNYXRyaXhbaV0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lIFxyXG4gICAgICBpZiAoKHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lICE9IFwiXCIpICYmICh1c2VyQ29uc29sZU1hdHJpeFtpXS5lbmRUaW1lICE9IHVuZGVmaW5lZCYmdXNlckNvbnNvbGVNYXRyaXhbaV0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgZW5kVGltZSA9IHVzZXJDb25zb2xlTWF0cml4W2ldLmVuZFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGN1cnJlbnREYXRlID0gdXNlckNvbnNvbGVNYXRyaXhbaV0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArICh1c2VyQ29uc29sZU1hdHJpeFtpXS5zdGFydFRpbWUuZ2V0TW9udGgoKSsxKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W2ldLnN0YXJ0VGltZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIGR1cmF0aW9uXHJcbiAgICAgIGR1cmF0aW9uID0gTWF0aC5mbG9vcih1c2VyQ29uc29sZU1hdHJpeFtpXS5kdXJhdGlvbik7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIFRlcm1pbmFsIGxvYWN0aW9uIGFuZCB0ZXJtaW5hbCBJUFxyXG4gICAgICBsb2NhdGlvbiA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtpXS50ZXJtaW5hbElQO1xyXG4gICAgICBsZXQgcm9vbURldGFpbCA9IGxvY2F0aW9uICsgJyAnICsgdGVybWluYWxJUDtcclxuICAgICBcclxuICAgICAgcmVzb3VyY2VNZXRhZGF0YUlEcyA9IHVzZXJDb25zb2xlTWF0cml4W2ldLnJlc291cmNlTWV0YXVzZXJDb25zb2xlRGF0YTtcclxuICAgICAgXHJcbiAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgc3ViamVjdCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBncmFkZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICBjaGFwdGVyID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHRlYWNoaW5ncG9pbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgQXNzZXN0RGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlVGl0bGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgcmVzb3VyY2VUeXBlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICBcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPSB0aGlzLmdldERpc3BsYXl0eXBlVmFsdWUocmVzb3VyY2VNZXRhZGF0YU1hdHJpeFtpXS50eXBlKSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcblxyXG4gICAgICAgICAgICAgIHJlc291cmNlQXJyYXlGb3JUYWJsZUNoYXJ0ID0gW3RlYWNoZXJOYW1lLHRlYWNoZXJTdWJqZWN0LGN1cnJlbnREYXRlLHN0YXJ0VGltZSxlbmRUaW1lLGR1cmF0aW9uLHJvb21EZXRhaWwsc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQucHVzaChyZXNvdXJjZUFycmF5Rm9yVGFibGVDaGFydCk7XHJcbiAgICAgICAgICAgICAgICB0ZWFjaGVyTmFtZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICBlbmRUaW1lID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgZHVyYXRpb24gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICByb29tRGV0YWlsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNvdXJjZU1hdHJpeEZvclRhYmxlQ2hhcnQ7XHJcbiAgfVxyXG4gIGRhdGFGb3JEZXRhaWxlZFZpZXcodXNlckNvbnNvbGVNYXRyaXg6IGFueSxyZXNvdXJjZU1ldGFkYXRhTWF0cml4OiBhbnksIHJvd0xhYmVsOiBhbnkpIHtcclxuICAgIGxldCBkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXggPSBuZXcgQXJyYXkoKTtcclxuICAgICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gW107XHJcbiAgICBsZXQgZGV0YWlsZWRWaWV3X1Jlc291cmNlRGF0YU1hdHJpeCA9IG5ldyBBcnJheSgpO1xyXG4gICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4ID0gW107XHJcbiAgXHJcbiAgICAgIGxldCBzdGFydFRpbWU6IGFueTtcclxuICAgICAgbGV0IGVuZFRpbWU6IGFueTtcclxuICAgICAgbGV0IGR1cmF0aW9uOiBhbnk7XHJcbiAgICAgIGxldCB0ZXJtaW5hbElQOiBhbnk7XHJcbiAgICAgIGxldCBzdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBncmFkZTogYW55O1xyXG4gICAgICBsZXQgY2hhcHRlcjogYW55O1xyXG4gICAgICBsZXQgQXNzZXN0RGV0YWlsOiBhbnk7XHJcbiAgICAgIGxldCB0ZWFjaGluZ3BvaW50OiBhbnk7XHJcbiAgICAgIGxldCBsb2NhdGlvbjogYW55O1xyXG4gICAgICBsZXQgdGVhY2hlck5hbWU6IGFueTtcclxuICAgICAgbGV0IHRlYWNoZXJTdWJqZWN0OiBhbnk7XHJcbiAgICAgIGxldCBjdXJyZW50RGF0ZTogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VNZXRhZGF0YUlEczogYW55O1xyXG4gICAgICBsZXQgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBuZXcgQXJyYXkoKTtcclxuICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbXTtcclxuICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBzdWJqZWN0IGFuZCBOYW1lXHJcbiAgICAgIHRlYWNoZXJTdWJqZWN0ID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnVzZXJTdWJqZWN0cztcclxuICAgICAgdGVhY2hlck5hbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udXNlck5hbWU7XHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0gZm9yIHN0YXJ0IFRpbWUgIGFuZCBFbmRUaW1lXHJcbiAgICAgIGlmICgodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSB1bmRlZmluZWQgJiYgdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnN0YXJ0VGltZSAhPSBcIlwiKSAmJiAodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmVuZFRpbWUgIT0gdW5kZWZpbmVkJiZ1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZSAhPSBcIlwiKSkge1xyXG4gICAgICAgIHN0YXJ0VGltZSA9IHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCdlbi1VUycsIHsgaG91cjEyOiB0cnVlIH0pO1xyXG4gICAgICAgIGVuZFRpbWUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uZW5kVGltZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLVVTJywgeyBob3VyMTI6IHRydWUgfSk7XHJcbiAgICAgICAgY3VycmVudERhdGUgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0uc3RhcnRUaW1lLmdldERhdGUoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0TW9udGgoKSArICcvJyArIHVzZXJDb25zb2xlTWF0cml4W3Jvd0xhYmVsXS5zdGFydFRpbWUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgfVxyXG4gICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tIGZvciBkdXJhdGlvblxyXG4gICAgICBkdXJhdGlvbiA9IE1hdGguZmxvb3IodXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLmR1cmF0aW9uKTtcclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLSBmb3IgVGVybWluYWwgbG9hY3Rpb24gYW5kIHRlcm1pbmFsIElQXHJcbiAgICAgIGxvY2F0aW9uID0gdXNlckNvbnNvbGVNYXRyaXhbcm93TGFiZWxdLnRlcm1pbmFsTG9jYXRpb247XHJcbiAgICAgIHRlcm1pbmFsSVAgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0udGVybWluYWxJUDtcclxuICAgICAgbGV0IHJvb21EZXRhaWwgPSBsb2NhdGlvbiArICcgJyArIHRlcm1pbmFsSVA7XHJcbiAgICAgIHJlc291cmNlTWV0YWRhdGFJRHMgPSB1c2VyQ29uc29sZU1hdHJpeFtyb3dMYWJlbF0ucmVzb3VyY2VNZXRhdXNlckNvbnNvbGVEYXRhO1xyXG5cclxuICAgICAgZGV0YWlsZWRWaWV3X1VzZXJEYXRhTWF0cml4ID0gIFt0ZWFjaGVyTmFtZSxzdGFydFRpbWUsdGVhY2hlclN1YmplY3QsZW5kVGltZSxyb29tRGV0YWlsXVxyXG4gICAgICBcclxuICAgICAgaWYgKHJlc291cmNlTWV0YWRhdGFJRHMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBzdWJqZWN0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGdyYWRlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNoYXB0ZXIgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGVhY2hpbmdwb2ludCA9IHVuZGVmaW5lZDtcclxuICAgICAgICBBc3Nlc3REZXRhaWwgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgLy8gcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAvLyBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAgLy9yZXNvdXJjZU1ldGFkYXRhTWF0cml4ID0gW3Jlc291c2VJRCxzdWJqZWN0LGdyYWRlLGNoYXB0ZXIsdGVhY2hpbmdwb2ludCx0eXBlLHRpdGxlXVxyXG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcmVzb3VyY2VNZXRhZGF0YUlEcy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNvdXJjZU1ldGFkYXRhTWF0cml4Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZU1ldGFkYXRhSURzW2tdID09PSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnJlc291c2VJRCkge1xyXG4gICAgICAgICAgICAgIHN1YmplY3QgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLnN1YmplY3Q7XHJcbiAgICAgICAgICAgICAgZ3JhZGUgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmdyYWRlO1xyXG4gICAgICAgICAgICAgIGNoYXB0ZXIgPSByZXNvdXJjZU1ldGFkYXRhTWF0cml4W2ldLmNoYXB0ZXI7XHJcbiAgICAgICAgICAgICAgdGVhY2hpbmdwb2ludCA9IHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGVhY2hpbmdwb2ludDtcclxuICAgICAgICAgICAgICBBc3Nlc3REZXRhaWwgPXJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udHlwZSArIFwiOiBcIiArIHJlc291cmNlTWV0YWRhdGFNYXRyaXhbaV0udGl0bGU7XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgcmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQgPSBbc3ViamVjdCxncmFkZSxjaGFwdGVyLHRlYWNoaW5ncG9pbnQsQXNzZXN0RGV0YWlsXTtcclxuICAgICAgICAgICAgICBkZXRhaWxlZFZpZXdfUmVzb3VyY2VEYXRhTWF0cml4LnB1c2gocmVzb3VyY2VBcnJheUZvclRhYmxlQ2hhcnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9ICAgXHJcbiAgICAgIFxyXG4gICAgcmV0dXJuIHt1c2VyRGV0YWlsczpkZXRhaWxlZFZpZXdfVXNlckRhdGFNYXRyaXgscmVzb3VyY2VEZXRhaWxzOmRldGFpbGVkVmlld19SZXNvdXJjZURhdGFNYXRyaXh9O1xyXG4gIH1cclxuICAgLy8gVG8gR0VUIERJU1BMQVkgVFlQRVxyXG4gICBnZXREaXNwbGF5dHlwZVZhbHVlKGtleTogYW55KSB7XHJcbiAgICBsZXQgYXNzZXRUeXBlQ29uZmlnID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiTWVkaWFcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJhc3NldF9wcmludFwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJxdWl6XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJRdWl6XCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwicXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcIlF1ZXN0aW9uXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2hhcHRlclwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiQ2hhcHRlclwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInRwXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJUb3BpY1wiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcIndoaXRlYm9hcmRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldoaXRlYm9hcmRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJ3aWRnZXRcIixcclxuICAgICAgICBkaXNwbGF5OiBcIldpZGdldFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhc3NldF9tZWRpYVwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY01lZGlhXCJcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2Fzc2V0X3ByaW50XCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJjUHJpbnRcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVpelwiLFxyXG4gICAgICAgIGRpc3BsYXk6IFwiY1F1aXpcIlxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogXCJjcXVlc3Rpb25cIixcclxuICAgICAgICBkaXNwbGF5OiBcImNRdWVzdGlvblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcImltYWdlXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJJbWFnZVwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiBcInZpZGVvXCIsXHJcbiAgICAgICAgZGlzcGxheTogXCJWaWRlb1wiXHJcbiAgICAgIH0sXHJcblxyXG4gICAgXTtcclxuICAgIGxldCBkaXNwbGF5VmFsdWUgPSBrZXk7XHJcbiAgICBhc3NldFR5cGVDb25maWcuZm9yRWFjaCgodmFsdWUpID0+IHtcclxuICAgICAgaWYgKHZhbHVlLnR5cGUgPT09IGtleSkge1xyXG4gICAgICAgIGRpc3BsYXlWYWx1ZSA9IHZhbHVlLmRpc3BsYXk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpc3BsYXlWYWx1ZTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
|