info-library 2.10.18 → 2.10.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/info-library.umd.js +372 -30
- package/bundles/info-library.umd.js.map +1 -1
- package/bundles/info-library.umd.min.js +1 -1
- package/bundles/info-library.umd.min.js.map +1 -1
- package/controls/grid/grid.component.d.ts +4 -2
- package/esm2015/controls/grid/grid.component.js +25 -15
- package/esm2015/layouts/topbar/topbar.component.js +6 -5
- package/esm2015/service/authentication.service.js +40 -9
- package/fesm2015/info-library.js +68 -26
- package/fesm2015/info-library.js.map +1 -1
- package/info-library.metadata.json +1 -1
- package/layouts/topbar/topbar.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -226,14 +226,15 @@ export class InfoTopbarComponent {
|
|
|
226
226
|
}));
|
|
227
227
|
}
|
|
228
228
|
/**
|
|
229
|
-
* @param {?} id
|
|
230
229
|
* @param {?} read
|
|
231
230
|
* @param {?} access
|
|
232
231
|
* @param {?} remove
|
|
233
232
|
* @return {?}
|
|
234
233
|
*/
|
|
235
|
-
setNotificationStatus(
|
|
236
|
-
this.
|
|
234
|
+
setNotificationStatus(read, access, remove) {
|
|
235
|
+
if (this.notifications.Count == 0)
|
|
236
|
+
return;
|
|
237
|
+
this._dataService.post(this.notificationapi, { Id: '00000000-0000-0000-0000-000000000000', Acesso: access, Leitura: read, Exclusao: remove }, this.notificationpostmethod)
|
|
237
238
|
.subscribe((/**
|
|
238
239
|
* @param {?} r
|
|
239
240
|
* @return {?}
|
|
@@ -264,7 +265,7 @@ export class InfoTopbarComponent {
|
|
|
264
265
|
InfoTopbarComponent.decorators = [
|
|
265
266
|
{ type: Component, args: [{
|
|
266
267
|
selector: 'info-topbar',
|
|
267
|
-
template: "<ng-container *ngIf=\"_platform.Config.ux >= 3\">\r\n <div class=\"site-navbar\">\r\n <a class=\"logo\" >\r\n <i class=\"logo-img\"></i>\r\n <i class=\"logo-img-resp\"></i>\r\n </a>\r\n \r\n <div class=\"nav-items\">\r\n <div class=\"nav-item usuario-logado\">\r\n <dl (click)=\"navigate(profileurl)\">\r\n <dt>{{ _session.Perfil }}</dt>\r\n <dd>{{ _session.Usuario }}</dd>\r\n <mat-icon class=\"icon-out\">verified</mat-icon>\r\n </dl>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-empresa\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <dl (click)=\"open('empresa')\">\r\n <dt>{{ 'Empresa' | translate }}</dt>\r\n <dd>{{ _session.Empresa }}</dd>\r\n <mat-icon class=\"icon-out\">shield</mat-icon>\r\n </dl>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Empresas' | translate }}</h4>\r\n \r\n <ul class=\"empresas\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(-1, true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n \r\n <div class=\"menu-lateral-direita\" >\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Notificacoes' | translate }}</h4>\r\n \r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n \r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <dl>\r\n <dt>{{ 'Dia' | translate }} {{ item.Date }}</dt>\r\n <dd [innerHtml]=\"item.Description | translate\"></dd>\r\n </dl>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <!-- <div class=\"nav-item\">\r\n <button mat-icon-button (click)=\"alternarModo()\" [matTooltip]=\"'AlternarModo' | translate\"><mat-icon>brightness_6</mat-icon></button>\r\n </div> -->\r\n \r\n <div class=\"nav-item selecao-tema\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Temas' | translate }}</h4>\r\n \r\n <ul class=\"temas\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"_platform.Config.enabledPrime\">\r\n <button mat-icon-button [matTooltip]=\"(_platform.ModoPrime ? 'ModoPadrao' : 'Prime') | translate\" (click)=\"toggleMode()\"><mat-icon>brightness_6</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-idioma\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Idiomas' | translate }}</h4>\r\n \r\n <ul class=\"idiomas\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n \r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <sub>{{ 'Menu' | translate }}</sub>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"_platform.Config.ux <= 2\">\r\n <div class=\"site-navbar\">\r\n <div class=\"sessao-clone text-lightgray\" *ngIf=\"_session.Clone\">\r\n <div><label>({{ 'ModoClone' | translate }})</label></div>\r\n </div>\r\n\r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n\r\n <h1 id=\"page-title\" class=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon> {{ _platform.PaginaAtiva.Titulo | translate }}\r\n </h1>\r\n\r\n <div class=\"nav-items\">\r\n <div class=\"nav-item user-profile\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <button mat-button (click)=\"open('empresa')\">\r\n <mat-icon>fingerprint</mat-icon>\r\n <div class=\"name\">\r\n <label>{{ \"Empresa\" | translate }}</label>\r\n <span>{{ _session.Empresa }}</span>\r\n </div>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Empresa' | translate }}</h4>\r\n\r\n <ul class=\"company\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(-1, true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Notificacoes' | translate }}</h4>\r\n\r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications_off</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n\r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <mat-icon>{{ item.Icon }}</mat-icon>\r\n <div class=\"content\">\r\n <span class=\"desc\" [innerHtml]=\"item.Description | translate\"></span>\r\n <span class=\"date\">{{ item.Date }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Idioma' | translate }}</h4>\r\n <ul class=\"languages\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Temas' | translate }}</h4>\r\n <ul class=\"themes\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"profileurl != ''\">\r\n <button mat-icon-button [matTooltip]=\"'MeuPerfil' | translate\" [routerLink]=\"profileurl\"><mat-icon>person</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<section class=\"loading-bar\" *ngIf=\"loading\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar></section>\r\n<div class=\"block\" *ngIf=\"loading\"></div>",
|
|
268
|
+
template: "<ng-container *ngIf=\"_platform.Config.ux >= 3\">\r\n <div class=\"site-navbar\">\r\n <a class=\"logo\" >\r\n <i class=\"logo-img\"></i>\r\n <i class=\"logo-img-resp\"></i>\r\n </a>\r\n \r\n <div class=\"nav-items\">\r\n <div class=\"nav-item usuario-logado\">\r\n <dl (click)=\"navigate(profileurl)\">\r\n <dt>{{ _session.Perfil }}</dt>\r\n <dd>{{ _session.Usuario }}</dd>\r\n <mat-icon class=\"icon-out\">verified</mat-icon>\r\n </dl>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-empresa\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <dl (click)=\"open('empresa')\">\r\n <dt>{{ 'Empresa' | translate }}</dt>\r\n <dd>{{ _session.Empresa }}</dd>\r\n <mat-icon class=\"icon-out\">shield</mat-icon>\r\n </dl>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Empresas' | translate }}</h4>\r\n \r\n <ul class=\"empresas\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n \r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n \r\n <div class=\"menu-lateral-direita\" >\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Notificacoes' | translate }}</h4>\r\n \r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n \r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <dl>\r\n <dt>{{ 'Dia' | translate }} {{ item.Date }}</dt>\r\n <dd [innerHtml]=\"item.Description | translate\"></dd>\r\n </dl>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <!-- <div class=\"nav-item\">\r\n <button mat-icon-button (click)=\"alternarModo()\" [matTooltip]=\"'AlternarModo' | translate\"><mat-icon>brightness_6</mat-icon></button>\r\n </div> -->\r\n \r\n <div class=\"nav-item selecao-tema\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Temas' | translate }}</h4>\r\n \r\n <ul class=\"temas\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"_platform.Config.enabledPrime\">\r\n <button mat-icon-button [matTooltip]=\"(_platform.ModoPrime ? 'ModoPadrao' : 'Prime') | translate\" (click)=\"toggleMode()\"><mat-icon>brightness_6</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"nav-item selecao-idioma\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n \r\n <div class=\"menu-lateral-direita\">\r\n <mat-icon class=\"fechar\" (click)=\"close()\">close</mat-icon>\r\n <h4>{{ 'Idiomas' | translate }}</h4>\r\n \r\n <ul class=\"idiomas\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n \r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n \r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <sub>{{ 'Menu' | translate }}</sub>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<ng-container *ngIf=\"_platform.Config.ux <= 2\">\r\n <div class=\"site-navbar\">\r\n <div class=\"sessao-clone text-lightgray\" *ngIf=\"_session.Clone\">\r\n <div><label>({{ 'ModoClone' | translate }})</label></div>\r\n </div>\r\n\r\n <div class=\"navbar-button\" [ngClass]=\"{ 'open' : opened }\" (click)=\"openSidebar()\">\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n <span></span>\r\n </div>\r\n\r\n <h1 id=\"page-title\" class=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon> {{ _platform.PaginaAtiva.Titulo | translate }}\r\n </h1>\r\n\r\n <div class=\"nav-items\">\r\n <div class=\"nav-item user-profile\" [ngClass]=\"{ 'opened' : topMenu.empresa }\">\r\n <button mat-button (click)=\"open('empresa')\">\r\n <mat-icon>fingerprint</mat-icon>\r\n <div class=\"name\">\r\n <label>{{ \"Empresa\" | translate }}</label>\r\n <span>{{ _session.Empresa }}</span>\r\n </div>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Empresa' | translate }}</h4>\r\n\r\n <ul class=\"company\">\r\n <li *ngFor=\"let company of _session.Empresas\" >\r\n <a (click)=\"setCompany(company); divModal.click();\">{{ company.Nome }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened' : topMenu.notificacao }\" *ngIf=\"notificationapi\">\r\n <button mat-icon-button (click)=\"setNotificationStatus(true, false, false);open('notificacao')\" [matTooltip]=\"'Notificacoes' | translate\"><mat-icon>notifications_none</mat-icon>\r\n <span class=\"badge\" *ngIf=\"notifications.Count > 0\">{{ notifications.Count }}</span>\r\n </button>\r\n\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Notificacoes' | translate }}</h4>\r\n\r\n <ul>\r\n <li *ngIf=\"notifications.Itens.length == 0\">\r\n <a style=\"cursor: default;\">\r\n <mat-icon>notifications_off</mat-icon>\r\n <div class=\"content\">\r\n <span>{{ 'TNotificacoesNenhuma' | translate }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n\r\n <ng-container *ngIf=\"notifications.Itens.length > 0\">\r\n <li *ngFor=\"let item of notifications.Itens\">\r\n <a (click)=\"navigate(item.Url);close()\">\r\n <mat-icon>{{ item.Icon }}</mat-icon>\r\n <div class=\"content\">\r\n <span class=\"desc\" [innerHtml]=\"item.Description | translate\"></span>\r\n <span class=\"date\">{{ item.Date }}</span>\r\n </div>\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.idioma }\" *ngIf=\"languages.length > 0\">\r\n <button mat-icon-button (click)=\"open('idioma')\" [matTooltip]=\"'Idioma' | translate\"><mat-icon>public</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Idioma' | translate }}</h4>\r\n <ul class=\"languages\">\r\n <li *ngFor=\"let lang of languages\">\r\n <a (click)=\"setLanguage(lang.lang); divModal.click();\">{{ lang.name | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-item\" [ngClass]=\"{ 'opened': topMenu.tema }\" *ngIf=\"!prodution && themes.length > 0\">\r\n <button mat-icon-button (click)=\"open('tema')\" [matTooltip]=\"'Tema' | translate\"><mat-icon>invert_colors</mat-icon></button>\r\n <div class=\"dropdown-menu\">\r\n <h4 class=\"menu-title\">{{ 'Temas' | translate }}</h4>\r\n <ul class=\"themes\">\r\n <li *ngFor=\"let theme of themes\">\r\n <a (click)=\"setTheme(theme.name); divModal.click();\"> {{ theme.description | translate }}</a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n \r\n <div class=\"nav-item\" *ngIf=\"fastsearchform\">\r\n <button mat-icon-button (click)=\"openFastSearch()\" [matTooltip]=\"fastsearchtitle | translate\">\r\n <mat-icon>search</mat-icon>\r\n </button>\r\n </div>\r\n\r\n <div class=\"nav-item\" *ngIf=\"profileurl != ''\">\r\n <button mat-icon-button [matTooltip]=\"'MeuPerfil' | translate\" [routerLink]=\"profileurl\"><mat-icon>person</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"nav-item\">\r\n <button mat-icon-button [matTooltip]=\"'Sair' | translate\" (click)=\"logout()\"><mat-icon>power_settings_new</mat-icon></button>\r\n </div>\r\n\r\n <div class=\"items-overlay\" (click)=\"close()\" #divModal></div>\r\n </div>\r\n </div>\r\n</ng-container>\r\n\r\n<section class=\"loading-bar\" *ngIf=\"loading\"><mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar></section>\r\n<div class=\"block\" *ngIf=\"loading\"></div>",
|
|
268
269
|
styles: [":host.topmenu{border-bottom-width:0!important;box-shadow:none!important}:host.uxc3{display:block;height:80px;left:0;position:fixed;right:0;top:0;transition:left .2s ease-in-out;z-index:9998}@media screen and (max-width:991px){:host.uxc3{left:0}:host.uxc3 .nav-items{width:100%}:host.uxc3 .logo{position:absolute;top:17px}:host.uxc3 .logo .logo-img{display:none!important}:host.uxc3 .logo .logo-img-resp{display:block!important;height:45px!important}:host.uxc3 .usuario-logado{border-right:none!important;left:-100%;margin:0!important;padding-left:25px!important;padding-top:15px!important;position:absolute;top:70px!important;transition:left .2s ease-in-out;width:calc(100% + 6px)}:host.uxc3 .usuario-logado.menu-aberto{left:0}:host.uxc3 .usuario-logado dl{text-align:left!important}:host.uxc3 .usuario-logado dl dt{display:inline-block;font-size:14px}:host.uxc3 .usuario-logado dl dd{display:inline-block;margin-right:5px;padding-right:20px;position:relative}:host.uxc3 .usuario-logado dl dd:after{content:\"-\";height:10px;position:absolute;right:0;top:2px;width:10px}:host.uxc3 .selecao-empresa{left:-100%;margin:0!important;padding:5px 15px 6px 25px;position:absolute;top:115px!important;transition:left .2s ease-in-out;width:calc(100% + 6px)}:host.uxc3 .selecao-empresa.menu-aberto{left:0}:host.uxc3 .selecao-empresa button,:host.uxc3 .selecao-empresa dl{width:100%!important}}:host.uxc3 .site-navbar{align-items:center;display:flex;flex-wrap:nowrap;height:100%;justify-content:space-between;padding:0 22px}@media screen and (max-width:991px){:host.uxc3 .site-navbar{flex-wrap:wrap}}:host.uxc3 .site-navbar .logo{display:block;height:60px;width:500px}:host.uxc3 .site-navbar .logo .logo-img{display:block;height:100%;width:100%}:host.uxc3 .site-navbar .logo .logo-img-resp{display:none;height:100%;width:100%}:host.uxc3 .site-navbar .navbar-button{cursor:pointer;display:none;height:24px;left:70px;margin:0;position:absolute;top:20px;transform:rotate(0deg);width:35px}@media screen and (max-width:991px){:host.uxc3 .site-navbar .navbar-button{display:block}}:host.uxc3 .site-navbar .navbar-button sub{bottom:-10px;position:absolute;text-transform:uppercase}:host.uxc3 .site-navbar .navbar-button span{display:block;height:3px;opacity:1;position:absolute;top:10px;transform:rotate(0deg);transition:.25s ease-in-out;width:50%}:host.uxc3 .site-navbar .navbar-button span:nth-child(2n){left:50%}:host.uxc3 .site-navbar .navbar-button span:nth-child(odd){left:0}:host.uxc3 .site-navbar .navbar-button span:first-child,:host.uxc3 .site-navbar .navbar-button span:nth-child(2){top:0}:host.uxc3 .site-navbar .navbar-button span:nth-child(3),:host.uxc3 .site-navbar .navbar-button span:nth-child(4){top:10px}:host.uxc3 .site-navbar .navbar-button span:nth-child(5),:host.uxc3 .site-navbar .navbar-button span:nth-child(6){top:20px}:host.uxc3 .site-navbar .navbar-button.open span:first-child,:host.uxc3 .site-navbar .navbar-button.open span:nth-child(6){transform:rotate(45deg)}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(2),:host.uxc3 .site-navbar .navbar-button.open span:nth-child(5){transform:rotate(-45deg)}:host.uxc3 .site-navbar .navbar-button.open span:first-child{left:2px;top:6px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(2){left:calc(50% - 7px);top:6px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(3){left:-50%;opacity:0}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(4){left:100%;opacity:0}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(5){left:2px;top:15px}:host.uxc3 .site-navbar .navbar-button.open span:nth-child(6){left:calc(50% - 7px);top:15px}:host.uxc3 dl{line-height:20px;text-transform:none;transition:border .2s ease-in-out}:host.uxc3 dl dt{font-size:10px;font-weight:500;transition:color .2s ease-in-out}:host.uxc3 dl dd{font-size:14px;font-weight:600;margin-bottom:0;position:relative;top:0;transition:color .2s ease-in-out}:host.uxc3 .selecao-empresa,:host.uxc3 .usuario-logado{cursor:pointer;padding:5px 20px 5px 0;top:-1px}:host.uxc3 .selecao-empresa dl,:host.uxc3 .usuario-logado dl{margin:0;top:5px}:host.uxc3 .selecao-empresa dl mat-icon,:host.uxc3 .usuario-logado dl mat-icon{font-size:22px;position:absolute;right:0;text-align:center;top:17px}:host.uxc3 .usuario-logado{margin:0!important;padding-left:40px}:host.uxc3 .usuario-logado dl{text-align:right}:host.uxc3 .usuario-logado dl mat-icon{left:0}:host.uxc3 .selecao-empresa{margin-right:40px!important;padding-left:20px;padding-right:40px}:host.uxc3 .nav-items{display:block;height:100%;margin:0 -5px;text-align:right}@media screen and (min-width:544px){:host.uxc3 .nav-items{width:100%}}@media screen and (max-width:991px){:host.uxc3 .nav-items{display:block;position:absolute;right:10px;top:0}}:host.uxc3 .nav-items .nav-item{align-items:center;display:inline-block;margin:15px 3px 0 0;text-align:left}@media screen and (min-width:544px){:host.uxc3 .nav-items .nav-item{position:relative}}:host.uxc3 .nav-items .nav-item .mat-button,:host.uxc3 .nav-items .nav-item .mat-icon-button{cursor:pointer;min-width:40px;padding:0;position:relative;transition:color .2s ease-in-out}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper{display:flex;height:100%;padding:5px;width:100%}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .mat-icon,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .mat-icon{font-size:24px;height:30px;line-height:30px;vertical-align:top;width:30px}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .mat-icon .marker,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .mat-icon .marker{border-radius:50%;height:6px;position:absolute;right:0;top:0;width:6px}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-wrapper .badge,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-wrapper .badge{background:#af1b11;border-radius:8px;color:#fff;font-size:10px;line-height:16px;padding:0 5px;position:absolute;right:0;top:0}:host.uxc3 .nav-items .nav-item .mat-button .mat-button-focus-overlay,:host.uxc3 .nav-items .nav-item .mat-button .mat-button-ripple,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-focus-overlay,:host.uxc3 .nav-items .nav-item .mat-icon-button .mat-button-ripple{display:none}:host.uxc3 .nav-items .nav-item .menu-lateral-direita{display:none;height:100%;padding:0;position:fixed;right:0;top:0;width:420px;z-index:9999}@media screen and (max-width:991px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita{left:auto;margin-left:0;right:0}}@media screen and (max-width:543px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita{left:0;margin-left:0;width:100%}}:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{border:10px solid transparent;bottom:100%;content:\"\";left:50%;margin:0 0 0 -10px;position:absolute}@media screen and (max-width:991px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{left:100%;margin-left:-34px}}@media screen and (max-width:543px){:host.uxc3 .nav-items .nav-item .menu-lateral-direita:before{display:none}}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>.fechar{cursor:pointer;font-size:28px;opacity:.8;position:absolute;right:30px;top:30px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>.fechar:hover{opacity:1}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>h4{font-size:24px;font-weight:500;margin:30px 0 30px 38px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul{border-radius:0 0 4px 4px;height:calc(100% - 170px);list-style-type:none;margin:0;overflow-y:auto;padding:0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li:hover{background:rgba(0,0,0,.05)}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li.disabled>a{cursor:default!important;opacity:.4}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li:last-child{border-bottom:0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl{line-height:20px;margin-bottom:0;padding:5px 0}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl dt{font-size:13px;font-weight:600;margin-bottom:5px}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li dl dd{font-size:14px;font-weight:500}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li>a{align-items:center;cursor:pointer;display:flex;font-size:14px;font-weight:500;padding:10px 40px!important;padding:11px;transition:background .2s ease-in-out}:host.uxc3 .nav-items .nav-item .menu-lateral-direita>ul>li>a .mat-icon{background:hsla(0,0%,100%,.1);border-radius:50%;font-size:22px;height:auto;margin-right:11px;padding:7px;width:auto}:host.uxc3 .nav-items .nav-item.opened .lista-empresas,:host.uxc3 .nav-items .nav-item.opened .menu-lateral-direita{display:block}:host.uxc3 .nav-items .nav-item.opened~.items-overlay{opacity:.5;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out 0s;visibility:visible}:host.uxc3 .nav-items .items-overlay{height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out .2s;visibility:hidden;width:100%;z-index:9998}@media screen and (max-width:991px){:host.uxc3{width:100%}}:host.uxc2{background:#fff;border-bottom:1px solid #e4e9f0;display:block;height:70px;left:240px;position:fixed;right:0;top:0;z-index:9998}@media (max-width:991px){:host.uxc2{left:0}}:host.uxc2 .sessao-clone{background-color:#a80707;padding:8px;position:absolute;top:0;z-index:1}:host.uxc2 .sessao-clone .mat-icon-button{font-size:10px}:host.uxc2 .site-navbar{align-items:center;display:flex;flex-wrap:nowrap;height:100%;justify-content:space-between;padding:0 22px}@media (max-width:991px){:host.uxc2 .site-navbar{flex-wrap:wrap}}:host.uxc2 .site-navbar .navbar-button{cursor:pointer;display:none;height:24px;margin:0;position:relative;transform:rotate(0deg);width:30px}@media (max-width:991px){:host.uxc2 .site-navbar .navbar-button{display:block}}:host.uxc2 .site-navbar .navbar-button span{display:block;height:3px;opacity:1;position:absolute;transform:rotate(0deg);transition:.25s ease-in-out;width:50%}:host.uxc2 .site-navbar .navbar-button span:nth-child(2n){left:50%}:host.uxc2 .site-navbar .navbar-button span:nth-child(odd){left:0}:host.uxc2 .site-navbar .navbar-button span:first-child,:host.uxc2 .site-navbar .navbar-button span:nth-child(2){top:0}:host.uxc2 .site-navbar .navbar-button span:nth-child(3),:host.uxc2 .site-navbar .navbar-button span:nth-child(4){top:10px}:host.uxc2 .site-navbar .navbar-button span:nth-child(5),:host.uxc2 .site-navbar .navbar-button span:nth-child(6){top:20px}:host.uxc2 .site-navbar .navbar-button.open span:first-child,:host.uxc2 .site-navbar .navbar-button.open span:nth-child(6){transform:rotate(45deg)}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(2),:host.uxc2 .site-navbar .navbar-button.open span:nth-child(5){transform:rotate(-45deg)}:host.uxc2 .site-navbar .navbar-button.open span:first-child{left:3px;top:6px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(2){left:calc(50% - 3px);top:6px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(3){left:-50%;opacity:0}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(4){left:100%;opacity:0}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(5){left:3px;top:15px}:host.uxc2 .site-navbar .navbar-button.open span:nth-child(6){left:calc(50% - 3px);top:15px}:host.uxc2 .page-title{font-size:1.4rem;font-weight:400;line-height:1;margin:0;width:100%}:host.uxc2 .page-title mat-icon{font-size:1.1em;left:0;top:4px}@media (max-width:991px){:host.uxc2 .page-title{display:none}}:host.uxc2 .nav-items{display:block;height:100%;margin:0 -5px;text-align:right}@media (min-width:544px){:host.uxc2 .nav-items{width:100%}}:host.uxc2 .nav-items .nav-item{align-items:center;display:inline-block;margin:15px 3px 0 0;text-align:left}@media (min-width:544px){:host.uxc2 .nav-items .nav-item{position:relative}}:host.uxc2 .nav-items .nav-item /deep/ .mat-button,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button{cursor:pointer;min-width:40px;padding:0;position:relative;transition:color .2s ease-in-out}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper{display:flex;height:100%;padding:5px;width:100%}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .mat-icon,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .mat-icon{font-size:22px;height:30px;line-height:30px;vertical-align:top;width:30px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .mat-icon .marker,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .mat-icon .marker{border-radius:50%;height:6px;position:absolute;right:0;top:0;width:6px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .badge,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .badge{background:#af1b11;border-radius:8px;color:#fff;font-size:10px;line-height:16px;padding:0 5px;position:absolute;right:0;top:0}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .avatar,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .avatar{border-radius:50%;height:40px;overflow:hidden;width:40px}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name{font-size:12px;line-height:19px;margin-top:-3px;padding-left:10px;text-align:left;top:10px;white-space:nowrap}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name label,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name label{display:block;font-size:10px;line-height:12px;margin:0}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name span,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name span{top:-3px}@media (max-width:991px){:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-wrapper .name,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-wrapper .name{display:none}}:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-focus-overlay,:host.uxc2 .nav-items .nav-item /deep/ .mat-button .mat-button-ripple,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-focus-overlay,:host.uxc2 .nav-items .nav-item /deep/ .mat-icon-button .mat-button-ripple{display:none}:host.uxc2 .nav-items .nav-item .dropdown-menu{box-shadow:0 5px 10px 2px rgba(0,0,0,.25);display:none;left:50%;margin:0 0 0 -150px;padding:0;position:absolute;top:100%;width:300px;z-index:9999}@media (max-width:991px){:host.uxc2 .nav-items .nav-item .dropdown-menu{left:auto;margin-left:0;right:0}}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu{left:0;margin-left:0;width:100%}}:host.uxc2 .nav-items .nav-item .dropdown-menu.calendar{left:-34%}:host.uxc2 .nav-items .nav-item .dropdown-menu.calendar:before{left:60%}:host.uxc2 .nav-items .nav-item .dropdown-menu:before{border:10px solid transparent;bottom:100%;content:\"\";left:50%;margin:0 0 0 -10px;position:absolute}@media (max-width:991px){:host.uxc2 .nav-items .nav-item .dropdown-menu:before{left:100%;margin-left:-34px}}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu:before{display:none}}:host.uxc2 .nav-items .nav-item .dropdown-menu .company a,:host.uxc2 .nav-items .nav-item .dropdown-menu .languages a,:host.uxc2 .nav-items .nav-item .dropdown-menu .themesa a{cursor:pointer!important}:host.uxc2 .nav-items .nav-item .dropdown-menu .themes{max-height:500px}:host.uxc2 .nav-items .nav-item .dropdown-menu .pesquisa-rapida input{color:#fff}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer,:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-title{margin:0;padding:11px;text-align:center}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-title{border-bottom:1px solid hsla(0,0%,100%,.1);color:#fff;font-size:16px;line-height:1.3}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer a{color:#fff}:host.uxc2 .nav-items .nav-item .dropdown-menu .menu-footer a:hover{color:hsla(0,0%,100%,.8)}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul{list-style-type:none;margin:0;max-height:241px;overflow:auto;padding:0}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li{border-bottom:1px solid hsla(0,0%,100%,.05)}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li.disabled>a{cursor:default!important;opacity:.4}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li.disabled>a:hover{background:inherit!important}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li:last-child{border-bottom:0}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a{align-items:center;color:#fff;cursor:pointer;display:flex;padding:11px;transition:background .2s ease-in-out}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .mat-icon{background:hsla(0,0%,100%,.1);border-radius:50%;font-size:22px;height:auto;margin-right:11px;padding:7px;width:auto}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .avatar{border-radius:50%;height:40px;margin-right:11px;width:40px}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content{font-size:.85rem}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .desc{display:block}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .date{display:block;font-size:.75rem;font-style:italic;margin-top:4px;opacity:.6}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .meta{align-items:flex-end;display:flex;justify-content:space-between;line-height:1.3;margin-bottom:4px}:host.uxc2 .nav-items .nav-item .dropdown-menu>ul>li>a .content .meta .date{margin:0 0 0 11px}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu{left:auto;right:0;width:220px}@media (max-width:543px){:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu{width:100%}}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu:before{display:none}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu>ul>li>a{cursor:pointer;padding-bottom:8px;padding-top:8px}:host.uxc2 .nav-items .nav-item .dropdown-menu.mini-menu>ul>li>a .fa{margin-right:11px;min-width:15px}:host.uxc2 .nav-items .nav-item.opened .dropdown-menu{display:block}:host.uxc2 .nav-items .nav-item.opened~.items-overlay{opacity:1;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out 0s;visibility:visible}:host.uxc2 .nav-items .items-overlay{height:100%;left:0;opacity:0;position:fixed;top:0;transition:opacity .2s ease-in-out 0s,visibility 0s ease-in-out .2s;visibility:hidden;width:100%;z-index:9998}"]
|
|
269
270
|
}] }
|
|
270
271
|
];
|
|
@@ -384,4 +385,4 @@ if (false) {
|
|
|
384
385
|
*/
|
|
385
386
|
InfoTopbarComponent.prototype._element;
|
|
386
387
|
}
|
|
387
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy90b3BiYXIvdG9wYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTy9ELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7O0lBNkI1QixZQUFvQixpQkFBdUMsRUFDeEMsc0JBQWlELEVBQVUsWUFBNkIsRUFDdkYsYUFBK0IsRUFBVSxPQUFlLEVBQVUsT0FBd0IsRUFDM0YsUUFBMEIsRUFBUyxTQUE0QixFQUFVLE1BQWlCLEVB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T25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbmZvRGlhbG9nTW9kYWwgfSBmcm9tICcuLi9kaWFsb2cvZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dCdXR0b25zIH0gZnJvbSAnLi4vLi4vZW51bSc7XHJcbmltcG9ydCB7IEluZm9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9BdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9UaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvTm90aWZpY2F0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9ub3RpZmljYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvU2Vzc2lvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvc2Vzc2lvbi5tb2RlbCc7IFxyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLXRvcGJhcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9wYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RvcGJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvVG9wYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIG9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbGFuZ3VhZ2VzOiBhbnkgPSBbXTtcclxuICAgIEBJbnB1dCgpIHRoZW1lczogYW55ID0gW107XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25hcGk6IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25nZXRtZXRob2Q6IHN0cmluZyA9ICdHZXQnO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9ucG9zdG1ldGhvZDogc3RyaW5nID0gJ1Bvc3ROb3RpZmljYXRpb24nO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9udmVyaWZ5bWV0aG9kOiBzdHJpbmcgPSAnVmVyaWZ5JztcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnZlcmlmeWVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgZmFzdHNlYXJjaGZvcm06IGFueSA9IG51bGw7XHJcbiAgICBASW5wdXQoKSBmYXN0c2VhcmNoZm9ybXdpZHRoOiBudW1iZXIgPSAxMjAwO1xyXG4gICAgQElucHV0KCkgZmFzdHNlYXJjaHRpdGxlOiBzdHJpbmcgPSAnUGVzcXVpc2FSYXBpZGFDYXJ0ZWlyYSc7XHJcbiAgICBASW5wdXQoKSBwcm9maWxldXJsOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHNldHRoZW1lb25jaGFuZ2Vjb21wYW55OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgb25jaGFuZ2VzdGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBtb2RhbFJlZjogYW55ID0gbnVsbDtcclxuICAgIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByb2R1dGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbm90aWZpY2F0aW9uczogSW5mb05vdGlmaWNhdGlvbk1vZGVsID0gbmV3IEluZm9Ob3RpZmljYXRpb25Nb2RlbCgpO1xyXG5cclxuICAgIHRvcE1lbnU6IGFueSA9IHtcclxuICAgICAgICBlbXByZXNhOiBmYWxzZSxcclxuICAgICAgICB0ZW1hOiBmYWxzZSxcclxuICAgICAgICBpZGlvbWE6IGZhbHNlLFxyXG4gICAgICAgIG5vdGlmaWNhY2FvOiBmYWxzZSxcclxuICAgICAgICBjYWxlbmRhcmlvOiBmYWxzZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBJbmZvVHJhbnNsYXRlU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX2F1dGhlbnRpY2F0aW9uU2VydmljZTogSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90aGVtZVNlcnZpY2U6IEluZm9UaGVtZVNlcnZpY2UsIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwcml2YXRlIF9kaWFsb2c6IEluZm9EaWFsb2dNb2RhbCwgXHJcbiAgICAgICAgICAgICAgICBwdWJsaWMgX3Nlc3Npb246IEluZm9TZXNzaW9uTW9kZWwsIHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLCBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtLkNvbmZpZy50b3BNZW51KVxyXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3BtZW51Jyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHRoaXMucHJvZHV0aW9uID0gdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnByb2R1Y3Rpb247XHJcbiAgICAgICAgdGhpcy5nZXROb3RpZmljYXRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29tcGFueShjb21wYW55KSB7XHJcbiAgICAgICAgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLnRyb2NhckVtcHJlc2EodGhpcy5fc2Vzc2lvbi5Mb2dpbiwgY29tcGFueS5JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuc3VjY2Vzcykge1xyXG5cclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2V0QXR0cmlidXRlKCdsb2FkaW5nJywgJ3RydWUnKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvbi5QZXJtaXNzb2VzID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLkVtcHJlc2FJZCA9IGNvbXBhbnkuSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLkVtcHJlc2EgPSBjb21wYW55Lk5vbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLlRlbWFJZCA9IGNvbXBhbnkuVGVtYUlkO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnNldFRoZW1lQnlMb2dnZWRDb21wYW55KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJEYXNoYm9hcmRcIik7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9wbGF0Zm9ybS5TZXNzaW9uS2V5LCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzaW9uKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnJykudGhlbihyID0+IGxvY2F0aW9uLnJlbG9hZCgpKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2UgdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmxvZ291dCgpO1xyXG4gICAgICAgIH0sIGVyciA9PiB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLnNldChsYW5ndWFnZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0VGhlbWUodGhlbWUpIHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCd0b3BiYXIuc2V0VGhlbWUnLCB0aGVtZSk7XHJcbiAgICAgICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnNldFRoZW1lKHRoZW1lKTtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVNb2RlKCl7XHJcbiAgICAgICAgdGhpcy5fdGhlbWVTZXJ2aWNlLnNldE1vZGVQcmltZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5GYXN0U2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kYWxSZWYgIT0gbnVsbCkgXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZiA9IHRoaXMuX21vZGFsLm9wZW4odGhpcy5mYXN0c2VhcmNoZm9ybSwge1xyXG4gICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLmZhc3RzZWFyY2hmb3Jtd2lkdGggKyAncHgnXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmxvYWRpbmcgJiYgKHIua2V5ID09IFwiRXNjYXBlXCIgfHwgci5rZXkgPT0gXCJFc2NcIiB8fCByLmtleSA9PSBcIjI3XCIpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGFsUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHIgPT4geyB0aGlzLm1vZGFsUmVmID0gbnVsbCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuKGFjaHRpdmVNZW51KSB7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmVtcHJlc2EgPSBhY2h0aXZlTWVudSA9PSAnZW1wcmVzYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LnRlbWEgPSBhY2h0aXZlTWVudSA9PSAndGVtYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmlkaW9tYSA9IGFjaHRpdmVNZW51ID09ICdpZGlvbWEnO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5ub3RpZmljYWNhbyA9IGFjaHRpdmVNZW51ID09ICdub3RpZmljYWNhbyc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmNhbGVuZGFyaW8gPSBhY2h0aXZlTWVudSA9PSAnY2FsZW5kYXJpbyc7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmVtcHJlc2EgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUudGVtYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5pZGlvbWEgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUubm90aWZpY2FjYW8gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuY2FsZW5kYXJpbyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5TaWRlYmFyKCkge1xyXG4gICAgICAgIHRoaXMub3BlbmVkID0gIXRoaXMub3BlbmVkO1xyXG4gICAgICAgIHRoaXMub25jaGFuZ2VzdGF0ZS5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Tm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZCgpIHx8IHRoaXMubm90aWZpY2F0aW9uYXBpID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB0aGlzLm5vdGlmaWNhdGlvbmdldG1ldGhvZCwgbnVsbCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPSByLmRhdGEuQ291bnQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuSXRlbnMgPSByLmRhdGEuSXRlbnM7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9udmVyaWZ5ZW5hYmxlZClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZlcmlmeU5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHZlcmlmeU5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UuaXNMb2dnZWQoKSB8fCB0aGlzLm5vdGlmaWNhdGlvbmFwaSA9PSBudWxsKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFTZXJ2aWNlLmdldCh0aGlzLm5vdGlmaWNhdGlvbmFwaSwgdGhpcy5ub3RpZmljYXRpb252ZXJpZnltZXRob2QpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuZGF0YSA9PSAtMSlcclxuICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5vdGlmaWNhdGlvbnMuQ291bnQgPT0gci5kYXRhKVxyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMudmVyaWZ5Tm90aWZpY2F0aW9ucygpOyB9LCAxNTAwMCk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZ2V0Tm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldE5vdGlmaWNhdGlvblN0YXR1cyhpZCwgcmVhZCwgYWNjZXNzLCByZW1vdmUpIHtcclxuICAgICAgICB0aGlzLl9kYXRhU2VydmljZS5wb3N0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB7IElkOiBpZCwgQWNlc3NvOiBhY2Nlc3MsIExlaXR1cmE6IHJlYWQsIEV4Y2x1c2FvOiByZW1vdmUgfSwgdGhpcy5ub3RpZmljYXRpb25wb3N0bWV0aG9kKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyID0+IHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9IDApO1xyXG4gICAgfVxyXG5cclxuICAgIG5hdmlnYXRlKHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFt1cmwucmVwbGFjZSgnLyMnLCAnJyldKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nLlllc09yTm8oJ0Rlc2VqYVJlYWxtZW50ZVNhaXInKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLmJ1dHRvbiA9PSBJbmZvRGlhbG9nQnV0dG9ucy5ZZXMpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
388
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy90b3BiYXIvdG9wYmFyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBTy9ELE1BQU0sT0FBTyxtQkFBbUI7Ozs7Ozs7Ozs7Ozs7O0lBNkI1QixZQUFvQixpQkFBdUMsRUFDeEMsc0JBQWlELEVBQVUsWUFBNkIsRUFDdkYsYUFBK0IsRUFBVSxPQUFlLEVBQVUsT0FBd0IsRUFDM0YsUUFBMEIsRUFBUyxTQUE0QixFQUFVLE1BQWlCLEVB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dUNBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgUmVuZGVyZXIyLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dNb2RhbCB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0J1dHRvbnMgfSBmcm9tICcuLi8uLi9lbnVtJztcclxuaW1wb3J0IHsgSW5mb1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb1RoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdGhlbWUuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9Ob3RpZmljYXRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL25vdGlmaWNhdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9TZXNzaW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9zZXNzaW9uLm1vZGVsJzsgXHJcbmltcG9ydCB7IEluZm9QbGF0Zm9ybU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvcGxhdGZvcm0ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8tdG9wYmFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b3BiYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9wYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEluZm9Ub3BiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQElucHV0KCkgb3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBsYW5ndWFnZXM6IGFueSA9IFtdO1xyXG4gICAgQElucHV0KCkgdGhlbWVzOiBhbnkgPSBbXTtcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbmFwaTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbmdldG1ldGhvZDogc3RyaW5nID0gJ0dldCc7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb25wb3N0bWV0aG9kOiBzdHJpbmcgPSAnUG9zdE5vdGlmaWNhdGlvbic7XHJcbiAgICBASW5wdXQoKSBub3RpZmljYXRpb252ZXJpZnltZXRob2Q6IHN0cmluZyA9ICdWZXJpZnknO1xyXG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9udmVyaWZ5ZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBmYXN0c2VhcmNoZm9ybTogYW55ID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIGZhc3RzZWFyY2hmb3Jtd2lkdGg6IG51bWJlciA9IDEyMDA7XHJcbiAgICBASW5wdXQoKSBmYXN0c2VhcmNodGl0bGU6IHN0cmluZyA9ICdQZXNxdWlzYVJhcGlkYUNhcnRlaXJhJztcclxuICAgIEBJbnB1dCgpIHByb2ZpbGV1cmw6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KCkgc2V0dGhlbWVvbmNoYW5nZWNvbXBhbnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBPdXRwdXQoKSBvbmNoYW5nZXN0YXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIG1vZGFsUmVmOiBhbnkgPSBudWxsO1xyXG4gICAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJvZHV0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBub3RpZmljYXRpb25zOiBJbmZvTm90aWZpY2F0aW9uTW9kZWwgPSBuZXcgSW5mb05vdGlmaWNhdGlvbk1vZGVsKCk7XHJcblxyXG4gICAgdG9wTWVudTogYW55ID0ge1xyXG4gICAgICAgIGVtcHJlc2E6IGZhbHNlLFxyXG4gICAgICAgIHRlbWE6IGZhbHNlLFxyXG4gICAgICAgIGlkaW9tYTogZmFsc2UsXHJcbiAgICAgICAgbm90aWZpY2FjYW86IGZhbHNlLFxyXG4gICAgICAgIGNhbGVuZGFyaW86IGZhbHNlXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3RyYW5zbGF0ZVNlcnZpY2U6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBfYXV0aGVudGljYXRpb25TZXJ2aWNlOiBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlLCBwcml2YXRlIF9kYXRhU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3RoZW1lU2VydmljZTogSW5mb1RoZW1lU2VydmljZSwgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgX2RpYWxvZzogSW5mb0RpYWxvZ01vZGFsLCBcclxuICAgICAgICAgICAgICAgIHB1YmxpYyBfc2Vzc2lvbjogSW5mb1Nlc3Npb25Nb2RlbCwgcHVibGljIF9wbGF0Zm9ybTogSW5mb1BsYXRmb3JtTW9kZWwsIHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9yZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIF9lbGVtZW50OiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd1eGMnICsgdGhpcy5fcGxhdGZvcm0uQ29uZmlnLnV4KTtcclxuICAgICAgICBcclxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm0uQ29uZmlnLnRvcE1lbnUpXHJcbiAgICAgICAgICAgIHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3RvcG1lbnUnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgdGhpcy5wcm9kdXRpb24gPSB0aGlzLl9wbGF0Zm9ybS5Db25maWcucHJvZHVjdGlvbjtcclxuICAgICAgICB0aGlzLmdldE5vdGlmaWNhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRDb21wYW55KGNvbXBhbnkpIHtcclxuICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UudHJvY2FyRW1wcmVzYSh0aGlzLl9zZXNzaW9uLkxvZ2luLCBjb21wYW55LklkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoJ2xvYWRpbmcnLCAndHJ1ZScpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uLlBlcm1pc3NvZXMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uRW1wcmVzYUlkID0gY29tcGFueS5JZDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uRW1wcmVzYSA9IGNvbXBhbnkuTm9tZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb24uVGVtYUlkID0gY29tcGFueS5UZW1hSWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0VGhlbWVCeUxvZ2dlZENvbXBhbnkoKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcIkRhc2hib2FyZFwiKTtcclxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuX3BsYXRmb3JtLlNlc3Npb25LZXksIEpTT04uc3RyaW5naWZ5KHRoaXMuX3Nlc3Npb24pKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcnKS50aGVuKHIgPT4gbG9jYXRpb24ucmVsb2FkKCkpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLl9hdXRoZW50aWNhdGlvblNlcnZpY2UubG9nb3V0KCk7XHJcbiAgICAgICAgfSwgZXJyID0+IHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uuc2V0KGxhbmd1YWdlKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUaGVtZSh0aGVtZSkge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coJ3RvcGJhci5zZXRUaGVtZScsIHRoZW1lKTtcclxuICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0VGhlbWUodGhlbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZU1vZGUoKXtcclxuICAgICAgICB0aGlzLl90aGVtZVNlcnZpY2Uuc2V0TW9kZVByaW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkZhc3RTZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RhbFJlZiAhPSBudWxsKSBcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGFsUmVmID0gdGhpcy5fbW9kYWwub3Blbih0aGlzLmZhc3RzZWFyY2hmb3JtLCB7XHJcbiAgICAgICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICAgICAgd2lkdGg6IHRoaXMuZmFzdHNlYXJjaGZvcm13aWR0aCArICdweCdcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RhbFJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kYWxSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUociA9PiB7IHRoaXMubW9kYWxSZWYgPSBudWxsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW4oYWNodGl2ZU1lbnUpIHtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuZW1wcmVzYSA9IGFjaHRpdmVNZW51ID09ICdlbXByZXNhJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUudGVtYSA9IGFjaHRpdmVNZW51ID09ICd0ZW1hJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUuaWRpb21hID0gYWNodGl2ZU1lbnUgPT0gJ2lkaW9tYSc7XHJcbiAgICAgICAgdGhpcy50b3BNZW51Lm5vdGlmaWNhY2FvID0gYWNodGl2ZU1lbnUgPT0gJ25vdGlmaWNhY2FvJztcclxuICAgICAgICB0aGlzLnRvcE1lbnUuY2FsZW5kYXJpbyA9IGFjaHRpdmVNZW51ID09ICdjYWxlbmRhcmlvJztcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZSgpIHtcclxuICAgICAgICB0aGlzLnRvcE1lbnUuZW1wcmVzYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS50ZW1hID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3BNZW51LmlkaW9tYSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5ub3RpZmljYWNhbyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudG9wTWVudS5jYWxlbmRhcmlvID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblNpZGViYXIoKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuZWQgPSAhdGhpcy5vcGVuZWQ7XHJcbiAgICAgICAgdGhpcy5vbmNoYW5nZXN0YXRlLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aGVudGljYXRpb25TZXJ2aWNlLmlzTG9nZ2VkKCkgfHwgdGhpcy5ub3RpZmljYXRpb25hcGkgPT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLl9kYXRhU2VydmljZS5nZXQodGhpcy5ub3RpZmljYXRpb25hcGksIHRoaXMubm90aWZpY2F0aW9uZ2V0bWV0aG9kLCBudWxsKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyLnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9IHIuZGF0YS5Db3VudDtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5JdGVucyA9IHIuZGF0YS5JdGVucztcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb252ZXJpZnllbmFibGVkKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZ5Tm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmVyaWZ5Tm90aWZpY2F0aW9ucygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0xvZ2dlZCgpIHx8IHRoaXMubm90aWZpY2F0aW9uYXBpID09IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHRoaXMubm90aWZpY2F0aW9uYXBpLCB0aGlzLm5vdGlmaWNhdGlvbnZlcmlmeW1ldGhvZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICAgICAgICBpZiAoci5kYXRhID09IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9PSByLmRhdGEpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy52ZXJpZnlOb3RpZmljYXRpb25zKCk7IH0sIDE1MDAwKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5nZXROb3RpZmljYXRpb25zKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Tm90aWZpY2F0aW9uU3RhdHVzKHJlYWQsIGFjY2VzcywgcmVtb3ZlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm90aWZpY2F0aW9ucy5Db3VudCA9PSAwKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuX2RhdGFTZXJ2aWNlLnBvc3QodGhpcy5ub3RpZmljYXRpb25hcGksIHsgSWQ6ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnLCBBY2Vzc286IGFjY2VzcywgTGVpdHVyYTogcmVhZCwgRXhjbHVzYW86IHJlbW92ZSB9LCB0aGlzLm5vdGlmaWNhdGlvbnBvc3RtZXRob2QpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHIgPT4gdGhpcy5ub3RpZmljYXRpb25zLkNvdW50ID0gMCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmF2aWdhdGUodXJsOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3VybC5yZXBsYWNlKCcvIycsICcnKV0pO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZ291dCgpIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2cuWWVzT3JObygnRGVzZWphUmVhbG1lbnRlU2FpcicpLnN1YnNjcmliZShyID0+IHtcclxuICAgICAgICAgICAgaWYgKHIuYnV0dG9uID09IEluZm9EaWFsb2dCdXR0b25zLlllcylcclxuICAgICAgICAgICAgICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5sb2dvdXQoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
* Generated from: service/authentication.service.ts
|
|
4
4
|
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
5
5
|
*/
|
|
6
|
+
import { __awaiter } from "tslib";
|
|
6
7
|
import { Component, Injectable } from '@angular/core';
|
|
7
8
|
import { Router } from '@angular/router';
|
|
8
9
|
import { HttpClient } from '@angular/common/http';
|
|
9
10
|
import { Observable, of } from 'rxjs';
|
|
10
|
-
import { map, catchError } from 'rxjs/operators';
|
|
11
|
+
import { map, catchError, switchMap } from 'rxjs/operators';
|
|
11
12
|
import { InfoSessionModel } from '../model/session.model';
|
|
12
13
|
import { InfoPlatformModel } from '../model/platform.model';
|
|
13
14
|
import { InfoLoginModel } from '../model/login.model';
|
|
@@ -63,20 +64,22 @@ export class InfoAuthenticationService {
|
|
|
63
64
|
this.logout();
|
|
64
65
|
return true;
|
|
65
66
|
}
|
|
67
|
+
/** @type {?} */
|
|
68
|
+
const url = activatedRouteSnapshot.data['URL'] || routerStateSnapshot.url;
|
|
66
69
|
this.refreshSessionTime();
|
|
67
|
-
this.definePaginaAtiva(
|
|
68
|
-
return this.getPermission(
|
|
70
|
+
this.definePaginaAtiva(url);
|
|
71
|
+
return this.getPermission(url, true)
|
|
69
72
|
.pipe(map((/**
|
|
70
73
|
* @return {?}
|
|
71
74
|
*/
|
|
72
75
|
() => {
|
|
73
|
-
if (
|
|
76
|
+
if (url == '/')
|
|
74
77
|
return true;
|
|
75
|
-
if (!this.hasPermission(
|
|
78
|
+
if (!this.hasPermission(url))
|
|
76
79
|
this._router.navigateByUrl('permission');
|
|
77
|
-
if (
|
|
80
|
+
if (url.indexOf('novo') > -1 && !this.hasPermission(url, 'new'))
|
|
78
81
|
this._router.navigateByUrl('permission');
|
|
79
|
-
if (
|
|
82
|
+
if (url.indexOf('visualizar') < -1 && activatedRouteSnapshot.paramMap.get('id') != null && !this.hasPermission(url, 'edit'))
|
|
80
83
|
this._router.navigateByUrl('permission');
|
|
81
84
|
return true;
|
|
82
85
|
}), catchError((/**
|
|
@@ -87,6 +90,27 @@ export class InfoAuthenticationService {
|
|
|
87
90
|
if (error.status == 401)
|
|
88
91
|
this.logout();
|
|
89
92
|
return of(true);
|
|
93
|
+
})))).pipe(switchMap((/**
|
|
94
|
+
* @param {?} res
|
|
95
|
+
* @return {?}
|
|
96
|
+
*/
|
|
97
|
+
(res) => __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
/** @type {?} */
|
|
99
|
+
const permissao = activatedRouteSnapshot.data['Permissao'];
|
|
100
|
+
if (!permissao)
|
|
101
|
+
return true;
|
|
102
|
+
/** @type {?} */
|
|
103
|
+
var params = (permissao[2] || '').replace(RegExp(/\{(.*?)\}/, 'g'), (/**
|
|
104
|
+
* @param {?} _
|
|
105
|
+
* @param {?} p
|
|
106
|
+
* @return {?}
|
|
107
|
+
*/
|
|
108
|
+
(_, p) => activatedRouteSnapshot.params[p]));
|
|
109
|
+
/** @type {?} */
|
|
110
|
+
var r = yield this._dataService.get(permissao[0], permissao[1], params).toPromise();
|
|
111
|
+
if (!r.success || r.data != true)
|
|
112
|
+
this._router.navigateByUrl('permission');
|
|
113
|
+
return true;
|
|
90
114
|
}))));
|
|
91
115
|
}
|
|
92
116
|
/**
|
|
@@ -376,6 +400,8 @@ export class InfoAuthenticationService {
|
|
|
376
400
|
* @return {?}
|
|
377
401
|
*/
|
|
378
402
|
ret => {
|
|
403
|
+
/** @type {?} */
|
|
404
|
+
let permissao = true;
|
|
379
405
|
if (ret.success) {
|
|
380
406
|
if (ret.data == null) {
|
|
381
407
|
this.logout();
|
|
@@ -393,9 +419,14 @@ export class InfoAuthenticationService {
|
|
|
393
419
|
s => s.URL == item.URL && s.ChaveFuncionalidade == item.ChaveFuncionalidade)).length == 0)
|
|
394
420
|
this._sessao.Permissoes.push(item);
|
|
395
421
|
}));
|
|
422
|
+
ret.data.some((/**
|
|
423
|
+
* @param {?} s
|
|
424
|
+
* @return {?}
|
|
425
|
+
*/
|
|
426
|
+
s => s.URL == urlGenerica));
|
|
396
427
|
localStorage.setItem(this._keySessao, JSON.stringify(this._sessao));
|
|
397
428
|
}
|
|
398
|
-
return
|
|
429
|
+
return permissao;
|
|
399
430
|
})), catchError((/**
|
|
400
431
|
* @param {?} error
|
|
401
432
|
* @return {?}
|
|
@@ -630,4 +661,4 @@ if (false) {
|
|
|
630
661
|
*/
|
|
631
662
|
RefreshSessionTimeModalComponent.prototype._ref;
|
|
632
663
|
}
|
|
633
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUE0RCxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLHNCQUFzQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxVQUFVLEVBQW1CLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFMUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7OztBQUsxQyxNQUFNLE9BQU8seUJBQXlCOzs7Ozs7Ozs7SUFNbEMsWUFBb0IsT0FBZSxFQUNmLEtBQWlCLEVBQ2pCLE9BQXlCLEVBQ3pCLFdBQThCLEVBQzlCLFlBQTZCLEVBQzdCLE1BQWlCO1FBTGpCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQWtCO1FBQ3pCLGdCQUFXLEdBQVgs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UUFDSixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVzs7O1FBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDWDtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1FBQ0wsQ0FBQyxHQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsS0FBYztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OztZQTVCSixTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFOzs7O0VBSVQ7YUFDRDs7OztZQWhWbUIsWUFBWTs7OztJQWtWNUIsZ0RBQVU7O0lBQ1Ysb0RBQVM7Ozs7O0lBRUEsZ0RBQTREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEluZm9TZXNzaW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9zZXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9Mb2dpbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvbG9naW4ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL2RhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvZm9ybS1wcm9wLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbmZvTW9kYWxBY3Rpb24gfSBmcm9tICcuLi9lbnVtJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb0F1dGhlbnRpY2F0aW9uU2VydmljZSBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcclxuICAgIHByaXZhdGUgX2tleTogc3RyaW5nID0gJ3Rva2VuJztcclxuICAgIHByaXZhdGUgX2tleVNlc3Nhbzogc3RyaW5nID0gJ3Nlc3Nhbyc7XHJcbiAgICBwcml2YXRlIF9zZXNzaW9uVGltZUludGVydmFsO1xyXG4gICAgcHJpdmF0ZSBfc2Vzc2lvblRpbWU6IG51bWJlciA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9zZXNzYW86IEluZm9TZXNzaW9uTW9kZWwsIFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGFmb3JtYTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9kYXRhU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbW9kYWw6IE1hdERpYWxvZykgeyB9XHJcblxyXG4gICAgZ2V0U2Vzc2FvKCk6IEluZm9TZXNzaW9uTW9kZWx7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3NhbztcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbGF0Zm9ybSgpOiBJbmZvUGxhdGZvcm1Nb2RlbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BsYXRhZm9ybWE7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuQWN0aXZhdGUoYWN0aXZhdGVkUm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgcm91dGVyU3RhdGVTbmFwc2hvdDogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBib29sZWFuIHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAoIXRoaXMuaXNMb2dnZWQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgdGhpcy5kZWZpbmVQYWdpbmFBdGl2YShyb3V0ZXJTdGF0ZVNuYXBzaG90LnVybCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb24ocm91dGVyU3RhdGVTbmFwc2hvdC51cmwsIHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVyU3RhdGVTbmFwc2hvdC51cmwgPT0gJy8nKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKHJvdXRlclN0YXRlU25hcHNob3QudXJsKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3V0ZXJTdGF0ZVNuYXBzaG90LnVybC5pbmRleE9mKCdub3ZvJykgPiAtMSAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHJvdXRlclN0YXRlU25hcHNob3QudXJsLCAnbmV3JykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm91dGVyU3RhdGVTbmFwc2hvdC51cmwuaW5kZXhPZigndmlzdWFsaXphcicpIDwgLTEgJiYgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgIT0gbnVsbCAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHJvdXRlclN0YXRlU25hcHNob3QudXJsLCAnZWRpdCcpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCdwZXJtaXNzaW9uJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0xvZ2dlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2tleSkgIT0gbnVsbCk7XHJcbiAgICB9XHJcblxyXG5cdHJlZnJlc2hTZXNzaW9uVGltZSgpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuX3Nlc3Npb25UaW1lSW50ZXJ2YWwpO1xyXG4gICAgICAgIGlmICh0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZSA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uVGltZSA9IHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uVGltZSA9PSBudWxsKSAge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lID0gdGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGU7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25UaW1lID09IG51bGwgfHwgdGhpcy5fc2Vzc2lvblRpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hTZXNzaW9uVGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uVGltZSA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWUtLTtcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZiA9IHRoaXMuX21vZGFsLm9wZW4oUmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzQwMHB4J1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIubW9kYWxBY3Rpb24gPT0gSW5mb01vZGFsQWN0aW9uLlllcylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgIH1cclxuXHR9XHJcblxyXG4gICAgbG9naW4odXN1YXJpbzogc3RyaW5nLCBzZW5oYTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICB0aGlzLnJlbW92ZVNlc3NhbygpO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vYXV0ZW50aWNhcicsIHsgVXN1YXJpbzogdXN1YXJpbywgU2VuaGE6IHNlbmhhIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fa2V5LCByLkRhdGEuVG9rZW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdHJvY2FyRW1wcmVzYSh1c3VhcmlvOiBzdHJpbmcsIGVtcHJlc2FJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vdHJvY2FyZW1wcmVzYScsIHsgVXN1YXJpbzogdXN1YXJpbywgRW1wcmVzYUlkOiBlbXByZXNhSWQgfSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fa2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGNsb25hcih1c3VhcmlvOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9jbG9uYXInLCB7IFVzdWFyaW86IHVzdWFyaW8gfSwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5TdWNjZXNzICYmIHIuRGF0YSAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fa2V5LCByLkRhdGEpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ2xvZ2luJykudGhlbihyID0+IHsgbG9jYXRpb24ucmVsb2FkKCk7IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBlcm1pc3Npb25zKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5nZXQodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vZ2V0cGVybWlzc2FvP3VybD0nICsgdXJsICsgJyZsb2dhdGl2aWRhZGU9JyArIGxvZ0F0aXZpZGFkZS50b1N0cmluZygpLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUcm9jYVNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9Ucm9jYXJTZW5oYScsIG1vZGVsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZWN1cGVyYXJTZW5oYShtb2RlbDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLnBvc3QodGhpcy5fcGxhdGFmb3JtYS5Db25maWcud2ViYXBpVXJsICsgJ2NlbnRyb2NvbnRyb2xlL3VzdWFyaW8vUmVjdXBlcmFyU2VuaGEnLCBtb2RlbCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmVzZXRhclNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9SZXNldGFyU2VuaGEnLCBtb2RlbCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICBtYXAoKHI6IGFueSkgPT4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9naW5SZXNvdXJjZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvYXBwL0dldExvZ2luUmVzb3VyY2VzJylcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBrZXlGdW5jdGlvbjogc3RyaW5nID0gJ3ZpZXcnKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICh1cmwgPT0gJy8nICYmIGtleUZ1bmN0aW9uID09ICd2aWV3JylcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgIGxldCB1cmxHZW5lcmljYSA9IHRoaXMuZ2V0VXJsR2VuZXJpY2EodXJsKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMuc29tZShzID0+IHMuVVJMID09IHVybEdlbmVyaWNhICYmIHMuQ2hhdmVGdW5jaW9uYWxpZGFkZSA9PSBrZXlGdW5jdGlvbiAmJiBzLkFjZXNzbyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbih1cmw6IHN0cmluZywgbG9nQXRpdmlkYWRlOiBib29sZWFuID0gZmFsc2UpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIGxldCBjb250ZW1VcmwgPSB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EpO1xyXG4gICAgICAgIGlmIChjb250ZW1VcmwpIHtcclxuICAgICAgICAgICAgaWYgKGxvZ0F0aXZpZGFkZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhU2Vzc2FvKHVybCkucGlwZShtYXAocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJldC5zdWNjZXNzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHsgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKGZ1bmN0aW9uIChvYnNlcnZlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UGVybWlzc2lvbnModXJsR2VuZXJpY2EsIGxvZ0F0aXZpZGFkZSkucGlwZShtYXAocmV0ID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXQuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXQuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LmRhdGEuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLmZpbHRlcihzID0+IHMuVVJMID09IGl0ZW0uVVJMICYmIHMuQ2hhdmVGdW5jaW9uYWxpZGFkZSA9PSBpdGVtLkNoYXZlRnVuY2lvbmFsaWRhZGUpLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2FvLlBlcm1pc3NvZXMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fa2V5U2Vzc2FvLCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAxKSB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYVNlc3Nhbyh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby92YWxpZGFzZXNzYW8/dXJsPScgKyB1cmwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwociA9PT0gdHJ1ZSwgJycsIHIpKSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlU2Vzc2FvKCkge1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGxvY2FsU3RvcmFnZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICgha2V5LmluY2x1ZGVzKCdEYXNoYm9hcmQnKSkgZGVsZXRlIGxvY2FsU3RvcmFnZVtrZXldO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGRlZmluZVBhZ2luYUF0aXZhKHVybCkge1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fcGxhdGFmb3JtYS5NZW51ID09IG51bGwgfHwgdXJsID09IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhdXg6IHN0cmluZ1tdID0gdXJsLnN1YnN0cmluZygxKS5yZXBsYWNlKC8tL2csICcnKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgbGV0IHRpdHVsb01lbnU6IHN0cmluZyA9IGF1eC5sZW5ndGggPiAwID8gYXV4WzBdLnRvU3RyaW5nKCkgOiB1cmw7XHJcblxyXG4gICAgICAgIGlmICh0aXR1bG9NZW51LmluZGV4T2YoJ2FzaGJvYXJkJykgPiAtMSlcclxuICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICd3aWRnZXRzJywgVGl0dWxvOiAnRGFzaGJvYXJkJyB9O1xyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGFueSA9IHRoaXMuX3BsYXRhZm9ybWEuTWVudS5maWx0ZXIobSA9PiBtLlRpdGxlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aXR1bG9NZW51KSA+IC0xKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtICE9IG51bGwgJiYgaXRlbS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6IGl0ZW1bMF0uSWNvbiwgVGl0dWxvOiBpdGVtWzBdLlRpdGxlIH07XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5fcGxhdGFmb3JtYS5QYWdpbmFBdGl2YSA9IHsgSWNvbmU6ICdzZWN1cml0eScsIFRpdHVsbzogJ1BsYXRhZm9ybWEnIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFVybEdlbmVyaWNhKHVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmV0b3JubyA9IFwiXCI7XHJcbiAgICAgICAgbGV0IHVybFBhcnRzOiBzdHJpbmdbXSA9IHVybC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdXJsUGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKCFpc05hTihwYXJzZUZsb2F0KHVybFBhcnRzW2ldKSkgfHwgdGhpcy5pc0d1aWQodXJsUGFydHNbaV0pIHx8IHVybFBhcnRzW2ldLnRvTG93ZXJDYXNlKCkgPT0gJ25vdm8nKVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldG9ybm8gKz0gJy8nICsgdXJsUGFydHNbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXRvcm5vLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxpbmcoZTogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlSW5wdXQ8SW5mb0xvZ2luTW9kZWw+IHtcclxuICAgICAgICBpZiAoZS5zdGF0dXMgPT0gNDAxKSBcclxuICAgICAgICAgICAgdGhpcy5sb2dvdXQoKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5zdGF0dXMgPT0gNTAwKVxyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnNTAwJyk7XHJcblxyXG4gICAgICAgIGVsc2UgaWYgKGUuZXJyb3IgIT0gbnVsbCAmJiBlLmVycm9yLmVycm9yX2Rlc2NyaXB0aW9uICE9IG51bGwpXHJcbiAgICAgICAgICAgIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24pKTtcclxuXHJcbiAgICAgICAgZWxzZSByZXR1cm4gb2YobmV3IEluZm9Mb2dpbk1vZGVsKGZhbHNlLCAnSG91dmUgdW0gcHJvYmxlbWEgZSBuw6NvIGZvaSBwb3Nzw612ZWwgY29uZWN0YXInKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpc0d1aWQodmFsdWUpIDogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICh2YWx1ZSB8fCAnJykubWF0Y2goJ15bMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0kJykgIT09IG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8aW5mby1tb2RhbCBtb2RhbHRpdGxlPVwiSW5hdGl2aWRhZGVcIiAob25zYXZlKT1cImF0aXZvKHRydWUpXCIgbGFiZWxzdWJtaXQ9XCJTaW1cIiBsYWJlbGNhbmNlbD1cIih7eyB0aW1lIH19KSB7eyAnTmFvJyB8IHRyYW5zbGF0ZSB9fVwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJmb250LXNpemU6MTMwJVwiPnt7ICdWb2NlQWluZGFFc3RhVXRpbGl6YW5kb1BsYXRhZm9ybWEnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuXHRcdDwvaW5mby1tb2RhbD5cclxuXHRgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudCB7XHJcbiAgICB0aW1lID0gMTU7XHJcbiAgICBpbnRlcnZhbDtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcmVmOiBNYXREaWFsb2dSZWY8UmVmcmVzaFNlc3Npb25UaW1lTW9kYWxDb21wb25lbnQ+KSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWUgPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lLS07XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hdGl2byhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGF0aXZvKGF0aXZvOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fcmVmLmNsb3NlKHsgbW9kYWxBY3Rpb246IGF0aXZvID8gSW5mb01vZGFsQWN0aW9uLlllcyA6IEluZm9Nb2RhbEFjdGlvbi5ObyB9KTtcclxuICAgIH1cclxufSJdfQ==
|
|
664
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvc2VydmljZS9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBNEQsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBcUIsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFtQixFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7Ozs7O0FBSzFDLE1BQU0sT0FBTyx5QkFBeUI7Ozs7Ozs7OztJQU1sQyxZQUFvQixPQUFlLEVBQ2YsS0FBaUIsRUFDakIsT0FBeUIsRUFDekIsV0FBOEIsRUFDOUIsWUFBNkIsRUFDN0IsTUFBaUI7UUFMakIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQW1CO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFpQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBVjdCLFNBQUksR0FBVyxPQUFPLENBQUM7UUFDdkIsZUFBVSxHQUFXLFFBQVEsQ0FBQztRQUU5QixpQkFBWSxHQUFXLElBQUksQ0FBQztJQU9LLENBQUM7Ozs7SUFFMUMsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzs7O0lBRUQsV0FBVztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDOzs7Ozs7SUFFRCxXQUFXLENBQUMsc0JBQThDLEVBQUUsbUJBQXdDO1FBRWhHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUM7U0FDZjs7Y0FFSyxHQUFHLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEdBQUc7UUFFekUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO2FBQ3ZCLElBQUksQ0FDRCxHQUFHOzs7UUFBQyxHQUFHLEVBQUU7WUFDTCxJQUFJLEdBQUcsSUFBSSxHQUFHO2dCQUNWLE9BQU8sSUFBSSxDQUFDO1lBRWhCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFN0MsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUU3QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUM7Z0JBQ3ZILElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTdDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsR0FDRCxVQUFVOzs7O1FBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztnQkFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxFQUFDLENBQ0wsQ0FBQyxDQUFDLElBQUksQ0FDSCxTQUFTOzs7O1FBQUMsQ0FBTSxHQUFHLEVBQUMsRUFBRTs7a0JBQ1osU0FBUyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7WUFFMUQsSUFBSSxDQUFDLFNBQVM7Z0JBQ1YsT0FBTyxJQUFJLENBQUM7O2dCQUVaLE1BQU0sR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUM7Ozs7O1lBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUM7O2dCQUUzRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRTtZQUNuRixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUk7Z0JBQzVCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRTdDLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQSxFQUFDLENBQ0wsQ0FBQztJQUNsQixDQUFDOzs7O0lBRUQsUUFBUTtRQUNKLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7O0lBRUosa0JBQWtCO1FBQ1gsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUVsRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDekIsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFdBQVc7OztZQUFDLEdBQUcsRUFBRTtnQkFDekMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksRUFBRztvQkFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDO29CQUVsRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFFO3dCQUNyRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDMUIsT0FBTztxQkFDVjtpQkFDSjtnQkFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO3FCQUNuQjtvQkFDRCxhQUFhLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7O3dCQUNyQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7d0JBQ3pELElBQUksRUFBRSxJQUFJO3dCQUNWLFlBQVksRUFBRSxJQUFJO3dCQUNsQixLQUFLLEVBQUUsT0FBTztxQkFDakIsQ0FBQztvQkFFRixHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUzs7OztvQkFBQyxDQUFDLENBQW9CLEVBQUUsRUFBRTt3QkFDakQsYUFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3dCQUV6QyxJQUFJLENBQUMsSUFBSSxJQUFJOzRCQUNULElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzs2QkFFYixJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksZUFBZSxDQUFDLEdBQUc7NEJBQ3pDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDOzs0QkFFekIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN2QixDQUFDLEVBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsR0FBRSxJQUFJLENBQUMsQ0FBQztTQUNaO0lBQ1IsQ0FBQzs7Ozs7O0lBRUUsS0FBSyxDQUFDLE9BQWUsRUFBRSxLQUFhO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVwQixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxtQ0FBbUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO2FBQ2pILElBQUksQ0FDRCxHQUFHOzs7O1FBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUk7Z0JBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWxELE9BQU8sSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDLEVBQUMsRUFDRixVQUFVOzs7O1FBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQzlELENBQUM7SUFDakIsQ0FBQzs7Ozs7O0lBRUQsYUFBYSxDQUFDLE9BQWUsRUFBRSxTQUFpQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxzQ0FBc0MsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUM3SyxJQUFJLENBQ0QsR0FBRzs7OztRQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUMzQixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTVDLE9BQU8sSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3RCxDQUFDLEVBQUMsRUFDRixVQUFVOzs7O1FBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQzlELENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsT0FBZTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRywrQkFBK0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDaEosSUFBSSxDQUNELEdBQUc7Ozs7UUFBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSTtnQkFDM0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU1QyxPQUFPLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0QsQ0FBQyxFQUFDLEVBQ0YsVUFBVTs7OztRQUFDLENBQUMsQ0FBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUM5RCxDQUFDO0lBQ2pCLENBQUM7Ozs7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUk7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO0lBQzFFLENBQUM7Ozs7OztJQUVELGNBQWMsQ0FBQyxHQUFXLEVBQUUsZUFBd0IsS0FBSztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRywwQ0FBMEMsR0FBRyxHQUFHLEdBQUcsZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUN2TCxJQUFJLENBQ0QsR0FBRzs7OztRQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQ2xFLFVBQVU7Ozs7UUFBQyxDQUFDLENBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FDOUQsQ0FBQztJQUNqQixDQUFDOzs7OztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLG9DQUFvQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDdEksSUFBSSxDQUNELEdBQUc7Ozs7UUFBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUNsRSxVQUFVOzs7O1FBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQzlELENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxLQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLHVDQUF1QyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7YUFDekksSUFBSSxDQUNELEdBQUc7Ozs7UUFBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxFQUNsRSxVQUFVOzs7O1FBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQzlELENBQUM7SUFDakIsQ0FBQzs7Ozs7SUFFRCxlQUFlLENBQUMsS0FBVTtRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxxQ0FBcUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2FBQ3ZJLElBQUksQ0FDRCxHQUFHOzs7O1FBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFDbEUsVUFBVTs7OztRQUFDLENBQUMsQ0FBb0IsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUM5RCxDQUFDO0lBQ2pCLENBQUM7Ozs7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxzQ0FBc0MsQ0FBQzthQUMvRSxJQUFJLENBQ0QsR0FBRzs7OztRQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQ2xFLFVBQVU7Ozs7UUFBQyxDQUFDLENBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FDOUQsQ0FBQztJQUNqQixDQUFDOzs7Ozs7SUFFRCxhQUFhLENBQUMsR0FBVyxFQUFFLGNBQXNCLE1BQU07UUFFbkQsSUFBSSxHQUFHLElBQUksR0FBRyxJQUFJLFdBQVcsSUFBSSxNQUFNO1lBQ25DLE9BQU8sSUFBSSxDQUFDOztZQUVaLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUk7Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksV0FBVyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxXQUFXLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDO0lBQ3ZILENBQUM7Ozs7OztJQUVELGFBQWEsQ0FBQyxHQUFXLEVBQUUsZUFBd0IsS0FBSzs7WUFFaEQsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDOztZQUN0QyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUM7UUFDdkUsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLFlBQVksRUFBRTtnQkFDZCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUc7Ozs7Z0JBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTzt3QkFDWixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBRWxCLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDLEVBQUMsRUFDRixVQUFVOzs7O2dCQUFDLEtBQUssQ0FBQyxFQUFFO29CQUNmLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO3dCQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BCLENBQUMsRUFBQyxDQUFDLENBQUM7YUFDUDtpQkFBTTtnQkFDSCxPQUFPLElBQUksVUFBVTs7OztnQkFBQyxVQUFVLFFBQVE7b0JBQ3BDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQyxFQUFDLENBQUM7YUFDTjtTQUNKO2FBQU07WUFDSCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUU7O29CQUM3RCxTQUFTLEdBQUcsSUFBSTtnQkFDcEIsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO29CQUNiLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUU7d0JBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzt3QkFDZCxPQUFPLElBQUksQ0FBQztxQkFDZjtvQkFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU87Ozs7b0JBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTTs7Ozt3QkFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFDLENBQUMsTUFBTSxJQUFJLENBQUM7NEJBQ3ZILElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDM0MsQ0FBQyxFQUFDLENBQUM7b0JBRUgsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJOzs7O29CQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxXQUFXLEVBQUMsQ0FBQTtvQkFFeEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ3ZFO2dCQUVELE9BQU8sU0FBUyxDQUFDO1lBQ3JCLENBQUMsRUFBQyxFQUNGLFVBQVU7Ozs7WUFBQyxLQUFLLENBQUMsRUFBRTtnQkFDZixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksR0FBRztvQkFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUMsRUFBQyxDQUFDLENBQUM7U0FDUDtJQUNMLENBQUM7Ozs7O0lBRUQsWUFBWSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsS0FBSzthQUNaLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsMENBQTBDLEdBQUcsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQzthQUMxSSxJQUFJLENBQ0QsR0FBRzs7OztRQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUN0RCxVQUFVOzs7O1FBQUMsQ0FBQyxDQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQzlELENBQUM7SUFDVixDQUFDOzs7O0lBRUQsWUFBWTtRQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO2dCQUFFLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxHQUFHO1FBRWpCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLE9BQU87U0FDVjs7WUFFRyxHQUFHLEdBQWEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7O1lBQzNFLFVBQVUsR0FBVyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBRWpFLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQzthQUV4RTs7Z0JBQ0csSUFBSSxHQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU07Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO1lBRWpHLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Z0JBQzdFLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxHQUFHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUM7U0FDbkY7SUFDTCxDQUFDOzs7OztJQUVELGNBQWMsQ0FBQyxHQUFXOztZQUNsQixPQUFPLEdBQUcsRUFBRTs7WUFDWixRQUFRLEdBQWEsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxNQUFNO2dCQUNsRyxNQUFNOztnQkFFTixPQUFPLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNwQztRQUNELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDOzs7Ozs7SUFFTyxhQUFhLENBQUMsQ0FBb0I7UUFDdEMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUc7WUFDZixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFFYixJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRztZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUVqQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksSUFBSTtZQUN6RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7O1lBRS9ELE9BQU8sRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLEtBQUssRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQzs7Ozs7O0lBRU8sTUFBTSxDQUFDLEtBQUs7UUFDaEIsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsK0VBQStFLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDekgsQ0FBQzs7O1lBeFZKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7OztZQWRrRSxNQUFNO1lBQ2hFLFVBQVU7WUFHVixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBRWpCLGVBQWU7WUFFZixTQUFTOzs7Ozs7OztJQU9kLHlDQUErQjs7Ozs7SUFDL0IsK0NBQXNDOzs7OztJQUN0Qyx5REFBNkI7Ozs7O0lBQzdCLGlEQUFvQzs7Ozs7SUFFeEIsNENBQXVCOzs7OztJQUN2QiwwQ0FBeUI7Ozs7O0lBQ3pCLDRDQUFpQzs7Ozs7SUFDakMsZ0RBQXNDOzs7OztJQUN0QyxpREFBcUM7Ozs7O0lBQ3JDLDJDQUF5Qjs7QUFvVnpDLE1BQU0sT0FBTyxnQ0FBZ0M7Ozs7SUFJNUMsWUFBb0IsSUFBb0Q7UUFBcEQsU0FBSSxHQUFKLElBQUksQ0FBZ0Q7UUFIckUsU0FBSSxHQUFHLEVBQUUsQ0FBQztJQUcrRCxDQUFDOzs7O0lBRTFFLFFBQVE7UUFDSixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVzs7O1FBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNiLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDWDtnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1FBQ0wsQ0FBQyxHQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQzs7Ozs7SUFFRCxLQUFLLENBQUMsS0FBYztRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7OztZQTVCSixTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFOzs7O0VBSVQ7YUFDRDs7OztZQXBXbUIsWUFBWTs7OztJQXNXNUIsZ0RBQVU7O0lBQ1Ysb0RBQVM7Ozs7O0lBRUEsZ0RBQTREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZUlucHV0LCBvZiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIGNhdGNoRXJyb3IsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSW5mb1Nlc3Npb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3Nlc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0xvZ2luTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9sb2dpbi5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb0Zvcm1Qcm9wTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9mb3JtLXByb3AubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Nb2RhbEFjdGlvbiB9IGZyb20gJy4uL2VudW0nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvQXV0aGVudGljYXRpb25TZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG4gICAgcHJpdmF0ZSBfa2V5OiBzdHJpbmcgPSAndG9rZW4nO1xyXG4gICAgcHJpdmF0ZSBfa2V5U2Vzc2FvOiBzdHJpbmcgPSAnc2Vzc2FvJztcclxuICAgIHByaXZhdGUgX3Nlc3Npb25UaW1lSW50ZXJ2YWw7XHJcbiAgICBwcml2YXRlIF9zZXNzaW9uVGltZTogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LCBcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3Nlc3NhbzogSW5mb1Nlc3Npb25Nb2RlbCwgXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wbGF0YWZvcm1hOiBJbmZvUGxhdGZvcm1Nb2RlbCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2RhdGFTZXJ2aWNlOiBJbmZvRGF0YVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9tb2RhbDogTWF0RGlhbG9nKSB7IH1cclxuXHJcbiAgICBnZXRTZXNzYW8oKTogSW5mb1Nlc3Npb25Nb2RlbHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2Vzc2FvO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFBsYXRmb3JtKCk6IEluZm9QbGF0Zm9ybU1vZGVsIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcGxhdGFmb3JtYTtcclxuICAgIH1cclxuXHJcbiAgICBjYW5BY3RpdmF0ZShhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZXJTdGF0ZVNuYXBzaG90OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB8IGJvb2xlYW4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICghdGhpcy5pc0xvZ2dlZCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdXJsID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5kYXRhWydVUkwnXSB8fCByb3V0ZXJTdGF0ZVNuYXBzaG90LnVybDtcclxuXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvblRpbWUoKTtcclxuICAgICAgICB0aGlzLmRlZmluZVBhZ2luYUF0aXZhKHVybCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFBlcm1pc3Npb24odXJsLCB0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybCA9PSAnLycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1Blcm1pc3Npb24odXJsKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZignbm92bycpID4gLTEgJiYgIXRoaXMuaGFzUGVybWlzc2lvbih1cmwsICduZXcnKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1cmwuaW5kZXhPZigndmlzdWFsaXphcicpIDwgLTEgJiYgYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJykgIT0gbnVsbCAmJiAhdGhpcy5oYXNQZXJtaXNzaW9uKHVybCwgJ2VkaXQnKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgncGVybWlzc2lvbicpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgKSkucGlwZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoTWFwKGFzeW5jIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwZXJtaXNzYW8gPSBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmRhdGFbJ1Blcm1pc3NhbyddO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGVybWlzc2FvKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbXMgPSAocGVybWlzc2FvWzJdIHx8ICcnKS5yZXBsYWNlKFJlZ0V4cCgvXFx7KC4qPylcXH0vLCAnZycpLCAoXywgcCkgPT4gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5wYXJhbXNbcF0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gYXdhaXQgdGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHBlcm1pc3Nhb1swXSwgcGVybWlzc2FvWzFdLCBwYXJhbXMpLnRvUHJvbWlzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyLnN1Y2Nlc3MgfHwgci5kYXRhICE9IHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJ3Blcm1pc3Npb24nKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTG9nZ2VkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fa2V5KSAhPSBudWxsKTtcclxuICAgIH1cclxuXHJcblx0cmVmcmVzaFNlc3Npb25UaW1lKCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5fc2Vzc2lvblRpbWVJbnRlcnZhbCk7XHJcbiAgICAgICAgaWYgKHRoaXMuX3Nlc3Nhby5UZW1wb0luYXRpdmlkYWRlIDw9IDApIHtcclxuICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWUgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25UaW1lID0gdGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGU7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2FvLlRlbXBvSW5hdGl2aWRhZGUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9zZXNzaW9uVGltZUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25UaW1lID09IG51bGwpICB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2Vzc2lvblRpbWUgPSB0aGlzLl9zZXNzYW8uVGVtcG9JbmF0aXZpZGFkZTtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2Vzc2lvblRpbWUgPT0gbnVsbCB8fCB0aGlzLl9zZXNzaW9uVGltZSA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaFNlc3Npb25UaW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Nlc3Npb25UaW1lID4gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXNzaW9uVGltZS0tO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9zZXNzaW9uVGltZUludGVydmFsKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVmID0gdGhpcy5fbW9kYWwub3BlbihSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnNDAwcHgnXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9zZXNzaW9uVGltZUludGVydmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uWWVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoU2Vzc2lvblRpbWUoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgfVxyXG5cdH1cclxuXHJcbiAgICBsb2dpbih1c3VhcmlvOiBzdHJpbmcsIHNlbmhhOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU2Vzc2FvKCk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9hdXRlbnRpY2FyJywgeyBVc3VhcmlvOiB1c3VhcmlvLCBTZW5oYTogc2VuaGEgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9rZXksIHIuRGF0YS5Ub2tlbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0cm9jYXJFbXByZXNhKHVzdWFyaW86IHN0cmluZywgZW1wcmVzYUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby90cm9jYXJlbXByZXNhJywgeyBVc3VhcmlvOiB1c3VhcmlvLCBFbXByZXNhSWQ6IGVtcHJlc2FJZCB9LCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9rZXksIHIuRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xvbmFyKHVzdWFyaW86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL2Nsb25hcicsIHsgVXN1YXJpbzogdXN1YXJpbyB9LCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLlN1Y2Nlc3MgJiYgci5EYXRhICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9rZXksIHIuRGF0YSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEluZm9Mb2dpbk1vZGVsKHIuU3VjY2Vzcywgci5NZXNzYWdlcywgci5EYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVTZXNzYW8oKTtcclxuICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnbG9naW4nKS50aGVuKHIgPT4geyBsb2NhdGlvbi5yZWxvYWQoKTsgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGVybWlzc2lvbnModXJsOiBzdHJpbmcsIGxvZ0F0aXZpZGFkZTogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAgICAgICAgLmdldCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9nZXRwZXJtaXNzYW8/dXJsPScgKyB1cmwgKyAnJmxvZ2F0aXZpZGFkZT0nICsgbG9nQXRpdmlkYWRlLnRvU3RyaW5nKCksIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRyb2NhU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Ryb2NhclNlbmhhJywgbW9kZWwsIHsgaGVhZGVyczogdGhpcy5fZGF0YVNlcnZpY2UuZ2V0SGVhZGVyVG9rZW4oKSB9KVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFJlY3VwZXJhclNlbmhhKG1vZGVsOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAucG9zdCh0aGlzLl9wbGF0YWZvcm1hLkNvbmZpZy53ZWJhcGlVcmwgKyAnY2VudHJvY29udHJvbGUvdXN1YXJpby9SZWN1cGVyYXJTZW5oYScsIG1vZGVsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRSZXNldGFyU2VuaGEobW9kZWw6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2h0dHBcclxuICAgICAgICAgICAgICAgICAgIC5wb3N0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL1Jlc2V0YXJTZW5oYScsIG1vZGVsLCB7IGhlYWRlcnM6IHRoaXMuX2RhdGFTZXJ2aWNlLmdldEhlYWRlclRva2VuKCkgfSlcclxuICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgIG1hcCgocjogYW55KSA9PiBuZXcgSW5mb0xvZ2luTW9kZWwoci5TdWNjZXNzLCByLk1lc3NhZ2VzLCByLkRhdGEpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdGhpcy5lcnJvckhhbmRsaW5nKGUpKVxyXG4gICAgICAgICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb2dpblJlc291cmNlcygpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9odHRwXHJcbiAgICAgICAgICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS9hcHAvR2V0TG9naW5SZXNvdXJjZXMnKVxyXG4gICAgICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyLlN1Y2Nlc3MsIHIuTWVzc2FnZXMsIHIuRGF0YSkpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGU6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB0aGlzLmVycm9ySGFuZGxpbmcoZSkpXHJcbiAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGhhc1Blcm1pc3Npb24odXJsOiBzdHJpbmcsIGtleUZ1bmN0aW9uOiBzdHJpbmcgPSAndmlldycpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYgKHVybCA9PSAnLycgJiYga2V5RnVuY3Rpb24gPT0gJ3ZpZXcnKVxyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgICAgbGV0IHVybEdlbmVyaWNhID0gdGhpcy5nZXRVcmxHZW5lcmljYSh1cmwpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5zb21lKHMgPT4gcy5VUkwgPT0gdXJsR2VuZXJpY2EgJiYgcy5DaGF2ZUZ1bmNpb25hbGlkYWRlID09IGtleUZ1bmN0aW9uICYmIHMuQWNlc3NvKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQZXJtaXNzaW9uKHVybDogc3RyaW5nLCBsb2dBdGl2aWRhZGU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG5cclxuICAgICAgICBsZXQgdXJsR2VuZXJpY2EgPSB0aGlzLmdldFVybEdlbmVyaWNhKHVybCk7XHJcbiAgICAgICAgbGV0IGNvbnRlbVVybCA9IHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSk7XHJcbiAgICAgICAgaWYgKGNvbnRlbVVybCkge1xyXG4gICAgICAgICAgICBpZiAobG9nQXRpdmlkYWRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZGFTZXNzYW8odXJsKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcmV0LnN1Y2Nlc3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4geyBcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMSkgdGhpcy5sb2dvdXQoKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gKG9ic2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQZXJtaXNzaW9ucyh1cmxHZW5lcmljYSwgbG9nQXRpdmlkYWRlKS5waXBlKG1hcChyZXQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBlcm1pc3NhbyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0LnN1Y2Nlc3MpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmV0LmRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5kYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzYW8uUGVybWlzc29lcy5maWx0ZXIocyA9PiBzLlVSTCA9PSBpdGVtLlVSTCAmJiBzLkNoYXZlRnVuY2lvbmFsaWRhZGUgPT0gaXRlbS5DaGF2ZUZ1bmNpb25hbGlkYWRlKS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Nlc3Nhby5QZXJtaXNzb2VzLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldC5kYXRhLnNvbWUocyA9PiBzLlVSTCA9PSB1cmxHZW5lcmljYSlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fa2V5U2Vzc2FvLCBKU09OLnN0cmluZ2lmeSh0aGlzLl9zZXNzYW8pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGVybWlzc2FvO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDEpIHRoaXMubG9nb3V0KCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhU2Vzc2FvKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faHR0cFxyXG4gICAgICAgICAgICAuZ2V0KHRoaXMuX3BsYXRhZm9ybWEuQ29uZmlnLndlYmFwaVVybCArICdjZW50cm9jb250cm9sZS91c3VhcmlvL3ZhbGlkYXNlc3Nhbz91cmw9JyArIHVybCwgeyBoZWFkZXJzOiB0aGlzLl9kYXRhU2VydmljZS5nZXRIZWFkZXJUb2tlbigpIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgbWFwKChyOiBhbnkpID0+IG5ldyBJbmZvTG9naW5Nb2RlbChyID09PSB0cnVlLCAnJywgcikpLFxyXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuZXJyb3JIYW5kbGluZyhlKSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVTZXNzYW8oKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgaWYgKCFrZXkuaW5jbHVkZXMoJ0Rhc2hib2FyZCcpKSBkZWxldGUgbG9jYWxTdG9yYWdlW2tleV07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVmaW5lUGFnaW5hQXRpdmEodXJsKSB7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0YWZvcm1hLk1lbnUgPT0gbnVsbCB8fCB1cmwgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGF1eDogc3RyaW5nW10gPSB1cmwuc3Vic3RyaW5nKDEpLnJlcGxhY2UoLy0vZywgJycpLnRvTG93ZXJDYXNlKCkuc3BsaXQoJy8nKTtcclxuICAgICAgICBsZXQgdGl0dWxvTWVudTogc3RyaW5nID0gYXV4Lmxlbmd0aCA+IDAgPyBhdXhbMF0udG9TdHJpbmcoKSA6IHVybDtcclxuXHJcbiAgICAgICAgaWYgKHRpdHVsb01lbnUuaW5kZXhPZignYXNoYm9hcmQnKSA+IC0xKVxyXG4gICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogJ3dpZGdldHMnLCBUaXR1bG86ICdEYXNoYm9hcmQnIH07XHJcblxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogYW55ID0gdGhpcy5fcGxhdGFmb3JtYS5NZW51LmZpbHRlcihtID0+IG0uVGl0bGUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRpdHVsb01lbnUpID4gLTEpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0gIT0gbnVsbCAmJiBpdGVtLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogaXRlbVswXS5JY29uLCBUaXR1bG86IGl0ZW1bMF0uVGl0bGUgfTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLl9wbGF0YWZvcm1hLlBhZ2luYUF0aXZhID0geyBJY29uZTogJ3NlY3VyaXR5JywgVGl0dWxvOiAnUGxhdGFmb3JtYScgfTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VXJsR2VuZXJpY2EodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCByZXRvcm5vID0gXCJcIjtcclxuICAgICAgICBsZXQgdXJsUGFydHM6IHN0cmluZ1tdID0gdXJsLnNwbGl0KCcvJyk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1cmxQYXJ0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHBhcnNlRmxvYXQodXJsUGFydHNbaV0pKSB8fCB0aGlzLmlzR3VpZCh1cmxQYXJ0c1tpXSkgfHwgdXJsUGFydHNbaV0udG9Mb3dlckNhc2UoKSA9PSAnbm92bycpXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgcmV0b3JubyArPSAnLycgKyB1cmxQYXJ0c1tpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldG9ybm8uc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGluZyhlOiBIdHRwRXJyb3JSZXNwb25zZSk6IE9ic2VydmFibGVJbnB1dDxJbmZvTG9naW5Nb2RlbD4ge1xyXG4gICAgICAgIGlmIChlLnN0YXR1cyA9PSA0MDEpIFxyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG5cclxuICAgICAgICBlbHNlIGlmIChlLnN0YXR1cyA9PSA1MDApXHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCc1MDAnKTtcclxuXHJcbiAgICAgICAgZWxzZSBpZiAoZS5lcnJvciAhPSBudWxsICYmIGUuZXJyb3IuZXJyb3JfZGVzY3JpcHRpb24gIT0gbnVsbClcclxuICAgICAgICAgICAgcmV0dXJuIG9mKG5ldyBJbmZvTG9naW5Nb2RlbChmYWxzZSwgZS5lcnJvci5lcnJvcl9kZXNjcmlwdGlvbikpO1xyXG5cclxuICAgICAgICBlbHNlIHJldHVybiBvZihuZXcgSW5mb0xvZ2luTW9kZWwoZmFsc2UsICdIb3V2ZSB1bSBwcm9ibGVtYSBlIG7Do28gZm9pIHBvc3PDrXZlbCBjb25lY3RhcicpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzR3VpZCh2YWx1ZSkgOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKHZhbHVlIHx8ICcnKS5tYXRjaCgnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSAhPT0gbnVsbDtcclxuICAgIH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxpbmZvLW1vZGFsIG1vZGFsdGl0bGU9XCJJbmF0aXZpZGFkZVwiIChvbnNhdmUpPVwiYXRpdm8odHJ1ZSlcIiBsYWJlbHN1Ym1pdD1cIlNpbVwiIGxhYmVsY2FuY2VsPVwiKHt7IHRpbWUgfX0pIHt7ICdOYW8nIHwgdHJhbnNsYXRlIH19XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBzdHlsZT1cImZvbnQtc2l6ZToxMzAlXCI+e3sgJ1ZvY2VBaW5kYUVzdGFVdGlsaXphbmRvUGxhdGFmb3JtYScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG5cdFx0PC9pbmZvLW1vZGFsPlxyXG5cdGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZnJlc2hTZXNzaW9uVGltZU1vZGFsQ29tcG9uZW50IHtcclxuICAgIHRpbWUgPSAxNTtcclxuICAgIGludGVydmFsO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIF9yZWY6IE1hdERpYWxvZ1JlZjxSZWZyZXNoU2Vzc2lvblRpbWVNb2RhbENvbXBvbmVudD4pIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZSA+IDApXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWUtLTtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmF0aXZvKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYXRpdm8oYXRpdm86IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9yZWYuY2xvc2UoeyBtb2RhbEFjdGlvbjogYXRpdm8gPyBJbmZvTW9kYWxBY3Rpb24uWWVzIDogSW5mb01vZGFsQWN0aW9uLk5vIH0pO1xyXG4gICAgfVxyXG59Il19
|