fabrikantencore 2.11.8 → 2.11.9

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.
@@ -14,8 +14,8 @@ class BeheerInlogComponent {
14
14
  authenticationService;
15
15
  router;
16
16
  securityApiClient;
17
- Username = "Configurator";
18
- Password = "Wachtwoord";
17
+ Username = "";
18
+ Password = "";
19
19
  Message = "";
20
20
  LoginIPResponseModel;
21
21
  constructor(authenticationService, router, securityApiClient) {
@@ -51,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
51
51
  type: Component,
52
52
  args: [{ selector: 'app-beheer-inlog', encapsulation: ViewEncapsulation.None, template: "\r\n<div class=\"container\">\r\n <div class=\"inlogdialog\">\r\n <mat-card>\r\n <mat-card-content>\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Gebruikersnaam</mat-label>\r\n <input type=\"text\" [(ngModel)]=\"Username\" matInput value=\"\" (keyup.enter)=\"Login()\">\r\n </mat-form-field>\r\n </div>\r\n <div>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Wachtwoord</mat-label>\r\n <input type=\"password\" [(ngModel)]=\"Password\" matInput value=\"\" (keyup.enter)=\"Login()\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"button-bar\">\r\n <span *ngIf=\"authenticationService.LoadingLogin\">\r\n <app-fab-loader class=\"loader\"></app-fab-loader>\r\n <br />\r\n <br />\r\n <br />\r\n </span>\r\n\r\n <ng-container *ngIf=\"!authenticationService.LoadingLogin\">\r\n <div class=\"error-box\">\r\n {{ Message }}\r\n </div>\r\n <button mat-raised-button (click)=\"Login()\" class=\"login-button\">\r\n <span >\r\n Login\r\n </span>\r\n </button>\r\n </ng-container>\r\n </div>\r\n <div>\r\n IP Address: {{ LoginIPResponseModel?.ipAddress }}\r\n </div>\r\n <div>\r\n FabrikantenCore: {{ LoginIPResponseModel?.fabrikantenCoreVersion }}\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n \r\n </div>\r\n</div>\r\n", styles: ["app-beheer-inlog .container{width:100%;height:100%;display:flex;justify-content:center;align-items:center}app-beheer-inlog .error-box{font-size:12px;text-align:center;color:red;padding:3px}app-beheer-inlog .login-button{width:70px}app-beheer-inlog .loader{height:20px;top:6px;position:relative}app-beheer-inlog .inlogdialog{width:300px}app-beheer-inlog .button-bar{text-align:right}app-beheer-inlog mat-form-field{width:100%}body{background:url(/assets/bouwconnect-achtergrond.png) fixed}\n"] }]
53
53
  }], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.Router }, { type: i3.SecurityApiClient }]; } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWlubG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLWlubG9nL2JlaGVlci1pbmxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1pbmxvZy9iZWhlZXItaW5sb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBS3JFLE1BTWEsb0JBQW9CO0lBU1o7SUFBcUQ7SUFBd0I7SUFQekYsUUFBUSxHQUFXLGNBQWMsQ0FBQztJQUNsQyxRQUFRLEdBQVcsWUFBWSxDQUFDO0lBRWhDLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFckIsb0JBQW9CLENBQXVCO0lBRWxELFlBQW1CLHFCQUE0QyxFQUFTLE1BQWMsRUFBVSxpQkFBb0M7UUFBakgsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRWxJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCO1FBQ3pDLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNyRDthQUNJO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCLEVBQUUsT0FBZTtRQUMxRCxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO3VHQW5DVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix3RENYakMsd2xEQWdEQTs7U0RyQ2Esb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9naW5JUFJlc3BvbnNlTW9kZWwsIFNlY3VyaXR5QXBpQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLWlubG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWlubG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItaW5sb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJJbmxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBVc2VybmFtZTogc3RyaW5nID0gXCJDb25maWd1cmF0b3JcIjtcclxuICBwdWJsaWMgUGFzc3dvcmQ6IHN0cmluZyA9IFwiV2FjaHR3b29yZFwiO1xyXG5cclxuICBwdWJsaWMgTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIExvZ2luSVBSZXNwb25zZU1vZGVsOiBMb2dpbklQUmVzcG9uc2VNb2RlbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgc2VjdXJpdHlBcGlDbGllbnQ6IFNlY3VyaXR5QXBpQ2xpZW50KSB7XHJcblxyXG4gICAgdGhpcy5zZWN1cml0eUFwaUNsaWVudC5nZXRMb2dpbklQUmVzcG9uc2VNb2RlbCgpLnN1YnNjcmliZSgobW9kZWw6IExvZ2luSVBSZXNwb25zZU1vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9naW5JUFJlc3BvbnNlTW9kZWwgPSBtb2RlbDtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9naW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLk1lc3NhZ2UgPSBcIlwiO1xyXG4gICAgdGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UubG9naW4odGhpcy5Vc2VybmFtZSwgdGhpcy5QYXNzd29yZCwgdGhpcywgdGhpcy5TdWNjZXNzLCB0aGlzLkZhaWx1cmUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFN1Y2Nlc3MoYmVoZWVyOiBCZWhlZXJJbmxvZ0NvbXBvbmVudCk6IHZvaWQge1xyXG4gICAgaWYgKGJlaGVlci5hdXRoZW50aWNhdGlvblNlcnZpY2UuQ29uZmlndXJhdG9yUmlnaHRzKCkpIHtcclxuICAgICAgYmVoZWVyLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYmVoZWVyL2NvbmZpZ3VyYXRvcicpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGJlaGVlci5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2JlaGVlcicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEZhaWx1cmUoYmVoZWVyOiBCZWhlZXJJbmxvZ0NvbXBvbmVudCwgbWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBiZWhlZXIuTWVzc2FnZSA9IG1lc3NhZ2U7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcbiAgPGRpdiBjbGFzcz1cImlubG9nZGlhbG9nXCI+XHJcbiAgICA8bWF0LWNhcmQ+XHJcbiAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5HZWJydWlrZXJzbmFhbTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIlVzZXJuYW1lXCIgbWF0SW5wdXQgdmFsdWU9XCJcIiAoa2V5dXAuZW50ZXIpPVwiTG9naW4oKVwiPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+V2FjaHR3b29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJQYXNzd29yZFwiIG1hdElucHV0IHZhbHVlPVwiXCIgKGtleXVwLmVudGVyKT1cIkxvZ2luKClcIj5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tYmFyXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImF1dGhlbnRpY2F0aW9uU2VydmljZS5Mb2FkaW5nTG9naW5cIj5cclxuICAgICAgICAgICAgPGFwcC1mYWItbG9hZGVyIGNsYXNzPVwibG9hZGVyXCI+PC9hcHAtZmFiLWxvYWRlcj5cclxuICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWF1dGhlbnRpY2F0aW9uU2VydmljZS5Mb2FkaW5nTG9naW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVycm9yLWJveFwiPlxyXG4gICAgICAgICAgICAgIHt7IE1lc3NhZ2UgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkxvZ2luKClcIiBjbGFzcz1cImxvZ2luLWJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuID5cclxuICAgICAgICAgICAgICAgIExvZ2luXHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICBJUCBBZGRyZXNzOiB7eyBMb2dpbklQUmVzcG9uc2VNb2RlbD8uaXBBZGRyZXNzIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIEZhYnJpa2FudGVuQ29yZToge3sgTG9naW5JUFJlc3BvbnNlTW9kZWw/LmZhYnJpa2FudGVuQ29yZVZlcnNpb24gfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICAgIFxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWlubG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLWlubG9nL2JlaGVlci1pbmxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1pbmxvZy9iZWhlZXItaW5sb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBS3JFLE1BTWEsb0JBQW9CO0lBU1o7SUFBcUQ7SUFBd0I7SUFQekYsUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUN0QixRQUFRLEdBQVcsRUFBRSxDQUFDO0lBRXRCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFckIsb0JBQW9CLENBQXVCO0lBRWxELFlBQW1CLHFCQUE0QyxFQUFTLE1BQWMsRUFBVSxpQkFBb0M7UUFBakgsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRWxJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQTJCLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCO1FBQ3pDLElBQUksTUFBTSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztTQUNyRDthQUNJO1lBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQTRCLEVBQUUsT0FBZTtRQUMxRCxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO3VHQW5DVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix3RENYakMsd2xEQWdEQTs7U0RyQ2Esb0JBQW9COzJGQUFwQixvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGlCQUdiLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTG9naW5JUFJlc3BvbnNlTW9kZWwsIFNlY3VyaXR5QXBpQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi8uLi8uLi8uLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmVoZWVyLWlubG9nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWlubG9nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItaW5sb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJJbmxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHB1YmxpYyBVc2VybmFtZTogc3RyaW5nID0gXCJcIjtcclxuICBwdWJsaWMgUGFzc3dvcmQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIHB1YmxpYyBNZXNzYWdlOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBwdWJsaWMgTG9naW5JUFJlc3BvbnNlTW9kZWw6IExvZ2luSVBSZXNwb25zZU1vZGVsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBzZWN1cml0eUFwaUNsaWVudDogU2VjdXJpdHlBcGlDbGllbnQpIHtcclxuXHJcbiAgICB0aGlzLnNlY3VyaXR5QXBpQ2xpZW50LmdldExvZ2luSVBSZXNwb25zZU1vZGVsKCkuc3Vic2NyaWJlKChtb2RlbDogTG9naW5JUFJlc3BvbnNlTW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5Mb2dpbklQUmVzcG9uc2VNb2RlbCA9IG1vZGVsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBMb2dpbigpOiB2b2lkIHtcclxuICAgIHRoaXMuTWVzc2FnZSA9IFwiXCI7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dpbih0aGlzLlVzZXJuYW1lLCB0aGlzLlBhc3N3b3JkLCB0aGlzLCB0aGlzLlN1Y2Nlc3MsIHRoaXMuRmFpbHVyZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU3VjY2VzcyhiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50KTogdm9pZCB7XHJcbiAgICBpZiAoYmVoZWVyLmF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKSkge1xyXG4gICAgICBiZWhlZXIucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9iZWhlZXIvY29uZmlndXJhdG9yJyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgYmVoZWVyLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYmVoZWVyJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRmFpbHVyZShiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50LCBtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGJlaGVlci5NZXNzYWdlID0gbWVzc2FnZTtcclxuICB9XHJcbn1cclxuIiwiXHJcbjxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5sb2dkaWFsb2dcIj5cclxuICAgIDxtYXQtY2FyZD5cclxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkdlYnJ1aWtlcnNuYWFtPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiVXNlcm5hbWVcIiBtYXRJbnB1dCB2YWx1ZT1cIlwiIChrZXl1cC5lbnRlcik9XCJMb2dpbigpXCI+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5XYWNodHdvb3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cIlBhc3N3b3JkXCIgbWF0SW5wdXQgdmFsdWU9XCJcIiAoa2V5dXAuZW50ZXIpPVwiTG9naW4oKVwiPlxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1iYXJcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXV0aGVudGljYXRpb25TZXJ2aWNlLkxvYWRpbmdMb2dpblwiPlxyXG4gICAgICAgICAgICA8YXBwLWZhYi1sb2FkZXIgY2xhc3M9XCJsb2FkZXJcIj48L2FwcC1mYWItbG9hZGVyPlxyXG4gICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXV0aGVudGljYXRpb25TZXJ2aWNlLkxvYWRpbmdMb2dpblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXJyb3ItYm94XCI+XHJcbiAgICAgICAgICAgICAge3sgTWVzc2FnZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiTG9naW4oKVwiIGNsYXNzPVwibG9naW4tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gPlxyXG4gICAgICAgICAgICAgICAgTG9naW5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIElQIEFkZHJlc3M6IHt7IExvZ2luSVBSZXNwb25zZU1vZGVsPy5pcEFkZHJlc3MgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgRmFicmlrYW50ZW5Db3JlOiB7eyBMb2dpbklQUmVzcG9uc2VNb2RlbD8uZmFicmlrYW50ZW5Db3JlVmVyc2lvbiB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICA8L21hdC1jYXJkPlxyXG4gICAgXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -149,13 +149,13 @@ class BeheerProjectComponent {
149
149
  }
150
150
  }
151
151
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerProjectComponent, deps: [{ token: i1.ConfiguratorApiClient }, { token: i1.FormApiClient }, { token: i2.TranslateService }, { token: i3.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerProjectComponent, selector: "app-beheer-project", inputs: { input: "input" }, ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i10.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i11.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", inputs: ["input"] }], encapsulation: i0.ViewEncapsulation.None });
152
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: BeheerProjectComponent, selector: "app-beheer-project", inputs: { input: "input" }, ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Unique Code</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.uniqueCode }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i10.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }, { kind: "component", type: i11.BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", inputs: ["input"] }], encapsulation: i0.ViewEncapsulation.None });
153
153
  }
154
154
  export { BeheerProjectComponent };
155
155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: BeheerProjectComponent, decorators: [{
156
156
  type: Component,
157
- args: [{ selector: 'app-beheer-project', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"] }]
157
+ args: [{ selector: 'app-beheer-project', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\" style=\"display: flex;\">\n <div style=\"width: 50%;\">\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\n <mat-label>Name</mat-label>\n <input matInput type=\"text\" [(ngModel)]=\"ProjectViewModel.name\">\n </mat-form-field>\n\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n </div>\n <div class=\"configurations-list\">\n <div *ngIf=\"BCBProductInstanceViewModel == null\">\n <b>Configuratie's</b>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Unique Code</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let instance of ProjectViewModel.instances\">\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.id }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">{{ instance.uniqueCode }}</td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, instance.productId) }}\n </td>\n <td class=\"selectable\" (click)=\"Select(instance)\">\n {{ instance.dateTimeModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"Delete(instance)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n </div>\n\n <div *ngIf=\"BCBProductInstanceViewModel != null\">\n <app-beheer-bcb-instance [input]=\"BCBProductInstanceViewModel\"></app-beheer-bcb-instance>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"Select(null)\">\n Terug\n </button>\n </div>\n </div>\n </div>\n</div>\n<br />\n<br />\n<button mat-raised-button (click)=\"Save()\">\n Save\n</button>\n<br />\n<br />\n", styles: ["app-beheer-project .form-button-row{display:none}app-beheer-project .configurations-list{width:50%;padding:10px}app-beheer-project .selectable{cursor:pointer}\n"] }]
158
158
  }], ctorParameters: function () { return [{ type: i1.ConfiguratorApiClient }, { type: i1.FormApiClient }, { type: i2.TranslateService }, { type: i3.AuthenticationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { input: [{
159
159
  type: Input
160
160
  }] } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2plY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvamVjdC9iZWhlZXItcHJvamVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1wcm9qZWN0L2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQW9GLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBeUIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJdlgsTUFNYSxzQkFBc0I7SUFpQ2I7SUFDVjtJQUNEO0lBQ0E7SUFDQTtJQW5DRixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsZ0JBQWdCLENBQW1CO0lBQ25DLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFaEMsd0JBQXdCLENBQTJCO0lBQ25ELFdBQVcsR0FBWSxJQUFJLENBQUM7SUFFNUIsMkJBQTJCLEdBQXVDLElBQUksQ0FBQztJQUU5RSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFhLEtBQUssQ0FBQyxLQUF1QjtRQUN4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QUksSUFBSSxFQUFFO29DQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3Q0FFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3Q0FFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFOzRDQUVsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnREFDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7b0RBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpREFDdEM7NkNBQ0Y7eUNBRUY7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzt1R0FyTFUsc0JBQXNCOzJGQUF0QixzQkFBc0Isc0ZDWG5DLHUrREE0REE7O1NEakRhLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOzJPQXdCeEIsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIFByb2plY3RWaWV3TW9kZWwsIEZvcm1BcGlDbGllbnQsIENvbmZpZ3VyYXRvckFwaUNsaWVudCwgU2F2ZVByb2plY3RSZXF1ZXN0TW9kZWwsIExvZ2luUmVzcG9uc2VNb2RlbCwgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsLCBGb3JtVHlwZSwgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsLCBGb3JtSW5zdGFuY2VWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnksIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCwgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1wcm9qZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXByb2plY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJQcm9qZWN0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgSW5zdGFuY2VMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbDtcbiAgcHVibGljIExvYWRpbmdJbnN0YW5jZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbDogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsO1xuICBwdWJsaWMgTG9hZGluZ0Zvcm06IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHB1YmxpYyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWw6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG5cbiAgQElucHV0KCkgc2V0IGlucHV0KHZhbHVlOiBQcm9qZWN0Vmlld01vZGVsKSB7XG4gICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdmFsdWU7XG4gICAgdGhpcy5JbnN0YW5jZUxvYWRlZCA9IHRydWU7XG5cbiAgICB0aGlzLkxvYWRJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ0Zvcm0gfHwgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgfHwgIXRoaXMuSW5zdGFuY2VMb2FkZWQ7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGb3JtQXBpQ2xpZW50OiBGb3JtQXBpQ2xpZW50LFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cbiAgICB0aGlzLkxvYWRGb3JtKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3QoaW5zdGFuY2U6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID0gaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuICAgICAgLy90aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgIHJlcXVlc3QuYmNiSW5zdGFuY2VJZCA9IGluc3RhbmNlLmlkO1xyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZGVsZXRlSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL3RoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNbaV0uaWQgPT0gaW5zdGFuY2UuaWQpIHtcclxuICAgICAgICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICAvL3RoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgdmFyIG1vZGVsID0gbmV3IFNhdmVQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgIG1vZGVsLnByb2plY3RWaWV3TW9kZWwgPSB0aGlzLlByb2plY3RWaWV3TW9kZWw7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5zYXZlUHJvamVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5TYXZlRm9ybSgpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHVibGljIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRm9ybUxvYWRlZCAmJiB0aGlzLkluc3RhbmNlTG9hZGVkKSB7XG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pZDtcbiAgICAgIHJlcXVlc3QuZm9ybUlkID0gdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5nZXRGb3JtSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRm9ybUluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1JbnN0YW5jZUlkID0gbW9kZWwuaWQ7XHJcblxyXG4gICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgIGlmIChpbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm1jYXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZvcm1jYXRzLmxlbmd0aDsgaisrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyb3dzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCByb3dzLmxlbmd0aDsgaysrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbbF0udmFsdWUgPSBpbnN0YW5jZXNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhTG9hZGluZygpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwJTtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgPG1hdC1sYWJlbD5OYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIlByb2plY3RWaWV3TW9kZWwubmFtZVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YXBwLWZhYi1mb3JtIFtmb3JtXT1cIkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbFwiPjwvYXBwLWZhYi1mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb25zLWxpc3RcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID09IG51bGxcIj5cbiAgICAgIDxiPkNvbmZpZ3VyYXRpZSdzPC9iPlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj57eyBpbnN0YW5jZS5pZCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+XG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpbnN0YW5jZS5wcm9kdWN0SWQpIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj5cbiAgICAgICAgICAgIHt7IGluc3RhbmNlLmRhdGVUaW1lTW9kaWZpZWQgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRlbGV0ZShpbnN0YW5jZSlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICBWZXJ3aWpkZXJlblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGxcIj5cbiAgICAgIDxhcHAtYmVoZWVyLWJjYi1pbnN0YW5jZSBbaW5wdXRdPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsXCI+PC9hcHAtYmVoZWVyLWJjYi1pbnN0YW5jZT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNlbGVjdChudWxsKVwiPlxuICAgICAgICAgIFRlcnVnXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48YnIgLz5cbjxiciAvPlxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCI+XG4gIFNhdmVcbjwvYnV0dG9uPlxuPGJyIC8+XG48YnIgLz5cbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXByb2plY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItcHJvamVjdC9iZWhlZXItcHJvamVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1wcm9qZWN0L2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTZCLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQW9GLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLDJCQUEyQixFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBeUIsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQStCLG9DQUFvQyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJdlgsTUFNYSxzQkFBc0I7SUFpQ2I7SUFDVjtJQUNEO0lBQ0E7SUFDQTtJQW5DRixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsZ0JBQWdCLENBQW1CO0lBQ25DLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFaEMsd0JBQXdCLENBQTJCO0lBQ25ELFdBQVcsR0FBWSxJQUFJLENBQUM7SUFFNUIsMkJBQTJCLEdBQXVDLElBQUksQ0FBQztJQUU5RSxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFhLEtBQUssQ0FBQyxLQUF1QjtRQUN4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QUksSUFBSSxFQUFFO29DQUNoQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3Q0FFcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQzt3Q0FFNUIsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFOzRDQUVsQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnREFDdEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7b0RBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztpREFDdEM7NkNBQ0Y7eUNBRUY7cUNBQ0Y7aUNBQ0Y7NkJBQ0Y7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7Z0JBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDL0IsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzt1R0FyTFUsc0JBQXNCOzJGQUF0QixzQkFBc0Isc0ZDWG5DLHNvRUE4REE7O1NEbkRhLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQU5sQyxTQUFTOytCQUNFLG9CQUFvQixpQkFHZixpQkFBaUIsQ0FBQyxJQUFJOzJPQXdCeEIsS0FBSztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIFByb2plY3RWaWV3TW9kZWwsIEZvcm1BcGlDbGllbnQsIENvbmZpZ3VyYXRvckFwaUNsaWVudCwgU2F2ZVByb2plY3RSZXF1ZXN0TW9kZWwsIExvZ2luUmVzcG9uc2VNb2RlbCwgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsLCBGb3JtVHlwZSwgRm9ybUluc3RhbmNlUmVxdWVzdE1vZGVsLCBGb3JtSW5zdGFuY2VWaWV3TW9kZWwsIFRyYW5zbGF0aW9uQ2F0ZWdvcnksIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnksIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCwgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1wcm9qZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci1wcm9qZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXByb2plY3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJQcm9qZWN0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgRm9ybUxvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgSW5zdGFuY2VMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbDtcbiAgcHVibGljIExvYWRpbmdJbnN0YW5jZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIEZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbDogRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsO1xuICBwdWJsaWMgTG9hZGluZ0Zvcm06IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHB1YmxpYyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWw6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG5cbiAgQElucHV0KCkgc2V0IGlucHV0KHZhbHVlOiBQcm9qZWN0Vmlld01vZGVsKSB7XG4gICAgdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gdmFsdWU7XG4gICAgdGhpcy5JbnN0YW5jZUxvYWRlZCA9IHRydWU7XG5cbiAgICB0aGlzLkxvYWRJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHVibGljIExvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuTG9hZGluZ0Zvcm0gfHwgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgfHwgIXRoaXMuSW5zdGFuY2VMb2FkZWQ7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHJpdmF0ZSBGb3JtQXBpQ2xpZW50OiBGb3JtQXBpQ2xpZW50LFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cbiAgICB0aGlzLkxvYWRGb3JtKCk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTZWxlY3QoaW5zdGFuY2U6IEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID0gaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgRGVsZXRlKGluc3RhbmNlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoY29uZmlybShcIldlZXQgamUgaGV0IHpla2VyP1wiKSkge1xuICAgICAgLy90aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdmFyIHJlcXVlc3QgPSBuZXcgRGVsZXRlQkNCUHJvZHVjdEluc3RhbmNlUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcbiAgICAgIHJlcXVlc3QuYmNiSW5zdGFuY2VJZCA9IGluc3RhbmNlLmlkO1xyXG5cclxuICAgICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZGVsZXRlSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAvL3RoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFyIGluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNbaV0uaWQgPT0gaW5zdGFuY2UuaWQpIHtcclxuICAgICAgICAgICAgICBpbmRleCA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwuaW5zdGFuY2VzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICAvL3RoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG5cbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgdmFyIG1vZGVsID0gbmV3IFNhdmVQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XG5cbiAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xuICAgIG1vZGVsLnByb2plY3RWaWV3TW9kZWwgPSB0aGlzLlByb2plY3RWaWV3TW9kZWw7XG5cbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5zYXZlUHJvamVjdChtb2RlbCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5TYXZlRm9ybSgpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBTYXZlRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5jdXN0b21Db25uZWN0SWQgPSB0aGlzLlByb2plY3RWaWV3TW9kZWwuaWQ7XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuc2F2ZUZvcm0odGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHVibGljIExvYWRGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZ0Zvcm0gPSB0cnVlO1xuXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgRmFicmlrYW50ZW5Gb3JtUmVxdWVzdE1vZGVsKCk7XG5cbiAgICByZXF1ZXN0LmZvcm1UeXBlID0gRm9ybVR5cGUuUHJvamVjdEZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRm9ybUxvYWRlZCAmJiB0aGlzLkluc3RhbmNlTG9hZGVkKSB7XG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuUHJvamVjdFZpZXdNb2RlbC5pZDtcbiAgICAgIHJlcXVlc3QuZm9ybUlkID0gdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuaWQ7XG4gICAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XG5cbiAgICAgIHRoaXMuRm9ybUFwaUNsaWVudC5nZXRGb3JtSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRm9ybUluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1JbnN0YW5jZUlkID0gbW9kZWwuaWQ7XHJcblxyXG4gICAgICAgIHZhciBpbnN0YW5jZXMgPSBtb2RlbC5mb3JtSW5wdXRJbnN0YW5jZXM7XHJcblxyXG4gICAgICAgIGlmIChpbnN0YW5jZXMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YW5jZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBmb3JtY2F0cyA9IHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsLmZvcm1DYXRlZ29yaWVzO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZvcm1jYXRzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZvcm1jYXRzLmxlbmd0aDsgaisrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFyIHJvd3MgPSBmb3JtY2F0c1tqXS5yb3dzO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChyb3dzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCByb3dzLmxlbmd0aDsgaysrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dHMgPSByb3dzW2tdLmlucHV0cztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cyAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBpbnB1dHMubGVuZ3RoOyBsKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0c1tsXS5pZCA9PSBpbnN0YW5jZXNbaV0uZm9ybUlucHV0SWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHNbbF0udmFsdWUgPSBpbnN0YW5jZXNbaV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhTG9hZGluZygpXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDUwJTtcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgPG1hdC1sYWJlbD5OYW1lPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cIlByb2plY3RWaWV3TW9kZWwubmFtZVwiPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8YXBwLWZhYi1mb3JtIFtmb3JtXT1cIkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbFwiPjwvYXBwLWZhYi1mb3JtPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbmZpZ3VyYXRpb25zLWxpc3RcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsID09IG51bGxcIj5cbiAgICAgIDxiPkNvbmZpZ3VyYXRpZSdzPC9iPlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5VbmlxdWUgQ29kZTwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgaW5zdGFuY2Ugb2YgUHJvamVjdFZpZXdNb2RlbC5pbnN0YW5jZXNcIj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj57eyBpbnN0YW5jZS5pZCB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+e3sgaW5zdGFuY2UudW5pcXVlQ29kZSB9fTwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJTZWxlY3QoaW5zdGFuY2UpXCI+XG4gICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBpbnN0YW5jZS5wcm9kdWN0SWQpIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdChpbnN0YW5jZSlcIj5cbiAgICAgICAgICAgIHt7IGluc3RhbmNlLmRhdGVUaW1lTW9kaWZpZWQgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkRlbGV0ZShpbnN0YW5jZSlcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxuICAgICAgICAgICAgICBWZXJ3aWpkZXJlblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsICE9IG51bGxcIj5cbiAgICAgIDxhcHAtYmVoZWVyLWJjYi1pbnN0YW5jZSBbaW5wdXRdPVwiQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsXCI+PC9hcHAtYmVoZWVyLWJjYi1pbnN0YW5jZT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNlbGVjdChudWxsKVwiPlxuICAgICAgICAgIFRlcnVnXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48YnIgLz5cbjxiciAvPlxuPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiU2F2ZSgpXCI+XG4gIFNhdmVcbjwvYnV0dG9uPlxuPGJyIC8+XG48YnIgLz5cbiJdfQ==
@@ -1,22 +1,24 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
- import { FabrikantenCreateInstanceRequest, TranslationCategory, TranslationSubCategory, GetConfigurationsRequestModel, LoginResponseModel } from '../../swagger/SwaggerClient';
2
+ import { ProjectViewModel, FabrikantenCreateInstanceRequest, TranslationCategory, TranslationSubCategory, GetConfigurationsRequestModel, LoginResponseModel, FabrikantenOpenInstanceRequest } from '../../swagger/SwaggerClient';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../services/fabrikanten.service";
5
- import * as i2 from "../../services/translate.service";
6
- import * as i3 from "../../swagger/SwaggerClient";
7
- import * as i4 from "../../services/authentication.service";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "@angular/material/legacy-form-field";
10
- import * as i7 from "@angular/forms";
11
- import * as i8 from "@angular/material/legacy-button";
12
- import * as i9 from "@angular/material/icon";
13
- import * as i10 from "@angular/material/stepper";
14
- import * as i11 from "@angular/material/legacy-progress-spinner";
15
- import * as i12 from "@angular/material/legacy-select";
16
- import * as i13 from "@angular/material/legacy-core";
17
- import * as i14 from "../inputs/fab-input/fab-input.component";
18
- import * as i15 from "../fab-input-code/fab-input-code.component";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "../../services/fabrikanten.service";
6
+ import * as i3 from "../../services/translate.service";
7
+ import * as i4 from "../../swagger/SwaggerClient";
8
+ import * as i5 from "../../services/authentication.service";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/material/legacy-form-field";
11
+ import * as i8 from "@angular/forms";
12
+ import * as i9 from "@angular/material/legacy-button";
13
+ import * as i10 from "@angular/material/icon";
14
+ import * as i11 from "@angular/material/stepper";
15
+ import * as i12 from "@angular/material/legacy-progress-spinner";
16
+ import * as i13 from "@angular/material/legacy-select";
17
+ import * as i14 from "@angular/material/legacy-core";
18
+ import * as i15 from "../inputs/fab-input/fab-input.component";
19
+ import * as i16 from "../fab-input-code/fab-input-code.component";
19
20
  class FabFiltersInputComponent {
21
+ router;
20
22
  FabrikantenService;
21
23
  TranslateService;
22
24
  FabrikantenApiClient;
@@ -26,13 +28,15 @@ class FabFiltersInputComponent {
26
28
  LoadingGenerate = true;
27
29
  ConfigurationsViewModel;
28
30
  SelectedProjectId = 0;
31
+ SelectedInstanceId = -1;
29
32
  get TranslationCategory() {
30
33
  return TranslationCategory;
31
34
  }
32
35
  get TranslationSubCategory() {
33
36
  return TranslationSubCategory;
34
37
  }
35
- constructor(FabrikantenService, TranslateService, FabrikantenApiClient, ConfiguratorApiClient, authenticationService, ChangeDetectorRef) {
38
+ constructor(router, FabrikantenService, TranslateService, FabrikantenApiClient, ConfiguratorApiClient, authenticationService, ChangeDetectorRef) {
39
+ this.router = router;
36
40
  this.FabrikantenService = FabrikantenService;
37
41
  this.TranslateService = TranslateService;
38
42
  this.FabrikantenApiClient = FabrikantenApiClient;
@@ -41,10 +45,22 @@ class FabFiltersInputComponent {
41
45
  this.ChangeDetectorRef = ChangeDetectorRef;
42
46
  }
43
47
  ngOnInit() {
48
+ this.authenticationService.validateUserWithoutNavigate(this.router);
44
49
  if (this.authenticationService.ConfiguratorRights()) {
45
50
  this.LoadConfigurations();
46
51
  }
47
52
  }
53
+ GetProjectViewModel() {
54
+ if (this.ConfigurationsViewModel.projects != null) {
55
+ for (var i = 0; i < this.ConfigurationsViewModel.projects.length; i++) {
56
+ if (this.ConfigurationsViewModel.projects[i].id == this.SelectedProjectId) {
57
+ return this.ConfigurationsViewModel.projects[i];
58
+ }
59
+ }
60
+ return this.ConfigurationsViewModel.projects[0];
61
+ }
62
+ return new ProjectViewModel();
63
+ }
48
64
  ResetAllFilters() {
49
65
  this.FabrikantenService.ResetAllFilters(this.ChangeDetectorRef);
50
66
  }
@@ -106,9 +122,13 @@ class FabFiltersInputComponent {
106
122
  var request = new FabrikantenCreateInstanceRequest();
107
123
  request.sessionId = this.FabrikantenService.FabrikantenViewModel.sessionId;
108
124
  request.projectId = this.SelectedProjectId;
125
+ var uniqueCode = this.GetUniqueCode();
126
+ if (uniqueCode != "") {
127
+ request.uniqueCode = uniqueCode;
128
+ }
109
129
  this.FabrikantenApiClient.createInstance(request).subscribe((model) => {
110
130
  //this.FabrikantenInstanceViewModel = model;
111
- this.LoadingGenerate = false;
131
+ this.LoadConfigurations();
112
132
  this.ChangeDetectorRef.detectChanges();
113
133
  }, (error) => {
114
134
  alert('An unexpected error occured');
@@ -127,6 +147,44 @@ class FabFiltersInputComponent {
127
147
  }
128
148
  return "disabled_af";
129
149
  }
150
+ GetUniqueCode() {
151
+ var instances = this.GetProjectViewModel().instances;
152
+ if (instances != null) {
153
+ for (var i = 0; i < instances.length; i++) {
154
+ if (instances[i].id == this.SelectedInstanceId) {
155
+ return instances[i].uniqueCode + "";
156
+ }
157
+ }
158
+ }
159
+ return "";
160
+ }
161
+ SelectInstance() {
162
+ var uniqueCode = this.GetUniqueCode();
163
+ if (uniqueCode != "") {
164
+ this.Open(uniqueCode);
165
+ }
166
+ }
167
+ Open(opencode) {
168
+ this.FabrikantenService.Loading = true;
169
+ this.ChangeDetectorRef.detectChanges();
170
+ var request = new FabrikantenOpenInstanceRequest();
171
+ request.sessionId = this.FabrikantenService.FabrikantenViewModel.sessionId;
172
+ request.instanceId = opencode;
173
+ this.FabrikantenService.ResetTabs();
174
+ this.FabrikantenApiClient.openInstance(request).subscribe((model) => {
175
+ if (model.error) {
176
+ this.FabrikantenService.Loading = false;
177
+ this.ChangeDetectorRef.detectChanges();
178
+ }
179
+ else {
180
+ this.FabrikantenService.ReloadModel(this.ChangeDetectorRef);
181
+ }
182
+ }, (error) => {
183
+ alert('An unexpected error occured');
184
+ this.FabrikantenService.Loading = false;
185
+ this.ChangeDetectorRef.detectChanges();
186
+ });
187
+ }
130
188
  LoadConfigurations() {
131
189
  this.LoadingGenerate = true;
132
190
  var request = new GetConfigurationsRequestModel();
@@ -143,12 +201,12 @@ class FabFiltersInputComponent {
143
201
  this.LoadingGenerate = false;
144
202
  });
145
203
  }
146
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FabFiltersInputComponent, deps: [{ token: i1.FabrikantenService }, { token: i2.TranslateService }, { token: i3.FabrikantenApiClient }, { token: i3.ConfiguratorApiClient }, { token: i4.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
147
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: FabFiltersInputComponent, selector: "fab-filters-input", ngImport: i0, template: "<div class=\"filter-view-margin\">\r\n <div class=\"filter-view-header\">\r\n <div class=\"filter-view-header-h1\">\r\n <h1>{{ GetHeaderName() }}</h1>\r\n </div>\r\n <div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n </div>\r\n <div class=\"filter-view-header-reset\" (click)=\"ResetAllFilters()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ResetFilters) }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!ShowCategories()\">\r\n <div class=\"inputs-container\" [ngClass]=\"{'two-columns': ShowTwoColumns() }\">\r\n <ng-container *ngFor=\"let inputviewmodel of FabrikantenService.FabrikantenViewModel.inputs; index as i\">\r\n <app-fab-input [input]=\"inputviewmodel\" [ngClass]=\"{'col1': i % 2 == 0, 'col2': i % 2 == 1 }\"></app-fab-input>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"ShowAffectsOnlyBestek()\">\r\n <div class=\"affects-only-bestek\">\r\n <span><sup>1</sup></span>\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.AffectsOnlyBestek) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"ShowCategories()\">\r\n <mat-stepper orientation=\"vertical\" [linear]=\"true\" #stepper>\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n {{ index + 1 }}\r\n </ng-template>\r\n\r\n <mat-step *ngFor=\"let cat of FabrikantenService.FabrikantenViewModel.filterCategories\" state=\"{{ cat.id }}\" [completed]=\"cat.completed\" [aria-labelledby]=\"GetHeaderAriaLabel(cat)\" [class.completed-step]=\"cat.completed\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-name-div\">\r\n <div class=\"step-name-completed\" *ngIf=\"cat.completed\">\r\n <mat-icon class=\"step-name-completed-icon\">done</mat-icon>\r\n </div>\r\n <div class=\"step-name-name\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterCategory, TranslationSubCategory.Name, cat.id) }}\r\n </div>\r\n <div class=\"step-name-icon\" *ngIf=\"cat.icon != null\">\r\n <span class=\"helper\"></span>\r\n <img [src]=\"cat.icon\" class=\"filter-category-icon\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngFor=\"let inputviewmodel of cat.inputs\">\r\n <app-fab-input [input]=\"inputviewmodel\"></app-fab-input>\r\n </ng-container>\r\n </mat-step>\r\n </mat-stepper>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"ShowSaveConf()\" class=\"save-conf-div\">\r\n <ng-container *ngIf=\"LoadingGenerate\">\r\n <mat-spinner [diameter]=\"20\"></mat-spinner>\r\n </ng-container>\r\n <ng-container *ngIf=\"!LoadingGenerate\">\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Project\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedProjectId\">\r\n <ng-container *ngFor=\"let project of ConfigurationsViewModel.projects\">\r\n <mat-option [value]=\"project.id\">\r\n {{ project.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"SaveConfiguration()\" class=\"save-conf-button\">\r\n Save Configuration\r\n </button>\r\n </ng-container>\r\n</div>\r\n", styles: ["fab-filters-input .mat-step-header{cursor:pointer!important}fab-filters-input .two-columns{display:flex;flex-wrap:wrap}fab-filters-input .mat-step-header[aria-labelledby=disabled_af]{cursor:not-allowed!important;opacity:.6}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon{background-color:#000}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon-selected{background-color:#3f51b5}fab-filters-input .filter-view-header{display:flex}fab-filters-input .filter-view-header-h1{flex:auto;text-transform:capitalize}fab-filters-input .step-name-icon{height:54px;white-space:nowrap;text-align:center;margin:auto 0}fab-filters-input .step-name-completed{height:54px;display:flex;align-items:center}fab-filters-input .step-name-div{width:100%}fab-filters-input .filter-category-icon{height:48px;vertical-align:middle}fab-filters-input .mat-step-text-label{width:100%}fab-filters-input .mat-step-label{width:100%}fab-filters-input .step-name-name{line-height:56px}fab-filters-input .helper{display:inline-block;height:100%;vertical-align:middle}fab-filters-input .filter-view-margin{padding:10px}fab-filters-input .filter-view-header-reset{cursor:pointer}fab-filters-input .mat-vertical-content-container{padding-top:10px}fab-filters-input .mat-vertical-content{padding:0}fab-filters-input .step-name-div{display:flex}fab-filters-input .step-name-name{flex:auto}fab-filters-input .save-conf-div{padding:15px}fab-filters-input .save-conf-div mat-spinner{margin:auto}fab-filters-input .save-conf-button{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i10.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i10.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i10.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: i11.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i12.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i13.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.FabInputComponent, selector: "app-fab-input", inputs: ["input"] }, { kind: "component", type: i15.FabInputCodeComponent, selector: "app-fab-input-code" }], encapsulation: i0.ViewEncapsulation.None });
204
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FabFiltersInputComponent, deps: [{ token: i1.Router }, { token: i2.FabrikantenService }, { token: i3.TranslateService }, { token: i4.FabrikantenApiClient }, { token: i4.ConfiguratorApiClient }, { token: i5.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
205
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: FabFiltersInputComponent, selector: "fab-filters-input", ngImport: i0, template: "<div class=\"filter-view-margin\">\r\n <div class=\"filter-view-header\">\r\n <div class=\"filter-view-header-h1\">\r\n <h1>{{ GetHeaderName() }}</h1>\r\n </div>\r\n <div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n </div>\r\n <div class=\"filter-view-header-reset\" (click)=\"ResetAllFilters()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ResetFilters) }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!ShowCategories()\">\r\n <div class=\"inputs-container\" [ngClass]=\"{'two-columns': ShowTwoColumns() }\">\r\n <ng-container *ngFor=\"let inputviewmodel of FabrikantenService.FabrikantenViewModel.inputs; index as i\">\r\n <app-fab-input [input]=\"inputviewmodel\" [ngClass]=\"{'col1': i % 2 == 0, 'col2': i % 2 == 1 }\"></app-fab-input>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"ShowAffectsOnlyBestek()\">\r\n <div class=\"affects-only-bestek\">\r\n <span><sup>1</sup></span>\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.AffectsOnlyBestek) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"ShowCategories()\">\r\n <mat-stepper orientation=\"vertical\" [linear]=\"true\" #stepper>\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n {{ index + 1 }}\r\n </ng-template>\r\n\r\n <mat-step *ngFor=\"let cat of FabrikantenService.FabrikantenViewModel.filterCategories\" state=\"{{ cat.id }}\" [completed]=\"cat.completed\" [aria-labelledby]=\"GetHeaderAriaLabel(cat)\" [class.completed-step]=\"cat.completed\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-name-div\">\r\n <div class=\"step-name-completed\" *ngIf=\"cat.completed\">\r\n <mat-icon class=\"step-name-completed-icon\">done</mat-icon>\r\n </div>\r\n <div class=\"step-name-name\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterCategory, TranslationSubCategory.Name, cat.id) }}\r\n </div>\r\n <div class=\"step-name-icon\" *ngIf=\"cat.icon != null\">\r\n <span class=\"helper\"></span>\r\n <img [src]=\"cat.icon\" class=\"filter-category-icon\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngFor=\"let inputviewmodel of cat.inputs\">\r\n <app-fab-input [input]=\"inputviewmodel\"></app-fab-input>\r\n </ng-container>\r\n </mat-step>\r\n </mat-stepper>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"ShowSaveConf()\" class=\"save-conf-div\">\r\n <ng-container *ngIf=\"LoadingGenerate\">\r\n <mat-spinner [diameter]=\"20\"></mat-spinner>\r\n </ng-container>\r\n <ng-container *ngIf=\"!LoadingGenerate\">\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Project\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedProjectId\">\r\n <ng-container *ngFor=\"let project of ConfigurationsViewModel.projects\">\r\n <mat-option [value]=\"project.id\">\r\n {{ project.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Unique Code\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedInstanceId\" (selectionChange)=\"SelectInstance()\">\r\n <mat-option [value]=\"-1\">\r\n Nieuw\r\n </mat-option>\r\n <ng-container *ngFor=\"let instance of GetProjectViewModel().instances\">\r\n <mat-option [value]=\"instance.id\">\r\n {{ instance.uniqueCode }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"SaveConfiguration()\" class=\"save-conf-button\">\r\n Save Configuration\r\n </button>\r\n </ng-container>\r\n</div>\r\n", styles: ["fab-filters-input .mat-step-header{cursor:pointer!important}fab-filters-input .two-columns{display:flex;flex-wrap:wrap}fab-filters-input .mat-step-header[aria-labelledby=disabled_af]{cursor:not-allowed!important;opacity:.6}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon{background-color:#000}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon-selected{background-color:#3f51b5}fab-filters-input .filter-view-header{display:flex}fab-filters-input .filter-view-header-h1{flex:auto;text-transform:capitalize}fab-filters-input .step-name-icon{height:54px;white-space:nowrap;text-align:center;margin:auto 0}fab-filters-input .step-name-completed{height:54px;display:flex;align-items:center}fab-filters-input .step-name-div{width:100%}fab-filters-input .filter-category-icon{height:48px;vertical-align:middle}fab-filters-input .mat-step-text-label{width:100%}fab-filters-input .mat-step-label{width:100%}fab-filters-input .step-name-name{line-height:56px}fab-filters-input .helper{display:inline-block;height:100%;vertical-align:middle}fab-filters-input .filter-view-margin{padding:10px}fab-filters-input .filter-view-header-reset{cursor:pointer}fab-filters-input .mat-vertical-content-container{padding-top:10px}fab-filters-input .mat-vertical-content{padding:0}fab-filters-input .step-name-div{display:flex}fab-filters-input .step-name-name{flex:auto}fab-filters-input .save-conf-div{padding:15px}fab-filters-input .save-conf-div mat-spinner{margin:auto}fab-filters-input .save-conf-button{width:100%}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i9.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i11.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i11.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i11.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: i12.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i13.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i15.FabInputComponent, selector: "app-fab-input", inputs: ["input"] }, { kind: "component", type: i16.FabInputCodeComponent, selector: "app-fab-input-code" }], encapsulation: i0.ViewEncapsulation.None });
148
206
  }
149
207
  export { FabFiltersInputComponent };
150
208
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: FabFiltersInputComponent, decorators: [{
151
209
  type: Component,
152
- args: [{ selector: 'fab-filters-input', encapsulation: ViewEncapsulation.None, template: "<div class=\"filter-view-margin\">\r\n <div class=\"filter-view-header\">\r\n <div class=\"filter-view-header-h1\">\r\n <h1>{{ GetHeaderName() }}</h1>\r\n </div>\r\n <div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n </div>\r\n <div class=\"filter-view-header-reset\" (click)=\"ResetAllFilters()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ResetFilters) }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!ShowCategories()\">\r\n <div class=\"inputs-container\" [ngClass]=\"{'two-columns': ShowTwoColumns() }\">\r\n <ng-container *ngFor=\"let inputviewmodel of FabrikantenService.FabrikantenViewModel.inputs; index as i\">\r\n <app-fab-input [input]=\"inputviewmodel\" [ngClass]=\"{'col1': i % 2 == 0, 'col2': i % 2 == 1 }\"></app-fab-input>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"ShowAffectsOnlyBestek()\">\r\n <div class=\"affects-only-bestek\">\r\n <span><sup>1</sup></span>\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.AffectsOnlyBestek) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"ShowCategories()\">\r\n <mat-stepper orientation=\"vertical\" [linear]=\"true\" #stepper>\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n {{ index + 1 }}\r\n </ng-template>\r\n\r\n <mat-step *ngFor=\"let cat of FabrikantenService.FabrikantenViewModel.filterCategories\" state=\"{{ cat.id }}\" [completed]=\"cat.completed\" [aria-labelledby]=\"GetHeaderAriaLabel(cat)\" [class.completed-step]=\"cat.completed\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-name-div\">\r\n <div class=\"step-name-completed\" *ngIf=\"cat.completed\">\r\n <mat-icon class=\"step-name-completed-icon\">done</mat-icon>\r\n </div>\r\n <div class=\"step-name-name\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterCategory, TranslationSubCategory.Name, cat.id) }}\r\n </div>\r\n <div class=\"step-name-icon\" *ngIf=\"cat.icon != null\">\r\n <span class=\"helper\"></span>\r\n <img [src]=\"cat.icon\" class=\"filter-category-icon\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngFor=\"let inputviewmodel of cat.inputs\">\r\n <app-fab-input [input]=\"inputviewmodel\"></app-fab-input>\r\n </ng-container>\r\n </mat-step>\r\n </mat-stepper>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"ShowSaveConf()\" class=\"save-conf-div\">\r\n <ng-container *ngIf=\"LoadingGenerate\">\r\n <mat-spinner [diameter]=\"20\"></mat-spinner>\r\n </ng-container>\r\n <ng-container *ngIf=\"!LoadingGenerate\">\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Project\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedProjectId\">\r\n <ng-container *ngFor=\"let project of ConfigurationsViewModel.projects\">\r\n <mat-option [value]=\"project.id\">\r\n {{ project.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"SaveConfiguration()\" class=\"save-conf-button\">\r\n Save Configuration\r\n </button>\r\n </ng-container>\r\n</div>\r\n", styles: ["fab-filters-input .mat-step-header{cursor:pointer!important}fab-filters-input .two-columns{display:flex;flex-wrap:wrap}fab-filters-input .mat-step-header[aria-labelledby=disabled_af]{cursor:not-allowed!important;opacity:.6}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon{background-color:#000}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon-selected{background-color:#3f51b5}fab-filters-input .filter-view-header{display:flex}fab-filters-input .filter-view-header-h1{flex:auto;text-transform:capitalize}fab-filters-input .step-name-icon{height:54px;white-space:nowrap;text-align:center;margin:auto 0}fab-filters-input .step-name-completed{height:54px;display:flex;align-items:center}fab-filters-input .step-name-div{width:100%}fab-filters-input .filter-category-icon{height:48px;vertical-align:middle}fab-filters-input .mat-step-text-label{width:100%}fab-filters-input .mat-step-label{width:100%}fab-filters-input .step-name-name{line-height:56px}fab-filters-input .helper{display:inline-block;height:100%;vertical-align:middle}fab-filters-input .filter-view-margin{padding:10px}fab-filters-input .filter-view-header-reset{cursor:pointer}fab-filters-input .mat-vertical-content-container{padding-top:10px}fab-filters-input .mat-vertical-content{padding:0}fab-filters-input .step-name-div{display:flex}fab-filters-input .step-name-name{flex:auto}fab-filters-input .save-conf-div{padding:15px}fab-filters-input .save-conf-div mat-spinner{margin:auto}fab-filters-input .save-conf-button{width:100%}\n"] }]
153
- }], ctorParameters: function () { return [{ type: i1.FabrikantenService }, { type: i2.TranslateService }, { type: i3.FabrikantenApiClient }, { type: i3.ConfiguratorApiClient }, { type: i4.AuthenticationService }, { type: i0.ChangeDetectorRef }]; } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlcnMtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1maWx0ZXJzLWlucHV0L2ZhYi1maWx0ZXJzLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVycy1pbnB1dC9mYWItZmlsdGVycy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl4RixPQUFPLEVBQXlFLGdDQUFnQyxFQUF3QixtQkFBbUIsRUFBRSxzQkFBc0IsRUFBc0MsNkJBQTZCLEVBQUUsa0JBQWtCLEVBQTJCLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRXpVLE1BU2Esd0JBQXdCO0lBZ0IxQjtJQUNBO0lBQ0M7SUFDQTtJQUNEO0lBQ0E7SUFuQkYsZUFBZSxHQUFZLElBQUksQ0FBQztJQUVoQyx1QkFBdUIsQ0FBMEI7SUFDakQsaUJBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRXJDLElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ1Msa0JBQXNDLEVBQ3RDLGdCQUFrQyxFQUNqQyxvQkFBMEMsRUFDMUMscUJBQTRDLEVBQzdDLHFCQUE0QyxFQUM1QyxpQkFBb0M7UUFMcEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLHlCQUFvQixHQUFwQixv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SU9OUyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2plY3RWaWV3TW9kZWwsIENvbmZpZ3VyYXRvckFwaUNsaWVudCwgRmFicmlrYW50ZW5JbnN0YW5jZVZpZXdNb2RlbCwgRmFicmlrYW50ZW5DcmVhdGVJbnN0YW5jZVJlcXVlc3QsIEZhYnJpa2FudGVuQXBpQ2xpZW50LCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LCBGYWJyaWthbnRlbkZpbHRlckNhdGVnb3J5Vmlld01vZGVsLCBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsLCBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbCB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZhYi1maWx0ZXJzLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWZpbHRlcnMtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhYi1maWx0ZXJzLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAvL3Byb3ZpZGVyczogW3tcclxuICAvLyAgcHJvdmlkZTogU1RFUFBFUl9HTE9CQUxfT1BUSU9OUywgdXNlVmFsdWU6IHsgZGlzcGxheURlZmF1bHRJbmRpY2F0b3JUeXBlOiBmYWxzZSB9XHJcbiAgLy99XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFiRmlsdGVyc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIExvYWRpbmdHZW5lcmF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbDogQ29uZmlndXJhdGlvbnNWaWV3TW9kZWw7XHJcbiAgcHVibGljIFNlbGVjdGVkUHJvamVjdElkOiBudW1iZXIgPSAwO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgRmFicmlrYW50ZW5TZXJ2aWNlOiBGYWJyaWthbnRlblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgVHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgRmFicmlrYW50ZW5BcGlDbGllbnQ6IEZhYnJpa2FudGVuQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBDb25maWd1cmF0b3JBcGlDbGllbnQ6IENvbmZpZ3VyYXRvckFwaUNsaWVudCxcclxuICAgIHB1YmxpYyBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHB1YmxpYyBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKSkge1xyXG4gICAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlc2V0QWxsRmlsdGVycygpOiB2b2lkIHtcclxuICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLlJlc2V0QWxsRmlsdGVycyh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93Q2F0ZWdvcmllcygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uZmlsdGVyQ2F0ZWdvcmllcyAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5maWx0ZXJDYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93QWZmZWN0c09ubHlCZXN0ZWsoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uaW5wdXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmlucHV0c1tpXS5maWx0ZXIgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLmZpbHRlcj8uYWZmZWN0c09ubHlCZXN0ZWsgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dJbnB1dENvZGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbD8uaW5wdXRDb2RlRW5hYmxlZCA9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTaG93VHdvQ29sdW1ucygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5hZGRFbmFibGVUd29Db2x1bW5GaWx0ZXJzID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEhlYWRlck5hbWUoKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5TZXR0aW5nc1ZpZXdNb2RlbC5zaG93UHJvZHVjdE5hbWVJbkZpbHRlcnNJbnB1dCA9PSB0cnVlKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Qcm9kdWN0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdC5pZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LkZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dTYXZlQ29uZigpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKSkge1xyXG4gICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWw/LnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRpbmdHZW5lcmF0ZSA9IHRydWU7XHJcbiAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBGYWJyaWthbnRlbkNyZWF0ZUluc3RhbmNlUmVxdWVzdCgpO1xyXG5cclxuICAgIHJlcXVlc3Quc2Vzc2lvbklkID0gdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2Vzc2lvbklkO1xyXG4gICAgcmVxdWVzdC5wcm9qZWN0SWQgPSB0aGlzLlNlbGVjdGVkUHJvamVjdElkO1xyXG5cclxuICAgIHRoaXMuRmFicmlrYW50ZW5BcGlDbGllbnQuY3JlYXRlSW5zdGFuY2UocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogRmFicmlrYW50ZW5JbnN0YW5jZVZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICAvL3RoaXMuRmFicmlrYW50ZW5JbnN0YW5jZVZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nR2VuZXJhdGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgdGhpcy5Mb2FkaW5nR2VuZXJhdGUgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRIZWFkZXJBcmlhTGFiZWwoY2F0OiBGYWJyaWthbnRlbkZpbHRlckNhdGVnb3J5Vmlld01vZGVsKTogc3RyaW5nIHtcclxuICAgIGlmIChjYXQuY2FuQmVPcGVuZWQpIHtcclxuICAgICAgaWYgKGNhdC5jb21wbGV0ZWQpIHtcclxuICAgICAgICByZXR1cm4gXCJlbmFibGVkLWNvbXBsZXRlZFwiO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcImVuYWJsZWRcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcImRpc2FibGVkX2FmXCI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIExvYWRDb25maWd1cmF0aW9ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZ0dlbmVyYXRlID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCgpO1xyXG5cclxuICAgIHJlcXVlc3QubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcclxuXHJcbiAgICB0aGlzLkNvbmZpZ3VyYXRvckFwaUNsaWVudC5nZXRDb25maWd1cmF0aW9ucyhyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsID0gbW9kZWw7XHJcblxyXG4gICAgICB2YXIgcHJvamVjdHMgPSB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzO1xyXG4gICAgICBpZiAocHJvamVjdHMgIT0gbnVsbCAmJiBwcm9qZWN0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFByb2plY3RJZCA9IHByb2plY3RzWzBdLmlkO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuTG9hZGluZ0dlbmVyYXRlID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZ0dlbmVyYXRlID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZpbHRlci12aWV3LW1hcmdpblwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmaWx0ZXItdmlldy1oZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItdmlldy1oZWFkZXItaDFcIj5cclxuICAgICAgPGgxPnt7IEdldEhlYWRlck5hbWUoKSB9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJTaG93SW5wdXRDb2RlKClcIj5cclxuICAgICAgPGFwcC1mYWItaW5wdXQtY29kZT48L2FwcC1mYWItaW5wdXQtY29kZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci12aWV3LWhlYWRlci1yZXNldFwiIChjbGljayk9XCJSZXNldEFsbEZpbHRlcnMoKVwiPlxyXG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuQ29tbW9uLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5LlJlc2V0RmlsdGVycykgfX1cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVNob3dDYXRlZ29yaWVzKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dHMtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyd0d28tY29sdW1ucyc6IFNob3dUd29Db2x1bW5zKCkgfVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbnB1dHZpZXdtb2RlbCBvZiBGYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzOyBpbmRleCBhcyBpXCI+XHJcbiAgICAgICAgPGFwcC1mYWItaW5wdXQgW2lucHV0XT1cImlucHV0dmlld21vZGVsXCIgW25nQ2xhc3NdPVwieydjb2wxJzogaSAlIDIgPT0gMCwgJ2NvbDInOiBpICUgMiA9PSAxIH1cIj48L2FwcC1mYWItaW5wdXQ+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dBZmZlY3RzT25seUJlc3RlaygpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhZmZlY3RzLW9ubHktYmVzdGVrXCI+XHJcbiAgICAgICAgPHNwYW4+PHN1cD4xPC9zdXA+PC9zcGFuPlxyXG4gICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuQWZmZWN0c09ubHlCZXN0ZWspIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJTaG93Q2F0ZWdvcmllcygpXCI+XHJcbiAgICA8bWF0LXN0ZXBwZXIgb3JpZW50YXRpb249XCJ2ZXJ0aWNhbFwiIFtsaW5lYXJdPVwidHJ1ZVwiICNzdGVwcGVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcHBlckljb249XCJlZGl0XCIgbGV0LWluZGV4PVwiaW5kZXhcIj5cclxuICAgICAgICB7eyBpbmRleCArIDEgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxtYXQtc3RlcCAqbmdGb3I9XCJsZXQgY2F0IG9mIEZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5maWx0ZXJDYXRlZ29yaWVzXCIgc3RhdGU9XCJ7eyBjYXQuaWQgfX1cIiBbY29tcGxldGVkXT1cImNhdC5jb21wbGV0ZWRcIiBbYXJpYS1sYWJlbGxlZGJ5XT1cIkdldEhlYWRlckFyaWFMYWJlbChjYXQpXCIgW2NsYXNzLmNvbXBsZXRlZC1zdGVwXT1cImNhdC5jb21wbGV0ZWRcIj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtbmFtZS1kaXZcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtbmFtZS1jb21wbGV0ZWRcIiAqbmdJZj1cImNhdC5jb21wbGV0ZWRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdGVwLW5hbWUtY29tcGxldGVkLWljb25cIj5kb25lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLW5hbWUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJDYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBjYXQuaWQpIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1uYW1lLWljb25cIiAqbmdJZj1cImNhdC5pY29uICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlbHBlclwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2F0Lmljb25cIiBjbGFzcz1cImZpbHRlci1jYXRlZ29yeS1pY29uXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbnB1dHZpZXdtb2RlbCBvZiBjYXQuaW5wdXRzXCI+XHJcbiAgICAgICAgICA8YXBwLWZhYi1pbnB1dCBbaW5wdXRdPVwiaW5wdXR2aWV3bW9kZWxcIj48L2FwcC1mYWItaW5wdXQ+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXN0ZXA+XHJcbiAgICA8L21hdC1zdGVwcGVyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgKm5nSWY9XCJTaG93U2F2ZUNvbmYoKVwiIGNsYXNzPVwic2F2ZS1jb25mLWRpdlwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJMb2FkaW5nR2VuZXJhdGVcIj5cclxuICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMjBcIj48L21hdC1zcGlubmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhTG9hZGluZ0dlbmVyYXRlXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPlxyXG4gICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgIFByb2plY3RcclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxtYXQtc2VsZWN0IFsobmdNb2RlbCldPVwiU2VsZWN0ZWRQcm9qZWN0SWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9qZWN0IG9mIENvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzXCI+XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwicHJvamVjdC5pZFwiPlxyXG4gICAgICAgICAgICB7eyBwcm9qZWN0Lm5hbWUgfX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmVDb25maWd1cmF0aW9uKClcIiBjbGFzcz1cInNhdmUtY29uZi1idXR0b25cIj5cclxuICAgICAgU2F2ZSBDb25maWd1cmF0aW9uXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
210
+ args: [{ selector: 'fab-filters-input', encapsulation: ViewEncapsulation.None, template: "<div class=\"filter-view-margin\">\r\n <div class=\"filter-view-header\">\r\n <div class=\"filter-view-header-h1\">\r\n <h1>{{ GetHeaderName() }}</h1>\r\n </div>\r\n <div *ngIf=\"ShowInputCode()\">\r\n <app-fab-input-code></app-fab-input-code>\r\n </div>\r\n <div class=\"filter-view-header-reset\" (click)=\"ResetAllFilters()\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.ResetFilters) }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!ShowCategories()\">\r\n <div class=\"inputs-container\" [ngClass]=\"{'two-columns': ShowTwoColumns() }\">\r\n <ng-container *ngFor=\"let inputviewmodel of FabrikantenService.FabrikantenViewModel.inputs; index as i\">\r\n <app-fab-input [input]=\"inputviewmodel\" [ngClass]=\"{'col1': i % 2 == 0, 'col2': i % 2 == 1 }\"></app-fab-input>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-container *ngIf=\"ShowAffectsOnlyBestek()\">\r\n <div class=\"affects-only-bestek\">\r\n <span><sup>1</sup></span>\r\n {{ TranslateService.GetActiveValue(TranslationCategory.Common, TranslationSubCategory.AffectsOnlyBestek) }}\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <div *ngIf=\"ShowCategories()\">\r\n <mat-stepper orientation=\"vertical\" [linear]=\"true\" #stepper>\r\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\r\n {{ index + 1 }}\r\n </ng-template>\r\n\r\n <mat-step *ngFor=\"let cat of FabrikantenService.FabrikantenViewModel.filterCategories\" state=\"{{ cat.id }}\" [completed]=\"cat.completed\" [aria-labelledby]=\"GetHeaderAriaLabel(cat)\" [class.completed-step]=\"cat.completed\">\r\n <ng-template matStepLabel>\r\n <div class=\"step-name-div\">\r\n <div class=\"step-name-completed\" *ngIf=\"cat.completed\">\r\n <mat-icon class=\"step-name-completed-icon\">done</mat-icon>\r\n </div>\r\n <div class=\"step-name-name\">\r\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterCategory, TranslationSubCategory.Name, cat.id) }}\r\n </div>\r\n <div class=\"step-name-icon\" *ngIf=\"cat.icon != null\">\r\n <span class=\"helper\"></span>\r\n <img [src]=\"cat.icon\" class=\"filter-category-icon\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-container *ngFor=\"let inputviewmodel of cat.inputs\">\r\n <app-fab-input [input]=\"inputviewmodel\"></app-fab-input>\r\n </ng-container>\r\n </mat-step>\r\n </mat-stepper>\r\n </div>\r\n</div>\r\n\r\n<div *ngIf=\"ShowSaveConf()\" class=\"save-conf-div\">\r\n <ng-container *ngIf=\"LoadingGenerate\">\r\n <mat-spinner [diameter]=\"20\"></mat-spinner>\r\n </ng-container>\r\n <ng-container *ngIf=\"!LoadingGenerate\">\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Project\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedProjectId\">\r\n <ng-container *ngFor=\"let project of ConfigurationsViewModel.projects\">\r\n <mat-option [value]=\"project.id\">\r\n {{ project.name }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <mat-form-field appearance=\"fill\" style=\"width: 100%;\">\r\n <mat-label>\r\n Unique Code\r\n </mat-label>\r\n <mat-select [(ngModel)]=\"SelectedInstanceId\" (selectionChange)=\"SelectInstance()\">\r\n <mat-option [value]=\"-1\">\r\n Nieuw\r\n </mat-option>\r\n <ng-container *ngFor=\"let instance of GetProjectViewModel().instances\">\r\n <mat-option [value]=\"instance.id\">\r\n {{ instance.uniqueCode }}\r\n </mat-option>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"SaveConfiguration()\" class=\"save-conf-button\">\r\n Save Configuration\r\n </button>\r\n </ng-container>\r\n</div>\r\n", styles: ["fab-filters-input .mat-step-header{cursor:pointer!important}fab-filters-input .two-columns{display:flex;flex-wrap:wrap}fab-filters-input .mat-step-header[aria-labelledby=disabled_af]{cursor:not-allowed!important;opacity:.6}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon{background-color:#000}fab-filters-input .mat-step-header[aria-labelledby=enabled] .mat-step-icon-selected{background-color:#3f51b5}fab-filters-input .filter-view-header{display:flex}fab-filters-input .filter-view-header-h1{flex:auto;text-transform:capitalize}fab-filters-input .step-name-icon{height:54px;white-space:nowrap;text-align:center;margin:auto 0}fab-filters-input .step-name-completed{height:54px;display:flex;align-items:center}fab-filters-input .step-name-div{width:100%}fab-filters-input .filter-category-icon{height:48px;vertical-align:middle}fab-filters-input .mat-step-text-label{width:100%}fab-filters-input .mat-step-label{width:100%}fab-filters-input .step-name-name{line-height:56px}fab-filters-input .helper{display:inline-block;height:100%;vertical-align:middle}fab-filters-input .filter-view-margin{padding:10px}fab-filters-input .filter-view-header-reset{cursor:pointer}fab-filters-input .mat-vertical-content-container{padding-top:10px}fab-filters-input .mat-vertical-content{padding:0}fab-filters-input .step-name-div{display:flex}fab-filters-input .step-name-name{flex:auto}fab-filters-input .save-conf-div{padding:15px}fab-filters-input .save-conf-div mat-spinner{margin:auto}fab-filters-input .save-conf-button{width:100%}\n"] }]
211
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.FabrikantenService }, { type: i3.TranslateService }, { type: i4.FabrikantenApiClient }, { type: i4.ConfiguratorApiClient }, { type: i5.AuthenticationService }, { type: i0.ChangeDetectorRef }]; } });
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLWZpbHRlcnMtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL2ZhYnJpa2FudGVuY29yZS9jb21wb25lbnRzL2ZhYi1maWx0ZXJzLWlucHV0L2ZhYi1maWx0ZXJzLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvY29tcG9uZW50cy9mYWItZmlsdGVycy1pbnB1dC9mYWItZmlsdGVycy1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUt4RixPQUFPLEVBQUUsZ0JBQWdCLEVBQXVELGdDQUFnQyxFQUF3QixtQkFBbUIsRUFBRSxzQkFBc0IsRUFBc0MsNkJBQTZCLEVBQUUsa0JBQWtCLEVBQTJCLDhCQUE4QixFQUFtQyxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMVksTUFTYSx3QkFBd0I7SUFpQnpCO0lBQ0Q7SUFDQTtJQUNDO0lBQ0E7SUFDRDtJQUNBO0lBckJGLGVBQWUsR0FBWSxJQUFJLENBQUM7SUFFaEMsdUJBQXVCLENBQTBCO0lBQ2pELGlCQUFpQixHQUFXLENBQUMsQ0FBQztJQUM5QixrQkFBa0IsR0FBVyxDQUFDLENBQUMsQ0FBQztJQUV2QyxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUMvQixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxZQUNVLE1BQWMsRUFDZixrQkFBc0MsRUFDdEMsZ0JBQWtDLEVBQ2pDLG9CQUEwQyxFQUMxQyxxQkFBNEMsRUFDN0MscUJBQTRDLEVBQzVDLGlCQUFvQztRQU5uQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2YsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2pDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM3QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFBSSxDQUFDO0lBRWxELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBFLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNyRSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtvQkFDekUsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRDthQUNGO1lBRUQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsRUFBRSxnQkFBZ0IsSUFBSSxJQUFJLEVBQUU7WUFDMUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDNUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRTtvQkFDeEUsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0scUJBQXFCO1FBQzFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDekUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRTtnQkFDaEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNuRixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRTt3QkFDekUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsSUFBSSxJQUFJLEVBQUU7NEJBQzVGLE9BQU8sSUFBSSxDQUFDO3lCQUNiO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLEVBQUUsZ0JBQWdCLElBQUksSUFBSSxFQUFFO1lBQ2xGLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLDRCQUE0QixFQUFFLHlCQUF5QixJQUFJLElBQUksRUFBRTtZQUMzRixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sYUFBYTtRQUVsQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQyw2QkFBNkIsSUFBSSxJQUFJLEVBQUU7WUFDOUYsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDeEUsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN4SztTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxRyxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO1lBQ25ELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixFQUFFLGVBQWUsSUFBSSxJQUFJLEVBQUU7Z0JBQ3pFLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdkMsSUFBSSxPQUFPLEdBQUcsSUFBSSxnQ0FBZ0MsRUFBRSxDQUFDO1FBRXJELE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQztRQUMzRSxPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUUzQyxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEMsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFO1lBQ3BCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFtQyxFQUFFLEVBQUU7WUFDbEcsNENBQTRDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCLENBQUMsR0FBdUM7UUFDL0QsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ25CLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRTtnQkFDakIsT0FBTyxtQkFBbUIsQ0FBQzthQUM1QjtpQkFDSTtnQkFDSCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtTQUNGO1FBRUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsU0FBUyxDQUFDO1FBRXJELElBQUksU0FBUyxJQUFJLElBQUksRUFBRTtZQUNyQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtvQkFDOUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztpQkFDckM7YUFDRjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFdEMsSUFBSSxVQUFVLElBQUksRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRU0sSUFBSSxDQUFDLFFBQWdCO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV2QyxJQUFJLE9BQU8sR0FBRyxJQUFJLDhCQUE4QixFQUFFLENBQUM7UUFDbkQsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBRTlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVwQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXNDLEVBQUUsRUFBRTtZQUNuRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QztpQkFDSTtnQkFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQzdEO1FBQ0gsQ0FBQyxFQUFFLENBQUMsS0FBZSxFQUFFLEVBQUU7WUFDckIsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUU1QixJQUFJLE9BQU8sR0FBRyxJQUFJLDZCQUE2QixFQUFFLENBQUM7UUFFbEQsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFakcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtZQUNqRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBRXJDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7WUFDckQsSUFBSSxRQUFRLElBQUksSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN6QztZQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQy9CLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0E5TlUsd0JBQXdCOzJGQUF4Qix3QkFBd0IseURDakJyQyxtaElBK0ZBOztTRDlFYSx3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNURVBQRVJfR0xPQkFMX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgRmFicmlrYW50ZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmFicmlrYW50ZW4uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9qZWN0Vmlld01vZGVsLCBDb25maWd1cmF0b3JBcGlDbGllbnQsIEZhYnJpa2FudGVuSW5zdGFuY2VWaWV3TW9kZWwsIEZhYnJpa2FudGVuQ3JlYXRlSW5zdGFuY2VSZXF1ZXN0LCBGYWJyaWthbnRlbkFwaUNsaWVudCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSwgRmFicmlrYW50ZW5GaWx0ZXJDYXRlZ29yeVZpZXdNb2RlbCwgR2V0Q29uZmlndXJhdGlvbnNSZXF1ZXN0TW9kZWwsIExvZ2luUmVzcG9uc2VNb2RlbCwgQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwsIEZhYnJpa2FudGVuT3Blbkluc3RhbmNlUmVxdWVzdCwgRmFicmlrYW50ZW5PcGVuSW5zdGFuY2VSZXNwb25zZSB9IGZyb20gJy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZhYi1maWx0ZXJzLWlucHV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFiLWZpbHRlcnMtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhYi1maWx0ZXJzLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAvL3Byb3ZpZGVyczogW3tcclxuICAvLyAgcHJvdmlkZTogU1RFUFBFUl9HTE9CQUxfT1BUSU9OUywgdXNlVmFsdWU6IHsgZGlzcGxheURlZmF1bHRJbmRpY2F0b3JUeXBlOiBmYWxzZSB9XHJcbiAgLy99XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmFiRmlsdGVyc0lucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIExvYWRpbmdHZW5lcmF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHB1YmxpYyBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbDogQ29uZmlndXJhdGlvbnNWaWV3TW9kZWw7XHJcbiAgcHVibGljIFNlbGVjdGVkUHJvamVjdElkOiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBTZWxlY3RlZEluc3RhbmNlSWQ6IG51bWJlciA9IC0xO1xyXG5cclxuICBwdWJsaWMgZ2V0IFRyYW5zbGF0aW9uQ2F0ZWdvcnkoKSB7XHJcbiAgICByZXR1cm4gVHJhbnNsYXRpb25DYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvblN1YkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHVibGljIEZhYnJpa2FudGVuU2VydmljZTogRmFicmlrYW50ZW5TZXJ2aWNlLFxyXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIEZhYnJpa2FudGVuQXBpQ2xpZW50OiBGYWJyaWthbnRlbkFwaUNsaWVudCxcclxuICAgIHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXHJcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS52YWxpZGF0ZVVzZXJXaXRob3V0TmF2aWdhdGUodGhpcy5yb3V0ZXIpO1xyXG5cclxuICAgIGlmICh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5Db25maWd1cmF0b3JSaWdodHMoKSkge1xyXG4gICAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFByb2plY3RWaWV3TW9kZWwoKTogUHJvamVjdFZpZXdNb2RlbCB7XHJcbiAgICBpZiAodGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0cyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzW2ldLmlkID09IHRoaXMuU2VsZWN0ZWRQcm9qZWN0SWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwucHJvamVjdHNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQcm9qZWN0Vmlld01vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgUmVzZXRBbGxGaWx0ZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuUmVzZXRBbGxGaWx0ZXJzKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dDYXRlZ29yaWVzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5maWx0ZXJDYXRlZ29yaWVzICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmZpbHRlckNhdGVnb3JpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZWxlY3RlZFByb2R1Y3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dBZmZlY3RzT25seUJlc3RlaygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsPy5pbnB1dHMgIT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuaW5wdXRzW2ldLmZpbHRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHNbaV0uZmlsdGVyPy5hZmZlY3RzT25seUJlc3RlayA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd0lucHV0Q29kZSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsPy5pbnB1dENvZGVFbmFibGVkID09IHRydWUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFNob3dUd29Db2x1bW5zKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuU2V0dGluZ3NWaWV3TW9kZWw/LmFkZEVuYWJsZVR3b0NvbHVtbkZpbHRlcnMgPT0gdHJ1ZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0SGVhZGVyTmFtZSgpOiBzdHJpbmcge1xyXG5cclxuICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblNldHRpbmdzVmlld01vZGVsLnNob3dQcm9kdWN0TmFtZUluRmlsdGVyc0lucHV0ID09IHRydWUpIHtcclxuICAgICAgaWYgKHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLnNlbGVjdGVkUHJvZHVjdCAhPSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LlByb2R1Y3QsIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRmFicmlrYW50ZW5WaWV3TW9kZWwuc2VsZWN0ZWRQcm9kdWN0LmlkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuRmlsdGVycyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2hvd1NhdmVDb25mKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLkNvbmZpZ3VyYXRvclJpZ2h0cygpKSB7XHJcbiAgICAgIGlmICh0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbD8uc2VsZWN0ZWRQcm9kdWN0ICE9IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTYXZlQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZ0dlbmVyYXRlID0gdHJ1ZTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuQ3JlYXRlSW5zdGFuY2VSZXF1ZXN0KCk7XHJcblxyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0LnByb2plY3RJZCA9IHRoaXMuU2VsZWN0ZWRQcm9qZWN0SWQ7XHJcblxyXG4gICAgdmFyIHVuaXF1ZUNvZGUgPSB0aGlzLkdldFVuaXF1ZUNvZGUoKTtcclxuXHJcbiAgICBpZiAodW5pcXVlQ29kZSAhPSBcIlwiKSB7XHJcbiAgICAgIHJlcXVlc3QudW5pcXVlQ29kZSA9IHVuaXF1ZUNvZGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5GYWJyaWthbnRlbkFwaUNsaWVudC5jcmVhdGVJbnN0YW5jZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkluc3RhbmNlVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIC8vdGhpcy5GYWJyaWthbnRlbkluc3RhbmNlVmlld01vZGVsID0gbW9kZWw7XHJcbiAgICAgIHRoaXMuTG9hZENvbmZpZ3VyYXRpb25zKCk7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgIHRoaXMuTG9hZGluZ0dlbmVyYXRlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0SGVhZGVyQXJpYUxhYmVsKGNhdDogRmFicmlrYW50ZW5GaWx0ZXJDYXRlZ29yeVZpZXdNb2RlbCk6IHN0cmluZyB7XHJcbiAgICBpZiAoY2F0LmNhbkJlT3BlbmVkKSB7XHJcbiAgICAgIGlmIChjYXQuY29tcGxldGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIFwiZW5hYmxlZC1jb21wbGV0ZWRcIjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXR1cm4gXCJlbmFibGVkXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJkaXNhYmxlZF9hZlwiO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFVuaXF1ZUNvZGUoKTogc3RyaW5nIHtcclxuICAgIHZhciBpbnN0YW5jZXMgPSB0aGlzLkdldFByb2plY3RWaWV3TW9kZWwoKS5pbnN0YW5jZXM7XHJcblxyXG4gICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGluc3RhbmNlc1tpXS5pZCA9PSB0aGlzLlNlbGVjdGVkSW5zdGFuY2VJZCkge1xyXG4gICAgICAgICAgcmV0dXJuIGluc3RhbmNlc1tpXS51bmlxdWVDb2RlICsgXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJcIjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBTZWxlY3RJbnN0YW5jZSgpOiB2b2lkIHtcclxuICAgIHZhciB1bmlxdWVDb2RlID0gdGhpcy5HZXRVbmlxdWVDb2RlKCk7XHJcblxyXG4gICAgaWYgKHVuaXF1ZUNvZGUgIT0gXCJcIikge1xyXG4gICAgICB0aGlzLk9wZW4odW5pcXVlQ29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgT3BlbihvcGVuY29kZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Mb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuT3Blbkluc3RhbmNlUmVxdWVzdCgpO1xyXG4gICAgcmVxdWVzdC5zZXNzaW9uSWQgPSB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5zZXNzaW9uSWQ7XHJcbiAgICByZXF1ZXN0Lmluc3RhbmNlSWQgPSBvcGVuY29kZTtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZXNldFRhYnMoKTtcclxuXHJcbiAgICB0aGlzLkZhYnJpa2FudGVuQXBpQ2xpZW50Lm9wZW5JbnN0YW5jZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbk9wZW5JbnN0YW5jZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChtb2RlbC5lcnJvcikge1xyXG4gICAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5SZWxvYWRNb2RlbCh0aGlzLkNoYW5nZURldGVjdG9yUmVmKTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgIHRoaXMuRmFicmlrYW50ZW5TZXJ2aWNlLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgdGhpcy5DaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgTG9hZENvbmZpZ3VyYXRpb25zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nR2VuZXJhdGUgPSB0cnVlO1xyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEdldENvbmZpZ3VyYXRpb25zUmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmdldENvbmZpZ3VyYXRpb25zKHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IENvbmZpZ3VyYXRpb25zVmlld01vZGVsKSA9PiB7XHJcbiAgICAgIHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIHZhciBwcm9qZWN0cyA9IHRoaXMuQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwucHJvamVjdHM7XHJcbiAgICAgIGlmIChwcm9qZWN0cyAhPSBudWxsICYmIHByb2plY3RzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUHJvamVjdElkID0gcHJvamVjdHNbMF0uaWQ7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5Mb2FkaW5nR2VuZXJhdGUgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nR2VuZXJhdGUgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXZpZXctbWFyZ2luXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZpbHRlci12aWV3LWhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlci12aWV3LWhlYWRlci1oMVwiPlxyXG4gICAgICA8aDE+e3sgR2V0SGVhZGVyTmFtZSgpIH19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIlNob3dJbnB1dENvZGUoKVwiPlxyXG4gICAgICA8YXBwLWZhYi1pbnB1dC1jb2RlPjwvYXBwLWZhYi1pbnB1dC1jb2RlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLXZpZXctaGVhZGVyLXJlc2V0XCIgKGNsaWNrKT1cIlJlc2V0QWxsRmlsdGVycygpXCI+XHJcbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Db21tb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuUmVzZXRGaWx0ZXJzKSB9fVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2hvd0NhdGVnb3JpZXMoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0cy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7J3R3by1jb2x1bW5zJzogU2hvd1R3b0NvbHVtbnMoKSB9XCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGlucHV0dmlld21vZGVsIG9mIEZhYnJpa2FudGVuU2VydmljZS5GYWJyaWthbnRlblZpZXdNb2RlbC5pbnB1dHM7IGluZGV4IGFzIGlcIj5cclxuICAgICAgICA8YXBwLWZhYi1pbnB1dCBbaW5wdXRdPVwiaW5wdXR2aWV3bW9kZWxcIiBbbmdDbGFzc109XCJ7J2NvbDEnOiBpICUgMiA9PSAwLCAnY29sMic6IGkgJSAyID09IDEgfVwiPjwvYXBwLWZhYi1pbnB1dD5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd0FmZmVjdHNPbmx5QmVzdGVrKClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFmZmVjdHMtb25seS1iZXN0ZWtcIj5cclxuICAgICAgICA8c3Bhbj48c3VwPjE8L3N1cD48L3NwYW4+XHJcbiAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkNvbW1vbiwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5BZmZlY3RzT25seUJlc3RlaykgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiAqbmdJZj1cIlNob3dDYXRlZ29yaWVzKClcIj5cclxuICAgIDxtYXQtc3RlcHBlciBvcmllbnRhdGlvbj1cInZlcnRpY2FsXCIgW2xpbmVhcl09XCJ0cnVlXCIgI3N0ZXBwZXI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwcGVySWNvbj1cImVkaXRcIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgIHt7IGluZGV4ICsgMSB9fVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgPG1hdC1zdGVwICpuZ0Zvcj1cImxldCBjYXQgb2YgRmFicmlrYW50ZW5TZXJ2aWNlLkZhYnJpa2FudGVuVmlld01vZGVsLmZpbHRlckNhdGVnb3JpZXNcIiBzdGF0ZT1cInt7IGNhdC5pZCB9fVwiIFtjb21wbGV0ZWRdPVwiY2F0LmNvbXBsZXRlZFwiIFthcmlhLWxhYmVsbGVkYnldPVwiR2V0SGVhZGVyQXJpYUxhYmVsKGNhdClcIiBbY2xhc3MuY29tcGxldGVkLXN0ZXBdPVwiY2F0LmNvbXBsZXRlZFwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRTdGVwTGFiZWw+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1uYW1lLWRpdlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1uYW1lLWNvbXBsZXRlZFwiICpuZ0lmPVwiY2F0LmNvbXBsZXRlZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInN0ZXAtbmFtZS1jb21wbGV0ZWQtaWNvblwiPmRvbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtbmFtZS1uYW1lXCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVWYWx1ZShUcmFuc2xhdGlvbkNhdGVnb3J5LkZpbHRlckNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIGNhdC5pZCkgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLW5hbWUtaWNvblwiICpuZ0lmPVwiY2F0Lmljb24gIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVscGVyXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJjYXQuaWNvblwiIGNsYXNzPVwiZmlsdGVyLWNhdGVnb3J5LWljb25cIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGlucHV0dmlld21vZGVsIG9mIGNhdC5pbnB1dHNcIj5cclxuICAgICAgICAgIDxhcHAtZmFiLWlucHV0IFtpbnB1dF09XCJpbnB1dHZpZXdtb2RlbFwiPjwvYXBwLWZhYi1pbnB1dD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9tYXQtc3RlcD5cclxuICAgIDwvbWF0LXN0ZXBwZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiAqbmdJZj1cIlNob3dTYXZlQ29uZigpXCIgY2xhc3M9XCJzYXZlLWNvbmYtZGl2XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIkxvYWRpbmdHZW5lcmF0ZVwiPlxyXG4gICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIyMFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFMb2FkaW5nR2VuZXJhdGVcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgUHJvamVjdFxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFByb2plY3RJZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb2plY3Qgb2YgQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwucHJvamVjdHNcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJwcm9qZWN0LmlkXCI+XHJcbiAgICAgICAgICAgIHt7IHByb2plY3QubmFtZSB9fVxyXG4gICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cclxuICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICBVbmlxdWUgQ29kZVxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZEluc3RhbmNlSWRcIiAoc2VsZWN0aW9uQ2hhbmdlKT1cIlNlbGVjdEluc3RhbmNlKClcIj5cclxuICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiLTFcIj5cclxuICAgICAgICAgIE5pZXV3XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGluc3RhbmNlIG9mIEdldFByb2plY3RWaWV3TW9kZWwoKS5pbnN0YW5jZXNcIj5cclxuICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpbnN0YW5jZS5pZFwiPlxyXG4gICAgICAgICAgICB7eyBpbnN0YW5jZS51bmlxdWVDb2RlIH19XHJcbiAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJTYXZlQ29uZmlndXJhdGlvbigpXCIgY2xhc3M9XCJzYXZlLWNvbmYtYnV0dG9uXCI+XHJcbiAgICAgIFNhdmUgQ29uZmlndXJhdGlvblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -69,6 +69,13 @@ class AuthenticationService {
69
69
  }
70
70
  });
71
71
  }
72
+ validateUserWithoutNavigate(router) {
73
+ this.securityApiClient.validateUser(this.currentUserValue).subscribe((model) => {
74
+ if (!model) {
75
+ this.logout();
76
+ }
77
+ });
78
+ }
72
79
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthenticationService, deps: [{ token: i1.SecurityApiClient }], target: i0.ɵɵFactoryTarget.Injectable });
73
80
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: AuthenticationService, providedIn: 'root' });
74
81
  }
@@ -77,4 +84,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
77
84
  type: Injectable,
78
85
  args: [{ providedIn: 'root' }]
79
86
  }], ctorParameters: function () { return [{ type: i1.SecurityApiClient }]; } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHbkQsT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBSTlHLE1BQ2EscUJBQXFCO0lBT1o7SUFMYixZQUFZLEdBQVksS0FBSyxDQUFDO0lBRTdCLGtCQUFrQixDQUFzQztJQUN6RCxXQUFXLENBQWlDO0lBRW5ELFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDN0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUE0QixFQUFFLE9BQStDLEVBQUUsSUFBNkQ7UUFDM0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2RCxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMxQixLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUUxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9ELCtHQUErRztZQUMvRyxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2dCQUN4RCxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXBDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqQjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLGlEQUFpRCxDQUFDLENBQUM7YUFDakU7WUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTSxNQUFNO1FBQ1gsaURBQWlEO1FBRWpELFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQWM7UUFFaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQW5GVSxxQkFBcUI7MkdBQXJCLHFCQUFxQixjQURSLE1BQU07O1NBQ25CLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFNlY3VyaXR5QXBpQ2xpZW50LCBMb2dpblJlcXVlc3RNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsLCBVc2VyUm9sZSB9IGZyb20gJy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcbmltcG9ydCB7IEJlaGVlcklubG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLWlubG9nL2JlaGVlci1pbmxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhlbnRpY2F0aW9uU2VydmljZSB7XHJcblxyXG4gIHB1YmxpYyBMb2FkaW5nTG9naW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBjdXJyZW50VXNlclN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxMb2dpblJlc3BvbnNlTW9kZWw+O1xyXG4gIHB1YmxpYyBjdXJyZW50VXNlcjogT2JzZXJ2YWJsZTxMb2dpblJlc3BvbnNlTW9kZWw+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNlY3VyaXR5QXBpQ2xpZW50OiBTZWN1cml0eUFwaUNsaWVudCkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PExvZ2luUmVzcG9uc2VNb2RlbD4oSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudFVzZXInKSArIFwiXCIpKTtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY3VycmVudFVzZXJWYWx1ZSgpOiBMb2dpblJlc3BvbnNlTW9kZWwge1xyXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFVzZXJTdWJqZWN0LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEFkbWluaXN0cmF0b3JSaWdodHMoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5EZVR3ZWVTbm9la2VuUmlnaHRzKCkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJWYWx1ZT8udXNlclJvbGUgPT0gVXNlclJvbGUuQWRtaW5pc3RyYXRvcikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRGVUd2VlU25vZWtlblJpZ2h0cygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRVc2VyVmFsdWU/LnVzZXJSb2xlID09IFVzZXJSb2xlLkRlVHdlZVNub2VrZW4pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIENvbmZpZ3VyYXRvclJpZ2h0cygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmN1cnJlbnRVc2VyVmFsdWU/LnVzZXJSb2xlID09IFVzZXJSb2xlLkNvbmZpZ3VyYXRvcikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgYmVoZWVyOiBCZWhlZXJJbmxvZ0NvbXBvbmVudCwgc3VjY2VzczogKGJlaGVlcjogQmVoZWVySW5sb2dDb21wb25lbnQpID0+IHZvaWQsIGZhaWw6IChiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50LCBtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQpIHtcclxuICAgIHRoaXMuTG9hZGluZ0xvZ2luID0gdHJ1ZTtcclxuICAgIHZhciBtb2RlbDogTG9naW5SZXF1ZXN0TW9kZWwgPSBuZXcgTG9naW5SZXF1ZXN0TW9kZWwoKTtcclxuICAgIG1vZGVsLnVzZXJOYW1lID0gdXNlcm5hbWU7XHJcbiAgICBtb2RlbC5wYXNzd29yZCA9IHBhc3N3b3JkO1xyXG5cclxuICAgIHRoaXMuc2VjdXJpdHlBcGlDbGllbnQuYXV0aGVudGljYXRlVXNlcihtb2RlbCkuc3Vic2NyaWJlKG1vZGVsID0+IHtcclxuICAgICAgLy8gc3RvcmUgdXNlciBkZXRhaWxzIGFuZCBiYXNpYyBhdXRoIGNyZWRlbnRpYWxzIGluIGxvY2FsIHN0b3JhZ2UgdG8ga2VlcCB1c2VyIGxvZ2dlZCBpbiBiZXR3ZWVuIHBhZ2UgcmVmcmVzaGVzXHJcbiAgICAgIGlmIChtb2RlbC5sb2dpblN1Y2Nlc3MpIHtcclxuICAgICAgICBtb2RlbC5hdXRoRGF0YSA9IHdpbmRvdy5idG9hKHVzZXJuYW1lICsgJzonICsgcGFzc3dvcmQpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW50VXNlcicsIEpTT04uc3RyaW5naWZ5KG1vZGVsKSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChtb2RlbCk7XHJcblxyXG4gICAgICAgIHN1Y2Nlc3MoYmVoZWVyKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmYWlsKGJlaGVlciwgXCJHZWJydWlrZXJzbmFhbSArIHdhY2h0d29vcmQgY29tYmluYXRpZSBvbmJla2VuZFwiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nTG9naW4gPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAvLyByZW1vdmUgdXNlciBmcm9tIGxvY2FsIHN0b3JhZ2UgdG8gbG9nIHVzZXIgb3V0XHJcbiAgICBcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdjdXJyZW50VXNlcicpO1xyXG4gICAgdGhpcy5jdXJyZW50VXNlclN1YmplY3QubmV4dChuZXcgTG9naW5SZXNwb25zZU1vZGVsKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbGlkYXRldXNlcihyb3V0ZXI6IFJvdXRlcik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VjdXJpdHlBcGlDbGllbnQudmFsaWRhdGVVc2VyKHRoaXMuY3VycmVudFVzZXJWYWx1ZSkuc3Vic2NyaWJlKChtb2RlbDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoIW1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICByb3V0ZXIubmF2aWdhdGUoWycvYmVoZWVyL2lubG9nZ2VuJ10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFHbkQsT0FBTyxFQUFxQixpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBSTlHLE1BQ2EscUJBQXFCO0lBT1o7SUFMYixZQUFZLEdBQVksS0FBSyxDQUFDO0lBRTdCLGtCQUFrQixDQUFzQztJQUN6RCxXQUFXLENBQWlDO0lBRW5ELFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3RELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztJQUN2QyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7WUFDOUIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQzdELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLEVBQUU7WUFDN0QsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxNQUE0QixFQUFFLE9BQStDLEVBQUUsSUFBNkQ7UUFDM0wsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQXNCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN2RCxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMxQixLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUUxQixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9ELCtHQUErRztZQUMvRyxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDO2dCQUN4RCxZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRXBDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqQjtpQkFDSTtnQkFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLGlEQUFpRCxDQUFDLENBQUM7YUFDakU7WUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFTSxNQUFNO1FBQ1gsaURBQWlEO1FBRWpELFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0sWUFBWSxDQUFDLE1BQWM7UUFFaEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUN0RixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsTUFBYztRQUUvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQ3RGLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBNUZVLHFCQUFxQjsyR0FBckIscUJBQXFCLGNBRFIsTUFBTTs7U0FDbkIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgU2VjdXJpdHlBcGlDbGllbnQsIExvZ2luUmVxdWVzdE1vZGVsLCBMb2dpblJlc3BvbnNlTW9kZWwsIFVzZXJSb2xlIH0gZnJvbSAnLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuaW1wb3J0IHsgQmVoZWVySW5sb2dDb21wb25lbnQgfSBmcm9tICcuLi9iZWhlZXIvY29tcG9uZW50cy9iZWhlZXItaW5sb2cvYmVoZWVyLWlubG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXV0aGVudGljYXRpb25TZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIExvYWRpbmdMb2dpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGN1cnJlbnRVc2VyU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PExvZ2luUmVzcG9uc2VNb2RlbD47XHJcbiAgcHVibGljIGN1cnJlbnRVc2VyOiBPYnNlcnZhYmxlPExvZ2luUmVzcG9uc2VNb2RlbD47XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VjdXJpdHlBcGlDbGllbnQ6IFNlY3VyaXR5QXBpQ2xpZW50KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9naW5SZXNwb25zZU1vZGVsPihKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpICsgXCJcIikpO1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjdXJyZW50VXNlclZhbHVlKCk6IExvZ2luUmVzcG9uc2VNb2RlbCB7XHJcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlclN1YmplY3QudmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQWRtaW5pc3RyYXRvclJpZ2h0cygpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLkRlVHdlZVNub2VrZW5SaWdodHMoKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlclZhbHVlPy51c2VyUm9sZSA9PSBVc2VyUm9sZS5BZG1pbmlzdHJhdG9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEZVR3ZWVTbm9la2VuUmlnaHRzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJWYWx1ZT8udXNlclJvbGUgPT0gVXNlclJvbGUuRGVUd2VlU25vZWtlbikge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ29uZmlndXJhdG9yUmlnaHRzKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJWYWx1ZT8udXNlclJvbGUgPT0gVXNlclJvbGUuQ29uZmlndXJhdG9yKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBiZWhlZXI6IEJlaGVlcklubG9nQ29tcG9uZW50LCBzdWNjZXNzOiAoYmVoZWVyOiBCZWhlZXJJbmxvZ0NvbXBvbmVudCkgPT4gdm9pZCwgZmFpbDogKGJlaGVlcjogQmVoZWVySW5sb2dDb21wb25lbnQsIG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCkge1xyXG4gICAgdGhpcy5Mb2FkaW5nTG9naW4gPSB0cnVlO1xyXG4gICAgdmFyIG1vZGVsOiBMb2dpblJlcXVlc3RNb2RlbCA9IG5ldyBMb2dpblJlcXVlc3RNb2RlbCgpO1xyXG4gICAgbW9kZWwudXNlck5hbWUgPSB1c2VybmFtZTtcclxuICAgIG1vZGVsLnBhc3N3b3JkID0gcGFzc3dvcmQ7XHJcblxyXG4gICAgdGhpcy5zZWN1cml0eUFwaUNsaWVudC5hdXRoZW50aWNhdGVVc2VyKG1vZGVsKS5zdWJzY3JpYmUobW9kZWwgPT4ge1xyXG4gICAgICAvLyBzdG9yZSB1c2VyIGRldGFpbHMgYW5kIGJhc2ljIGF1dGggY3JlZGVudGlhbHMgaW4gbG9jYWwgc3RvcmFnZSB0byBrZWVwIHVzZXIgbG9nZ2VkIGluIGJldHdlZW4gcGFnZSByZWZyZXNoZXNcclxuICAgICAgaWYgKG1vZGVsLmxvZ2luU3VjY2Vzcykge1xyXG4gICAgICAgIG1vZGVsLmF1dGhEYXRhID0gd2luZG93LmJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2N1cnJlbnRVc2VyJywgSlNPTi5zdHJpbmdpZnkobW9kZWwpKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KG1vZGVsKTtcclxuXHJcbiAgICAgICAgc3VjY2VzcyhiZWhlZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGZhaWwoYmVoZWVyLCBcIkdlYnJ1aWtlcnNuYWFtICsgd2FjaHR3b29yZCBjb21iaW5hdGllIG9uYmVrZW5kXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdMb2dpbiA9IGZhbHNlO1xyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvZ291dCgpIHtcclxuICAgIC8vIHJlbW92ZSB1c2VyIGZyb20gbG9jYWwgc3RvcmFnZSB0byBsb2cgdXNlciBvdXRcclxuICAgIFxyXG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2N1cnJlbnRVc2VyJyk7XHJcbiAgICB0aGlzLmN1cnJlbnRVc2VyU3ViamVjdC5uZXh0KG5ldyBMb2dpblJlc3BvbnNlTW9kZWwoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdmFsaWRhdGV1c2VyKHJvdXRlcjogUm91dGVyKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5zZWN1cml0eUFwaUNsaWVudC52YWxpZGF0ZVVzZXIodGhpcy5jdXJyZW50VXNlclZhbHVlKS5zdWJzY3JpYmUoKG1vZGVsOiBib29sZWFuKSA9PiB7XHJcbiAgICAgIGlmICghbW9kZWwpIHtcclxuICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgIHJvdXRlci5uYXZpZ2F0ZShbJy9iZWhlZXIvaW5sb2dnZW4nXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHZhbGlkYXRlVXNlcldpdGhvdXROYXZpZ2F0ZShyb3V0ZXI6IFJvdXRlcik6IHZvaWQge1xyXG5cclxuICAgIHRoaXMuc2VjdXJpdHlBcGlDbGllbnQudmFsaWRhdGVVc2VyKHRoaXMuY3VycmVudFVzZXJWYWx1ZSkuc3Vic2NyaWJlKChtb2RlbDogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoIW1vZGVsKSB7XHJcbiAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==