@ieeesa-npm/tenants 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,6 +14,7 @@ import { TenantBasicDetailsComponent } from '../tenant-basic-details/tenant-basi
14
14
  import { PermissionType } from '../../models/permission-type.model';
15
15
  import { CreateModifyRoleComponent } from '../create-modify-role/create-modify-role.component';
16
16
  import { RoleMenuAction } from '../../models/role-menu-action.model';
17
+ import { ViewTenantGroupTypesComponent } from '../view-tenant-group-types/view-tenant-group-types.component';
17
18
  import * as i0 from "@angular/core";
18
19
  import * as i1 from "@angular/material/dialog";
19
20
  import * as i2 from "@ieeesa-npm/utility";
@@ -86,6 +87,7 @@ export class ViewTenantDetailsComponent {
86
87
  roleId: '',
87
88
  roleName: '',
88
89
  };
90
+ this.isGroupTypesExpanded = false;
89
91
  this.roleTypeOptions = [];
90
92
  this.breakpointObserverService
91
93
  .getBreakpoint()
@@ -183,6 +185,10 @@ export class ViewTenantDetailsComponent {
183
185
  }
184
186
  break;
185
187
  }
188
+ case 3: {
189
+ this.isGroupTypesExpanded = expanded;
190
+ break;
191
+ }
186
192
  }
187
193
  }
188
194
  /**
@@ -640,7 +646,7 @@ export class ViewTenantDetailsComponent {
640
646
  this.destroy$?.unsubscribe();
641
647
  }
642
648
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewTenantDetailsComponent, deps: [{ token: i1.MatDialog }, { token: i2.BreakpointObserverService }, { token: i3.TenantApplicationsService }, { token: i2.GlobalErrorHandlerService }, { token: i4.SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewTenantDetailsComponent, isStandalone: true, selector: "ieeesa-view-tenant-details", inputs: { apiBaseURL: "apiBaseURL", userPermissions: "userPermissions", routePaths: "routePaths" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{\r\n constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{\r\n constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles\r\n }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-info{background-color:#f2f2f2}.ieeesa-view-tenant-info--bg-white{background-color:#fff;padding:1em 1.5em 0}.ieeesa-view-tenant-info__actions{top:15px;margin-right:20px;position:absolute;right:0}.ieeesa-view-tenant-info--title,.ieeesa-view-tenant-info--action{padding:.75em 0}.ieeesa-view-tenant-info--link{padding:1em .75em 1.3em 0!important}.ieeesa-view-tenant-info--link-mobile{max-width:-moz-fit-content;max-width:fit-content}.ieeesa-view-tenant-info--app-id,.ieeesa-view-tenant-info--app-status{color:#49454f}.ieeesa-view-tenant-info__accordion{background-color:#fff;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;padding:1.5em .75em}.ieeesa-view-tenant-info__accordion--bg-white{background-color:#fff;box-shadow:none}.ieeesa-view-tenant-info__accordion--info{padding:1em 1em 1.5em}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-body{padding:1.5em 1.5em 1.5em 2.25em}.ieeesa-view-tenant-info__accordion-info .ieeesa-button{position:absolute;top:1.25em;right:0}.ieeesa-view-tenant-info__accordion-info .ieeesa-button svg{width:1.3em!important;height:1.3em!important}.ieeesa-view-tenant-info .mat-divider-vertical{margin:0;height:1.4em;color:#cac4d0;width:.063em;border-right-color:#cac4d0}.ieeesa-view-tenant-info .ieeesa-slide-toggle-field .mat-mdc-slide-toggle .mdc-label{color:#000!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__roles-and-permissions__divider{margin-top:12px!important;margin-bottom:16px!important;border-top:1px solid #ccd2da!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mat-expansion-panel-body,.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table .mat-column-permissions{min-width:12.5em;padding:16px!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__column-menu .mat-mdc-icon-button.mat-mdc-button-base{padding:6px;width:24px;height:24px}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__columns-header-text{padding:8px 16px;background:#dae9f1;box-shadow:0 1px #dce3e9 inset}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__trailing,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__notch,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__leading{border:none!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-select,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{margin:0}.ieeesa-view-tenant-info__roles-and-permissions .at-mdc-select-min-line,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{color:#1c1d1e}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label{position:relative;color:#63666a;left:2em}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}.ieeesa-menu .mat-mdc-menu-item{min-height:35px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SlideToggleComponent, selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled"], outputs: ["slideToggleChange"] }, { kind: "component", type: AccordionComponent, selector: "ieeesa-accordion", inputs: ["accordionInfo"], outputs: ["accordionOpened"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: TenantBasicDetailsComponent, selector: "ieeesa-tenant-basic-details", inputs: ["tenantDetails"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "nestedTableDataInfo", "columnSchemaInfo", "nestedTableColumnSchemaInfo", "tableActions", "hasNestedTable", "tableColumnActions", "tableColumnActionMenuSize", "tableRowActions", "nestedTableRowActions", "caption", "viewAll", "paginatorConfig", "nestedPaginatorConfig", "legends", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "rowExpandButton", "rowCollapseButton", "isNestedTableHeaderNeeded", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "isClearSortNeeded", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType", "className", "searchSupportMessage", "inbuiltSortingNeeded", "isCellTextOverflowEllipsis", "isTableHeaderNeeded", "tableColumnsHeaderText", "verticalColumnHeaderNumber", "scrollbarSupportMessage", "isScrollSupportMessageNeeded", "isStickyHeaderNeeded", "customStickyHeaderNeeded", "headerElementClassName", "searchResultMessage", "rowMenuActionIcon"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick", "tableColumnMenuActionClick", "tableColumnMenuToggleButton"] }], encapsulation: i0.ViewEncapsulation.None }); }
649
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewTenantDetailsComponent, isStandalone: true, selector: "ieeesa-view-tenant-details", inputs: { apiBaseURL: "apiBaseURL", userPermissions: "userPermissions", routePaths: "routePaths" }, ngImport: i0, template: "<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.GROUP_TYPES\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__group-types\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isGroupTypesExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button p-2\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewGroupTypes.actionButtonLabels.addGroupType }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isGroupTypesExpanded\">\r\n <ieeesa-view-tenant-group-types></ieeesa-view-tenant-group-types>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-info{background-color:#f2f2f2}.ieeesa-view-tenant-info--bg-white{background-color:#fff;padding:1em 1.5em 0}.ieeesa-view-tenant-info__actions{top:15px;margin-right:20px;position:absolute;right:0}.ieeesa-view-tenant-info--title,.ieeesa-view-tenant-info--action{padding:.75em 0}.ieeesa-view-tenant-info--link{padding:1em .75em 1.3em 0!important}.ieeesa-view-tenant-info--link-mobile{max-width:-moz-fit-content;max-width:fit-content}.ieeesa-view-tenant-info--app-id,.ieeesa-view-tenant-info--app-status{color:#49454f}.ieeesa-view-tenant-info__accordion{background-color:#fff;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;padding:1.5em .75em}.ieeesa-view-tenant-info__accordion--bg-white{background-color:#fff;box-shadow:none}.ieeesa-view-tenant-info__accordion--info{padding:1em 1em 1.5em}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-body{padding:1.5em 1.5em 1.5em 2.25em}.ieeesa-view-tenant-info__accordion-info .ieeesa-button{position:absolute;top:1.25em;right:0}.ieeesa-view-tenant-info__accordion-info .ieeesa-button svg{width:1.3em!important;height:1.3em!important}.ieeesa-view-tenant-info .mat-divider-vertical{margin:0;height:1.4em;color:#cac4d0;width:.063em;border-right-color:#cac4d0}.ieeesa-view-tenant-info .ieeesa-slide-toggle-field .mat-mdc-slide-toggle .mdc-label{color:#000!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__roles-and-permissions__divider{margin-top:12px!important;margin-bottom:16px!important;border-top:1px solid #ccd2da!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mat-expansion-panel-body,.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table .mat-column-permissions{min-width:12.5em;padding:16px!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__column-menu .mat-mdc-icon-button.mat-mdc-button-base{padding:6px;width:24px;height:24px}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__columns-header-text{padding:8px 16px;background:#dae9f1;box-shadow:0 1px #dce3e9 inset}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__trailing,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__notch,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__leading{border:none!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-select,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{margin:0}.ieeesa-view-tenant-info__roles-and-permissions .at-mdc-select-min-line,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{color:#1c1d1e}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label{position:relative;color:#63666a;left:2em}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-view-tenant-info__group-types .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__group-types .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__group-types .mat-expansion-panel-body,.ieeesa-view-tenant-info__group-types .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}.ieeesa-menu .mat-mdc-menu-item{min-height:35px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SlideToggleComponent, selector: "ieeesa-slide-toggle", inputs: ["formControlName", "slideToggle", "isDisabled"], outputs: ["slideToggleChange"] }, { kind: "component", type: AccordionComponent, selector: "ieeesa-accordion", inputs: ["accordionInfo"], outputs: ["accordionOpened"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: TenantBasicDetailsComponent, selector: "ieeesa-tenant-basic-details", inputs: ["tenantDetails"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i8.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "nestedTableDataInfo", "columnSchemaInfo", "nestedTableColumnSchemaInfo", "tableActions", "hasNestedTable", "tableColumnActions", "tableColumnActionMenuSize", "tableRowActions", "nestedTableRowActions", "caption", "viewAll", "paginatorConfig", "nestedPaginatorConfig", "legends", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "rowExpandButton", "rowCollapseButton", "isNestedTableHeaderNeeded", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "isClearSortNeeded", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType", "className", "searchSupportMessage", "inbuiltSortingNeeded", "isCellTextOverflowEllipsis", "isTableHeaderNeeded", "tableColumnsHeaderText", "verticalColumnHeaderNumber", "scrollbarSupportMessage", "isScrollSupportMessageNeeded", "isStickyHeaderNeeded", "customStickyHeaderNeeded", "headerElementClassName", "searchResultMessage", "rowMenuActionIcon"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick", "tableColumnMenuActionClick", "tableColumnMenuToggleButton"] }, { kind: "component", type: ViewTenantGroupTypesComponent, selector: "ieeesa-view-tenant-group-types" }], encapsulation: i0.ViewEncapsulation.None }); }
644
650
  }
645
651
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewTenantDetailsComponent, decorators: [{
646
652
  type: Component,
@@ -654,7 +660,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
654
660
  IconButtonComponent,
655
661
  MatButtonModule,
656
662
  DataTableComponent,
657
- ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{\r\n constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{\r\n constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles\r\n }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-info{background-color:#f2f2f2}.ieeesa-view-tenant-info--bg-white{background-color:#fff;padding:1em 1.5em 0}.ieeesa-view-tenant-info__actions{top:15px;margin-right:20px;position:absolute;right:0}.ieeesa-view-tenant-info--title,.ieeesa-view-tenant-info--action{padding:.75em 0}.ieeesa-view-tenant-info--link{padding:1em .75em 1.3em 0!important}.ieeesa-view-tenant-info--link-mobile{max-width:-moz-fit-content;max-width:fit-content}.ieeesa-view-tenant-info--app-id,.ieeesa-view-tenant-info--app-status{color:#49454f}.ieeesa-view-tenant-info__accordion{background-color:#fff;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;padding:1.5em .75em}.ieeesa-view-tenant-info__accordion--bg-white{background-color:#fff;box-shadow:none}.ieeesa-view-tenant-info__accordion--info{padding:1em 1em 1.5em}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-body{padding:1.5em 1.5em 1.5em 2.25em}.ieeesa-view-tenant-info__accordion-info .ieeesa-button{position:absolute;top:1.25em;right:0}.ieeesa-view-tenant-info__accordion-info .ieeesa-button svg{width:1.3em!important;height:1.3em!important}.ieeesa-view-tenant-info .mat-divider-vertical{margin:0;height:1.4em;color:#cac4d0;width:.063em;border-right-color:#cac4d0}.ieeesa-view-tenant-info .ieeesa-slide-toggle-field .mat-mdc-slide-toggle .mdc-label{color:#000!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__roles-and-permissions__divider{margin-top:12px!important;margin-bottom:16px!important;border-top:1px solid #ccd2da!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mat-expansion-panel-body,.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table .mat-column-permissions{min-width:12.5em;padding:16px!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__column-menu .mat-mdc-icon-button.mat-mdc-button-base{padding:6px;width:24px;height:24px}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__columns-header-text{padding:8px 16px;background:#dae9f1;box-shadow:0 1px #dce3e9 inset}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__trailing,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__notch,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__leading{border:none!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-select,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{margin:0}.ieeesa-view-tenant-info__roles-and-permissions .at-mdc-select-min-line,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{color:#1c1d1e}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label{position:relative;color:#63666a;left:2em}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}.ieeesa-menu .mat-mdc-menu-item{min-height:35px!important}\n"] }]
663
+ ViewTenantGroupTypesComponent,
664
+ ], encapsulation: ViewEncapsulation.None, template: "<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.GROUP_TYPES\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__group-types\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isGroupTypesExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button p-2\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewGroupTypes.actionButtonLabels.addGroupType }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isGroupTypesExpanded\">\r\n <ieeesa-view-tenant-group-types></ieeesa-view-tenant-group-types>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-info{background-color:#f2f2f2}.ieeesa-view-tenant-info--bg-white{background-color:#fff;padding:1em 1.5em 0}.ieeesa-view-tenant-info__actions{top:15px;margin-right:20px;position:absolute;right:0}.ieeesa-view-tenant-info--title,.ieeesa-view-tenant-info--action{padding:.75em 0}.ieeesa-view-tenant-info--link{padding:1em .75em 1.3em 0!important}.ieeesa-view-tenant-info--link-mobile{max-width:-moz-fit-content;max-width:fit-content}.ieeesa-view-tenant-info--app-id,.ieeesa-view-tenant-info--app-status{color:#49454f}.ieeesa-view-tenant-info__accordion{background-color:#fff;box-shadow:0 1px 4px #00000040,0 4px #00b5e2 inset;padding:1.5em .75em}.ieeesa-view-tenant-info__accordion--bg-white{background-color:#fff;box-shadow:none}.ieeesa-view-tenant-info__accordion--info{padding:1em 1em 1.5em}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__accordion-info .mat-accordion .mat-expansion-panel-body{padding:1.5em 1.5em 1.5em 2.25em}.ieeesa-view-tenant-info__accordion-info .ieeesa-button{position:absolute;top:1.25em;right:0}.ieeesa-view-tenant-info__accordion-info .ieeesa-button svg{width:1.3em!important;height:1.3em!important}.ieeesa-view-tenant-info .mat-divider-vertical{margin:0;height:1.4em;color:#cac4d0;width:.063em;border-right-color:#cac4d0}.ieeesa-view-tenant-info .ieeesa-slide-toggle-field .mat-mdc-slide-toggle .mdc-label{color:#000!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__roles-and-permissions__divider{margin-top:12px!important;margin-bottom:16px!important;border-top:1px solid #ccd2da!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mat-expansion-panel-body,.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table .mat-column-permissions{min-width:12.5em;padding:16px!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__column-menu .mat-mdc-icon-button.mat-mdc-button-base{padding:6px;width:24px;height:24px}.ieeesa-view-tenant-info__roles-and-permissions .ieeesa-data-table__columns-header-text{padding:8px 16px;background:#dae9f1;box-shadow:0 1px #dce3e9 inset}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-container{padding:0;flex-wrap:nowrap}.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__trailing,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__notch,.ieeesa-view-tenant-info__roles-and-permissions .mdc-notched-outline__leading{border:none!important}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-select,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{margin:0}.ieeesa-view-tenant-info__roles-and-permissions .at-mdc-select-min-line,.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-range-label{color:#1c1d1e}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-paginator-page-size-label{position:relative;color:#63666a;left:2em}.ieeesa-view-tenant-info__roles-and-permissions .mat-mdc-select-value{display:flex;justify-content:center}.ieeesa-view-tenant-info__group-types .ieeesa-accordion .mat-accordion .mat-expansion-panel-spacing.mat-expanded{position:relative}.ieeesa-view-tenant-info__group-types .mat-mdc-header-cell{white-space:nowrap}.ieeesa-view-tenant-info__group-types .mat-expansion-panel-body,.ieeesa-view-tenant-info__group-types .ieeesa-data-table{padding-left:0;padding-right:0}.ieeesa-menu__item:not(:last-of-type){margin-bottom:0!important}.ieeesa-menu .mat-mdc-menu-item{min-height:35px!important}\n"] }]
658
665
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.BreakpointObserverService }, { type: i3.TenantApplicationsService }, { type: i2.GlobalErrorHandlerService }, { type: i4.SharedService }]; }, propDecorators: { apiBaseURL: [{
659
666
  type: Input
660
667
  }], userPermissions: [{
@@ -662,4 +669,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
662
669
  }], routePaths: [{
663
670
  type: Input
664
671
  }] } });
665
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10ZW5hbnQtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXRlbmFudC1kZXRhaWxzL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZGV0YWlscy92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFHVCxTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsY0FBYyxFQUdkLG9CQUFvQixFQUVwQixTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUtuQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixrQkFBa0IsR0FFbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFhN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFPcEgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFLL0UsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFhckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7OztBQTJCckUsTUFBTSxPQUFPLDBCQUEwQjtJQW1FckM7SUFDRSwwQ0FBMEM7SUFDbkMsTUFBaUI7SUFDeEIsMENBQTBDO0lBQ2xDLHlCQUFvRDtJQUM1RCwwQ0FBMEM7SUFDbEMsZ0JBQTJDO0lBQ25ELDBDQUEwQztJQUNuQyx5QkFBb0Q7SUFDM0QsMENBQTBDO0lBQ2xDLGFBQTRCO1FBUjdCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFFaEIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUVwRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJCO1FBRTVDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFFbkQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUE1RXRDLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUlwRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQiw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFVBQVUsQ0FBQztRQUM1QixpQkFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQztRQUNsRCxzQkFBaUIsR0FBRztZQUNsQixFQUFFLEVBQUUsQ0FBQztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTTtZQUNqRCxPQUFPLEVBQUUsSUFBSTtZQUNiLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7UUFDRixlQUFVLEdBQWUsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDO1FBRTlELHNCQUFpQixHQUFvQixJQUFJLENBQUMsS0FBSyxDQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLENBQ2pFLENBQUM7UUFDRixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLENBQUM7UUFDekUsb0NBQStCLEdBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxDQUFDO1FBQ3hELHVDQUFrQyxHQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFFLHNCQUFzQixDQUFDO1FBQ2xFLDJDQUFzQyxHQUNwQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDO1FBQ25FLGlDQUE0QixHQUFHLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQ1AsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsQ0FBQztRQUNqRSxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFDdkMsY0FBUyxHQUEwQixFQUFFLENBQUM7UUFDdEMsa0NBQTZCLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLG9CQUFlLEdBQW9CO1lBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDM0UsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsZUFBZTtZQUN6RSxZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDO1FBRUYsaUNBQTRCLEdBQzFCLGlEQUFpRCxDQUFDO1FBQ3BELDJCQUFzQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLGlCQUFZLEdBQWlCO1lBQzNCLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQztRQUlGLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBRXBDLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUMvQiw4REFBOEQ7UUFDOUQsMEJBQXFCLEdBQVEsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUM7UUFDeEQsOERBQThEO1FBQzlELDBCQUFxQixHQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO1FBQ3hELGtCQUFhLEdBQUcsU0FBUyxDQUFDO1FBRTFCLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRWhDLDBCQUFxQixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO1FBRW5ELHFCQUFnQixHQUFnQjtZQUM5QixNQUFNLEVBQUUsRUFBRTtZQUNWLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQztRQUNGLG9CQUFlLEdBQXFCLEVBQUUsQ0FBQztRQWFyQyxJQUFJLENBQUMseUJBQXlCO2FBQzNCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsNEJBQTRCLEVBQXFCLENBQUM7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQWlCLENBQUM7UUFDdkUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU07WUFDdkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTTtZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDO1FBQ3JFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUNuRSxJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUU7WUFDL0QsRUFBRSxLQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7U0FDbEQsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUNEOzs7T0FHRztJQUNILGdCQUFnQixDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7YUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBK0IsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxFQUFFLElBQXVCLENBQUM7b0JBQ3ZELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw0QkFBNEIsQ0FDaEQsSUFBSSxDQUFDLGFBQWEsQ0FDbkIsQ0FBQztvQkFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhO3lCQUNoRCxNQUFpQixDQUFDO29CQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTt3QkFDdEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTTt3QkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDO29CQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQXNCLENBQUM7b0JBQzNELFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUU7d0JBQ2pDLElBQ0UsT0FBTyxFQUFFLFNBQVM7NEJBQ2hCLG1CQUFtQixDQUFDLG1CQUFtQjs0QkFDekMsT0FBTyxFQUFFLFNBQVMsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPOzRCQUVsRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dDQUMxQixFQUFFLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDO2dDQUNyQyxVQUFVLEVBQUUsS0FBSztnQ0FDakIsS0FBSyxFQUFFLE9BQU8sRUFBRSxXQUFXOzZCQUM1QixDQUFDLENBQUM7b0JBQ1AsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQ25DLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaUJBQWlCLENBQUMsYUFBNEIsRUFBRSxRQUFpQjtRQUMvRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsRUFBWSxDQUFDO1FBQy9DLFFBQVEsV0FBVyxFQUFFO1lBQ25CLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ04sSUFBSSxDQUFDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztnQkFDdkMsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7aUJBQzVCO2dCQUNELE1BQU07YUFDUDtZQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ04sSUFBSSxDQUFDLDZCQUE2QixHQUFHLFFBQVEsQ0FBQztnQkFDOUMsSUFBSSxRQUFRLEVBQUU7b0JBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYzt3QkFDakMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7b0JBQ3BFLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO2lCQUN6QztnQkFDRCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7SUFDRDs7O09BR0c7SUFDSCxnQ0FBZ0M7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUEwQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLDRDQUE0QyxDQUFDO3dCQUNoRCxPQUFPLEVBQUU7NEJBQ1AsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTTs0QkFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUTt5QkFDeEM7cUJBQ0YsQ0FBQyxDQUFDO29CQUNILE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FDekQsUUFBUSxFQUFFLElBQWMsQ0FDekIsQ0FBQztvQkFDRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM5QyxNQUFNLFNBQVMsR0FDYixJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsQ0FBQztvQkFDeEQsSUFBSSxDQUFDLFlBQVksR0FBRzt3QkFDbEI7NEJBQ0UsRUFBRSxFQUFFLENBQUM7NEJBQ0wsU0FBUyxFQUFFLGFBQWE7NEJBQ3hCLE9BQU8sRUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLFdBQVc7aUNBQy9DLFdBQVc7NEJBQ2hCLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTs0QkFDaEMsUUFBUSxFQUFFLENBQUMsbUJBQXdDLEVBQUUsRUFBRSxDQUNyRCxtQkFBbUIsQ0FBQyxVQUFVOzRCQUNoQyxjQUFjLEVBQUUsSUFBSTt5QkFDckI7cUJBQ0YsQ0FBQztvQkFDRixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQzs0QkFDckIsRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDOzRCQUNiLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTTs0QkFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFROzRCQUN0QixVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7NEJBQ2hDLGdCQUFnQixFQUFFLElBQUk7NEJBQ3RCLFFBQVEsRUFBRSxDQUFDLG1CQUF3QyxFQUFFLEVBQUU7Z0NBQ3JELE9BQU8sbUJBQW1CLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDekMsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUMzQztvQ0FDQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUc7b0NBQ2YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7NEJBQ25CLENBQUM7eUJBQ0YsQ0FBQyxDQUFDO29CQUNMLENBQUMsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3QixLQUFLLEVBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUNwQyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsNENBQTRDLENBQzFDLE9BQXNDO1FBRXRDLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsOEJBQThCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUM7YUFDbkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsUUFBd0MsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxRQUFRLEVBQUUsSUFBSTt3QkFDaEQsRUFBRSxZQUFzQixDQUFDO29CQUMzQixNQUFNLHVCQUF1QixHQUFHLFFBQVEsRUFBRSxJQUFJO3dCQUM1QyxFQUFFLHFCQUFxRCxDQUFDO29CQUMxRCx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTt3QkFDekMsSUFBSSxXQUFXLEdBQWEsRUFBRSxDQUFDO3dCQUMvQixXQUFXLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7NEJBQ2xCLFVBQVUsRUFBRSxVQUFVLENBQUMsY0FBYzs0QkFDckMsV0FBVyxFQUFFLFdBQVc7eUJBQ3pCLENBQUMsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDSjtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FDcEMsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILHVCQUF1QixDQUFDLFNBQW9CO1FBQzFDLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsTUFBTSxFQUFFLFNBQVMsQ0FBQyxTQUFTO1lBQzNCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTtTQUM3QixDQUFDO1FBQ0YsSUFBSSxDQUFDLDRDQUE0QyxDQUFDO1lBQ2hELE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsU0FBUyxDQUFDLFNBQVM7Z0JBQzNCLFFBQVEsRUFBRSxTQUFTLENBQUMsUUFBUTthQUM3QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLFlBQWlDO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUM7UUFDeEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxZQUFZLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQztRQUN4RSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsMEJBQTBCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDekUsSUFBSSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxjQUFjLENBQUMsV0FBVyxFQUFFO1lBQ25FLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxZQUFZLEVBQUUsY0FBYyxFQUFFLEVBQUUsS0FBSyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQixDQUFDLEtBQWEsRUFBRSxJQUFtQjtRQUNuRCxPQUFPLElBQUksRUFBRSxFQUFZLENBQUM7SUFDNUIsQ0FBQztJQUNEOzs7T0FHRztJQUNILFlBQVk7UUFDVixNQUFNLE9BQU8sR0FBd0I7WUFDbkMsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQWU7Z0JBQzFDLGVBQWUsRUFBRSxXQUFXO2FBQzdCO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsWUFBWSxDQUFDLE9BQU8sQ0FBQzthQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUEwQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRTtvQkFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQzdELFFBQVEsRUFBRSxJQUErQixDQUMxQyxDQUFDO29CQUNGLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQy9ELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUU7d0JBQ3hELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO3FCQUMzQjtpQkFDRjtZQUNILENBQUM7WUFDRCw4REFBOEQ7WUFDOUQsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUM3QixLQUFLLEVBQ0wsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FDbkMsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQzFDLGtCQUFrQixFQUFFLFdBQVcsQ0FDaEMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25DLE1BQU0sYUFBYSxHQUFHO2dCQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTztnQkFDNUMsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLGtCQUFrQixFQUFFLHlCQUF5QjtnQkFDN0MsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO2FBQzFCLENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGdCQUFnQjtRQUNkLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsWUFBWSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRztZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVE7WUFDeEMsYUFBYSxFQUFFLElBQUk7WUFDbkIsa0JBQWtCLEVBQUUseUJBQXlCO1lBQzdDLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtTQUMxQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQjtRQUNoQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7UUFDNUMsTUFBTSxhQUFhLEdBQUc7WUFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUTtZQUNyQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixrQkFBa0IsRUFBRSxnQ0FBZ0M7WUFDcEQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1NBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTO0lBQ1AsOERBQThEO0lBQzlELGFBQWtCLEVBQ2xCLFNBQWtCO1FBRWxCLFNBQVMsR0FBRyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pELElBQUksRUFBRSxhQUFhO1lBQ25CLEtBQUssRUFBRSxFQUFFO1lBQ1QsVUFBVSxFQUFFLENBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDO1lBQzlDLFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCO2FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLGlIQUFpSDthQUNoSCxTQUFTLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3hCLFFBQVEsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDekIsS0FBSyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDakMsU0FBUyxFQUFFLE9BQU8sRUFDbEIsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FDOUYsQ0FBQztvQkFDRixJQUFJLENBQUMsYUFBYSxHQUFHO3dCQUNuQixHQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw0QkFBNEIsRUFBc0I7cUJBQzdFLENBQUM7b0JBQ0YsTUFBTTtpQkFDUDtnQkFDRCxLQUFLLGtCQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUNwQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQztvQkFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLENBQUM7b0JBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQ2pDLFNBQVMsRUFBRSxPQUFPLEVBQ2xCLEdBQUcsYUFBYSxFQUFFLFdBQVcsSUFBSSxRQUFRLEVBQUUsUUFBUSxJQUFJLGFBQWEsRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEtBQUssYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUNuSixDQUFDO29CQUNGLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO29CQUN4QyxNQUFNO2lCQUNQO2dCQUNELEtBQUssa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7b0JBQ2xDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO29CQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQztvQkFDbEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FDakMsU0FBUyxFQUFFLE9BQU8sRUFDbEIsR0FBRyxRQUFRLEVBQUUsUUFBUSxJQUFJLGFBQWEsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLEdBQUcsQ0FDbEYsQ0FBQztvQkFDRixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztvQkFDeEMsTUFBTTtpQkFDUDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFVBQVU7YUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLGlCQUFvQztRQUN0RCxJQUFJLENBQUMsaUNBQWlDLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxpQ0FBaUMsQ0FBQyxVQUFtQjtRQUNuRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLFVBQVU7WUFDM0IsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQjtZQUN6QyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsdUJBQXVCLENBQUM7UUFDOUMsTUFBTSw4QkFBOEIsR0FBRztZQUNyQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZTtZQUNsRCxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDcEQsYUFBYSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsYUFBYSxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsR0FBRztZQUNsRyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU07U0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDN0QsSUFBSSxFQUFFLDhCQUE4QjtZQUNwQyxLQUFLLEVBQUUsTUFBTTtZQUNiLFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSztTQUM5QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsVUFBbUI7UUFDcEMsTUFBTSxnQ0FBZ0MsR0FBcUM7WUFDekUsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUs7Z0JBQ2hDLE1BQU0sRUFBRSxVQUFVO2FBQ25CO1NBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxnQkFBZ0I7YUFDbEIsa0JBQWtCLENBQUMsZ0NBQWdDLENBQUM7YUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUMsR0FBK0IsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUN4QixJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxVQUFVO3dCQUN2QyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNO3dCQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztvQkFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQzVEO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FDcEMsQ0FBQztZQUNKLENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLFVBQW1CO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxDQUFDLFVBQVU7WUFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTTtZQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLG1CQUFtQixFQUFFO2FBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQTZCLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUNwQixJQUFJLENBQUMsY0FBYzt3QkFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUM3QyxRQUFRLEVBQUUsSUFBdUIsQ0FDbEMsQ0FBQztvQkFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQ3RDLElBQUksQ0FBQyxjQUErQixDQUNyQyxDQUFDO2lCQUNIO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQ3BDLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLGNBQThCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FDekMsY0FBYyxFQUNkLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFDRDs7O09BR0c7SUFDSCxVQUFVO1FBQ1IsTUFBTSx3QkFBd0IsR0FBNkI7WUFDekQsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUs7Z0JBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTthQUN0QztTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsZ0JBQWdCO2FBQ2xCLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQzthQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUF1QixFQUFFLEVBQUU7Z0JBQ2hDLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRTtvQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUNqQyxTQUFTLEVBQUUsT0FBTyxFQUNsQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLENBQ2xJLENBQUM7b0JBQ0YsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7aUJBQ3pDO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQzdCLEtBQUssRUFDTCxJQUFJLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQ3BDLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCx1QkFBdUIsQ0FBQyxVQUF1QjtRQUM3QyxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQztJQUNwQyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsbUJBQW1CO1FBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUM7UUFDdkUsTUFBTSxzQkFBc0IsR0FBRztZQUM3QixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZTtZQUNsRCxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0I7WUFDcEQsYUFBYSxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsNkJBQTZCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRSx1QkFBdUIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsR0FBRztZQUNyTCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU07U0FDOUMsQ0FBQztRQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7WUFDN0QsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixLQUFLLEVBQUUsS0FBSztZQUNaLFVBQVUsRUFBRTtnQkFDViw2QkFBNkI7Z0JBQzdCLG1DQUFtQzthQUNwQztZQUNELFNBQVMsRUFBRSxRQUFRO1lBQ25CLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSztTQUM5QyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUzthQUNYLFdBQVcsRUFBRTthQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQzdCLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuQjs7Z0JBQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQy9CLENBQUM7K0dBbHJCVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwwTEMxR3ZDLGkxTkFzS0EseTVYRDFFSSxZQUFZLHltQkFDWixZQUFZLHdRQUNaLG9CQUFvQiwwSkFDcEIsa0JBQWtCLHFIQUNsQixnQkFBZ0IsbUlBQ2hCLDJCQUEyQixtR0FDM0IsbUJBQW1CLHFJQUNuQixlQUFlLDRRQUNmLGtCQUFrQjs7NEZBTVQsMEJBQTBCO2tCQW5CdEMsU0FBUzsrQkFFRSw0QkFBNEIsY0FDMUIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLGtCQUFrQjt3QkFDbEIsZ0JBQWdCO3dCQUNoQiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixrQkFBa0I7cUJBQ25CLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7b1BBSTVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBbGVydFR5cGUsXHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gIE1vZGFsVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHtcclxuICBBY2NvcmRpb25JbmZvLFxyXG4gIE1vZGFsQ29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gIFRhYmxlQWN0aW9ucyxcclxuICBBbGlnblR5cGUsXHJcbiAgTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBSYWRpb09wdGlvbixcclxuICBJY29uQnV0dG9uLFxyXG4gIFNsaWRlVG9nZ2xlT3B0aW9uLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxuICBBY2NvcmRpb25Db21wb25lbnQsXHJcbiAgQWNjb3JkaW9uRGV0YWlscyxcclxuICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgVGFibGVDb2x1bW5NZW51SW5mbyxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dCBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQtYXBwbGljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFRlbmFudHNQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGVuYW50cy1wZXJtaXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3NoYXJlZCc7XHJcbmltcG9ydCB7IFRlbmFudHNSb3V0ZXNDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm91dGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFRlbmFudEJhc2ljSW5mbyxcclxuICBUZW5hbnREZXRhaWxzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmltcG9ydCB7IFRlbmFudEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy90ZW5hbnQtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQsXHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3VwZGF0ZS10ZW5hbnQtc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgRmVhdHVyZVBlcm1pc3Npb25JZCB9IGZyb20gJy4uLy4uL21vZGVscy9mZWF0dXJlLXBlcm1pc3Npb24taWQubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEFwcFR5cGVDb25maWcsXHJcbiAgR2V0QXBwVHlwZXNSZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwLXR5cGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50QmFzaWNEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVuYW50LWJhc2ljLWRldGFpbHMvdGVuYW50LWJhc2ljLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZCxcclxuICBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUmVzcG9uc2UsXHJcbiAgR2V0Um9sZXNSZXNwb25zZSxcclxuICBSb2xlLFxyXG4gIFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5nLFxyXG4gIFJvbGVzQW5kUGVybWlzc2lvbnMsXHJcbiAgRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkLFxyXG4gIERlbGV0ZVJvbGVSZXNwb25zZSxcclxuICBQYWdpbmF0aW9uSW5mbyxcclxuICBSb2xlRGV0YWlscyxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZXMtYW5kLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1tb2RpZnktcm9sZS9jcmVhdGUtbW9kaWZ5LXJvbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm9sZU1lbnVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZS1tZW51LWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0Um9sZVR5cGVzUGF5bG9hZCxcclxuICBSb2xlVHlwZUNvbmZpZ3VyYXRpb24sXHJcbiAgUm9sZVR5cGVPcHRpb24sXHJcbiAgUm9sZVR5cGVSZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZS10eXBlLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2Etdmlldy10ZW5hbnQtZGV0YWlscycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBSb3V0ZXJNb2R1bGUsXHJcbiAgICBTbGlkZVRvZ2dsZUNvbXBvbmVudCxcclxuICAgIEFjY29yZGlvbkNvbXBvbmVudCxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBUZW5hbnRCYXNpY0RldGFpbHNDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld1RlbmFudERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBASW5wdXQoKSByb3V0ZVBhdGhzITogVGVuYW50c1JvdXRlc0NvbmZpZztcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dDtcclxuICB0ZW5hbnRMYWJlbHMgPSB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmxhYmVsO1xyXG4gIHNsaWRlVG9nZ2xlT3B0aW9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBsYWJlbDogdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5sYWJlbD8uYWN0aXZlLFxyXG4gICAgY2hlY2tlZDogdHJ1ZSxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIGVkaXRCdXR0b246IEljb25CdXR0b24gPSB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmJ1dHRvbnM7XHJcbiAgdGVuYW50RGV0YWlscyE6IFRlbmFudEJhc2ljSW5mbztcclxuICBhY2NvcmRpb25JbmZvTGlzdDogQWNjb3JkaW9uSW5mb1tdID0gSlNPTi5wYXJzZShcclxuICAgIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8udGVuYW50QWNjb3JkaW9uSW5mbylcclxuICApO1xyXG4gIGFwcElkID0gJyc7XHJcbiAgaWNvblNpemUgPSB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LmNvbHVtbkFjdGlvbkljb25TaXplO1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUNhcHRpb24gPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy50YWJsZUNhcHRpb247XHJcbiAgcm9sZXNBbmRQZXJtaXNzaW9uc1RhYmxlSGVhZGVyTmFtZSA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnRhYmxlQ29sdW1uc0hlYWRlclRleHQ7XHJcbiAgcm9sZXNBbmRQZXJtaXNzaW9uc1RhYmxlU3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5zY3JvbGxiYXJTdXBwb3J0TWVzc2FnZTtcclxuICBwZXJtaXNzaW9uc0NvbHVtbkNsYXNzTnVtYmVyID0gMTtcclxuICBtZW51SXRlbXM6IE1lbnVbXSA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LmNvbHVtbkFjdGlvbk1lbnVJdGVtcztcclxuICBjb2x1bW5TY2hlbWE6IFRhYmxlQ29sdW1uU2NoZW1hW10gPSBbXTtcclxuICB0YWJsZURhdGE6IFJvbGVzQW5kUGVybWlzc2lvbnNbXSA9IFtdO1xyXG4gIGlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgcGFnaW5hdG9yQ29uZmlnOiBQYWdpbmF0b3JDb25maWcgPSB7XHJcbiAgICByZWNvcmRzUGVyUGFnZTogdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5wYWdlU2l6ZU9wdGlvbnNbMF0sXHJcbiAgICBwYWdlU2l6ZU9wdGlvbnM6IHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8ucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgdGFibGVQYWdpbmF0aW9uITogUGFnaW5hdGlvbkluZm87XHJcbiAgcm9sZXNBbmRQZXJtaXNzaW9uc0NsYXNzTmFtZSA9XHJcbiAgICAnLmllZWVzYS12aWV3LXRlbmFudC1pbmZvX19yb2xlcy1hbmQtcGVybWlzc2lvbnMnO1xyXG4gIGhlYWRlckVsZW1lbnRDbGFzc05hbWUgPSAnLmllZWVzYS1oZWFkZXInO1xyXG4gIHRhYmxlQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNQYWdpbmF0aW9uTmVlZGVkOiB0cnVlLFxyXG4gIH07XHJcbiAgdmlld1RlbmFudHNSb3V0ZVVybCE6IHN0cmluZztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIGFjY29yZGlvbkRldGFpbHMgPSBBY2NvcmRpb25EZXRhaWxzO1xyXG4gIGFwcFR5cGVPcHRpb25zITogUmFkaW9PcHRpb25bXTtcclxuICBpc0Jhc2ljRGV0YWlsc0V4cGFuZGVkID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBlZGl0VGVuYW50U2NyZWVuVGV4dHM6IGFueSA9IHRoaXMuY29uc3RhbnRzPy5lZGl0VGVuYW50O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGVsZXRlUm9sZVNjcmVlblRleHRzOiBhbnkgPSB0aGlzLmNvbnN0YW50cz8uZGVsZXRlUm9sZTtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIHVzZXJUZW5hbnRzUGVybWlzc2lvbnMhOiBUZW5hbnRzUGVybWlzc2lvbnNbXTtcclxuICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlO1xyXG4gIGZ1bmN0aW9uVHlwZSE6IFRlbmFudEZ1bmN0aW9uVHlwZTtcclxuICBjcmVhdGVSb2xlU2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uY3JlYXRlUm9sZTtcclxuICByb2xlTWVudUVsZW1lbnQhOiBIVE1MRWxlbWVudDtcclxuICBzZWxlY3RlZFJvbGVJbmZvOiBSb2xlRGV0YWlscyA9IHtcclxuICAgIHJvbGVJZDogJycsXHJcbiAgICByb2xlTmFtZTogJycsXHJcbiAgfTtcclxuICByb2xlVHlwZU9wdGlvbnM6IFJvbGVUeXBlT3B0aW9uW10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgdGVuYW50QXBwU2VydmljZTogVGVuYW50QXBwbGljYXRpb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U6IEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQ/Lm1hdGNoZXM7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdmlldyB0ZW5hbnQgZGV0YWlscyBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudERldGFpbHMgPVxyXG4gICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oKSBhcyBUZW5hbnRCYXNpY0luZm87XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmNoZWNrZWQgPSB0aGlzLnRlbmFudERldGFpbHM/LnN0YXR1cyBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IHRoaXMudGVuYW50RGV0YWlscz8uc3RhdHVzXHJcbiAgICAgID8gdGhpcy50ZW5hbnRMYWJlbHM/LmFjdGl2ZVxyXG4gICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgIHRoaXMucm91dGVQYXRocyA9IHRoaXMucm91dGVQYXRocyA/PyB0aGlzLmNvbnN0YW50cz8ucm91dGVDb25maWdQYXRoO1xyXG4gICAgdGhpcy52aWV3VGVuYW50c1JvdXRlVXJsID0gYC8ke3RoaXMucm91dGVQYXRocz8udmlld1RlbmFudHN9YDtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0QXBwQ29uZmlnKHRoaXMuYXBpQmFzZVVSTCwgdGhpcy51c2VyUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy51c2VyVGVuYW50c1Blcm1pc3Npb25zID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5maWx0ZXJQZXJtaXNzaW9uKFxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpXHJcbiAgICAgID8uYXBwSWQgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy50YWJsZVBhZ2luYXRpb24gPSB7XHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1swXSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdldFRlbmFudERldGFpbHModGhpcy5hcHBJZCk7XHJcbiAgICB0aGlzLmdldEFwcGxpY2F0aW9uVHlwZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGVuYW50IGRldGFpbHMgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VGVuYW50RGV0YWlscyhhcHBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFRlbmFudERldGFpbHMoYXBwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBUZW5hbnREZXRhaWxzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlc3BvbnNlPy5ib2R5IGFzIFRlbmFudEJhc2ljSW5mbztcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnNldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oXHJcbiAgICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24uY2hlY2tlZCA9IHRoaXMudGVuYW50RGV0YWlsc1xyXG4gICAgICAgICAgICAgIC5zdGF0dXMgYXMgYm9vbGVhbjtcclxuICAgICAgICAgICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IHRoaXMudGVuYW50RGV0YWlscy5zdGF0dXNcclxuICAgICAgICAgICAgICA/IHRoaXMudGVuYW50TGFiZWxzPy5hY3RpdmVcclxuICAgICAgICAgICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgICAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLnRlbmFudERldGFpbHMuZmVhdHVyZXMgYXMgRmVhdHVyZXNbXTtcclxuICAgICAgICAgICAgZmVhdHVyZXMubWFwKChmZWF0dXJlOiBGZWF0dXJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmU/LmZlYXR1cmVJZCA9PT1cclxuICAgICAgICAgICAgICAgICAgRmVhdHVyZVBlcm1pc3Npb25JZC5NRUVUSU5HU19BTkRfRVZFTlRTIHx8XHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlPy5mZWF0dXJlSWQgPT09IEZlYXR1cmVQZXJtaXNzaW9uSWQuQkFMTE9UU1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uSW5mb0xpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFjY29yZGlvbkluZm9MaXN0Lmxlbmd0aCArIDEsXHJcbiAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTogZmVhdHVyZT8uZmVhdHVyZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzLmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgdGhlIGNvcnJlc3BvbmRpbmcgdGVuYW50IGJhc2ljIG9yIGZlYXR1cmUgZGV0YWlscyBiYXNlZCBvbiBzZWxlY3RlZCBhY2NvcmRpb24uXHJcbiAgICogQHBhcmFtIHtBY2NvcmRpb25JbmZvfSBhY2NvcmRpb25JbmZvXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBleHBhbmRlZFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm86IEFjY29yZGlvbkluZm8sIGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBhY2NvcmRpb25JZCA9IGFjY29yZGlvbkluZm8uaWQgYXMgbnVtYmVyO1xyXG4gICAgc3dpdGNoIChhY2NvcmRpb25JZCkge1xyXG4gICAgICBjYXNlIDE6IHtcclxuICAgICAgICB0aGlzLmlzQmFzaWNEZXRhaWxzRXhwYW5kZWQgPSBleHBhbmRlZDtcclxuICAgICAgICBpZiAoZXhwYW5kZWQpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QXBwbGljYXRpb25UeXBlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIDI6IHtcclxuICAgICAgICB0aGlzLmlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkID0gZXhwYW5kZWQ7XHJcbiAgICAgICAgaWYgKGV4cGFuZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9uc1swXTtcclxuICAgICAgICAgIHRoaXMudGFibGVQYWdpbmF0aW9uLm9mZnNldCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUGFnaW5hdGlvbi5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZEluaXRpYWxpemVUYWJsZVNjaGVtYSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSBjb25maWd1cmVkIHJvbGVzIG9mIHRoZSBzZWxlY3RlZCB0ZW5hbnQgYW5kIGNyZWF0ZXMgdGhlIGNvbHVtbiBzY2hlbWEuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Um9sZXNBbmRJbml0aWFsaXplVGFibGVTY2hlbWEoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFJvbGVzKHRoaXMuYXBwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBHZXRSb2xlc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmdldFJvbGVzQW5kUGVybWlzc2lvbnNBbmRJbml0aWFsaXplVGFibGVWaWV3KHtcclxuICAgICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHRoaXMudGFibGVQYWdpbmF0aW9uLm9mZnNldCxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnRhYmxlUGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZXNMaXN0ID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnNvcnRSb2xlc0J5Um9sZVR5cGUoXHJcbiAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgUm9sZVtdXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5zZXRSb2xlc0luZm8ocm9sZXNMaXN0KTtcclxuICAgICAgICAgICAgY29uc3QgY2VsbFZhbHVlID1cclxuICAgICAgICAgICAgICB0aGlzLmNvbnN0YW50cy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucy50YWJsZUNlbGxWYWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgaWQ6IDAsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5EZWY6ICdwZXJtaXNzaW9ucycsXHJcbiAgICAgICAgICAgICAgICBoZWFkaW5nOlxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvbnN0YW50cy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucy50YWJsZUNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIC5wZXJtaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgICAgICAgY2VsbERhdGE6IChyb2xlc0FuZFBlcm1pc3Npb25zOiBSb2xlc0FuZFBlcm1pc3Npb25zKSA9PlxyXG4gICAgICAgICAgICAgICAgICByb2xlc0FuZFBlcm1pc3Npb25zLnBlcm1pc3Npb24sXHJcbiAgICAgICAgICAgICAgICBpc1N0aWNreUNvbHVtbjogdHJ1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICByb2xlc0xpc3QubWFwKChyb2xlOiBSb2xlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29sdW1uU2NoZW1hLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWQ6IGluZGV4ICsgMSxcclxuICAgICAgICAgICAgICAgIGNvbHVtbkRlZjogcm9sZS5yb2xlSWQsXHJcbiAgICAgICAgICAgICAgICBoZWFkaW5nOiByb2xlLnJvbGVOYW1lLFxyXG4gICAgICAgICAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgICAgICAgICBoYXNDb2x1bW5BY3Rpb25zOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2VsbERhdGE6IChyb2xlc0FuZFBlcm1pc3Npb25zOiBSb2xlc0FuZFBlcm1pc3Npb25zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiByb2xlc0FuZFBlcm1pc3Npb25zLnJvbGVJZHNMaXN0LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAgICAgKHJvbGVJZDogc3RyaW5nKSA9PiByb2xlLnJvbGVJZCA9PT0gcm9sZUlkXHJcbiAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICA/IGNlbGxWYWx1ZS55ZXNcclxuICAgICAgICAgICAgICAgICAgICA6IGNlbGxWYWx1ZS5ubztcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByb2xlcyBhbmQgcGVybWlzc2lvbnMgbWFwcGluZ3MgZm9yIHRoZSBzZWxlY3RlZCB0ZW5hbnQgYW5kIGFuZCBpbml0aWFsaXplIHRhYmxlIHZpZXcuXHJcbiAgICogQHBhcmFtIHtHZXRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVzQW5kUGVybWlzc2lvbnNBbmRJbml0aWFsaXplVGFibGVWaWV3KFxyXG4gICAgcGF5bG9hZDogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWRcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0Um9sZXNBbmRQZXJtaXNzaW9uc01hcHBpbmdzKHRoaXMuYXBwSWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlPy5ib2R5XHJcbiAgICAgICAgICAgICAgPy50b3RhbFJlY29yZHMgYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICBjb25zdCByb2xlc0FuZFBlcm1pc3Npb25zTGlzdCA9IHJlc3BvbnNlPy5ib2R5XHJcbiAgICAgICAgICAgICAgPy5yb2xlUGVybWlzc2lvbkRldGFpbHMgYXMgUm9sZXNBbmRQZXJtaXNzaW9uc01hcHBpbmdbXTtcclxuICAgICAgICAgICAgcm9sZXNBbmRQZXJtaXNzaW9uc0xpc3QubWFwKChwZXJtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHJvbGVJZHNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICAgIHJvbGVJZHNMaXN0ID0gcGVybWlzc2lvbi5yb2xlTGlzdC5tYXAoKHJvbGUpID0+IHJvbGUucm9sZUlkKTtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHBlcm1pc3Npb24ucGVybWlzc2lvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICByb2xlSWRzTGlzdDogcm9sZUlkc0xpc3QsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaCB0aGUgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHJlY29yZHMgYmFzZWQgb24gb2Zmc2V0IGFuZCBwYWdlIHNpemUgd2hpbGUgdGhlIHBhZ2luYXRpb24gY2hhbmdlcy5cclxuICAgKiBAcGFyYW0ge1BhZ2VFdmVudH0gcGFnZUV2ZW50XHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25UYWJsZVBhZ2luYXRpb25DaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMudGFibGVQYWdpbmF0aW9uID0ge1xyXG4gICAgICBvZmZzZXQ6IHBhZ2VFdmVudC5wYWdlSW5kZXgsXHJcbiAgICAgIHBhZ2VTaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5nZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyh7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBvZmZzZXQ6IHBhZ2VFdmVudC5wYWdlSW5kZXgsXHJcbiAgICAgICAgcGFnZVNpemU6IHBhZ2VFdmVudC5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VsZWN0ZWQgcm9sZSdzIGluZm9ybWF0aW9uIGFuZCBwZXJmb3JtcyBlZGl0IG9yIGRlbGV0ZSBhY3Rpb24gYmFzaXMgb24gdGhlIHNlbGVjdGVkIG1lbnUgaXRlbS5cclxuICAgKiBAcGFyYW0ge1RhYmxlQ29sdW1uTWVudUluZm99IHJvbGVNZW51SW5mb1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uUm9sZU1lbnVDbGljayhyb2xlTWVudUluZm86IFRhYmxlQ29sdW1uTWVudUluZm8pIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSW5mby5yb2xlSWQgPSByb2xlTWVudUluZm8/LnRhYmxlQ29sdW1uSW5mbz8uY29sdW1uRGVmO1xyXG4gICAgdGhpcy5zZWxlY3RlZFJvbGVJbmZvLnJvbGVOYW1lID0gcm9sZU1lbnVJbmZvPy50YWJsZUNvbHVtbkluZm8/LmhlYWRpbmc7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnNldFNlbGVjdGVkUm9sZUluZm9ybWF0aW9uKHRoaXMuc2VsZWN0ZWRSb2xlSW5mbyk7XHJcbiAgICBpZiAocm9sZU1lbnVJbmZvPy5tZW51QWN0aW9uSW5mbz8uaWQgPT09IFJvbGVNZW51QWN0aW9uLkRFTEVURV9ST0xFKSB7XHJcbiAgICAgIHRoaXMub3BlbkRlbGV0ZVJvbGVNb2RhbCgpO1xyXG4gICAgfSBlbHNlIGlmIChyb2xlTWVudUluZm8/Lm1lbnVBY3Rpb25JbmZvPy5pZCA9PT0gUm9sZU1lbnVBY3Rpb24uRURJVF9ST0xFKSB7XHJcbiAgICAgIHRoaXMub3BlbkVkaXRSb2xlRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgYWNjb3JkaW9uIGJhc2VkIG9uIHRoZSBlbGVtZW50J3MgSUQgaW4gRE9NIHRyZWUuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUFjY29yZGlvbkZuKGluZGV4OiBudW1iZXIsIGl0ZW06IEFjY29yZGlvbkluZm8pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl0ZW0/LmlkIGFzIG51bWJlcjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcm9sZSB0eXBlcyBhbmQgdXBkYXRlcyB0aGUgZm9ybSBjb250cm9sLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVUeXBlcygpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBheWxvYWQ6IEdldFJvbGVUeXBlc1BheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBhcHBJZDogdGhpcy50ZW5hbnREZXRhaWxzPy5hcHBJZCBhcyBzdHJpbmcsXHJcbiAgICAgICAgY29uZmlnRmllbGROYW1lOiAncm9sZV90eXBlJyxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFJvbGVUeXBlcyhwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogUm9sZVR5cGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5yb2xlVHlwZU9wdGlvbnMgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0Um9sZVR5cGVPcHRpb25zKFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5IGFzIFJvbGVUeXBlQ29uZmlndXJhdGlvbltdXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0Um9sZVR5cGVPcHRpb24odGhpcy5yb2xlVHlwZU9wdGlvbnMpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5mdW5jdGlvblR5cGUgPT09IFRlbmFudEZ1bmN0aW9uVHlwZS5DUkVBVEVfUk9MRSkge1xyXG4gICAgICAgICAgICAgIHRoaXMub3BlbkNyZWF0ZVJvbGVGb3JtKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVSb2xlU2NyZWVuVGV4dHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGNyZWF0ZSByb2xlIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5DcmVhdGVSb2xlRm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0VGVuYW50RnVuY3Rpb25UeXBlKFxyXG4gICAgICBUZW5hbnRGdW5jdGlvblR5cGU/LkNSRUFURV9ST0xFXHJcbiAgICApO1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBUZW5hbnRGdW5jdGlvblR5cGUuQ1JFQVRFX1JPTEU7XHJcbiAgICBpZiAodGhpcy5yb2xlVHlwZU9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVSb2xlPy5oZWFkaW5nLFxyXG4gICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50LFxyXG4gICAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtY3JlYXRlLW1vZGlmeS1yb2xlJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmdldFJvbGVUeXBlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgZWRpdCByb2xlIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0Um9sZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnNldFRlbmFudEZ1bmN0aW9uVHlwZShUZW5hbnRGdW5jdGlvblR5cGU/LkVESVRfUk9MRSk7XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUX1JPTEU7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLnNlbGVjdGVkUm9sZUluZm8/LnJvbGVOYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZU1vZGlmeVJvbGVDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1jcmVhdGUtbW9kaWZ5LXJvbGUnKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgdGVuYW50IG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0VGVuYW50Rm9ybSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0VGVuYW50RnVuY3Rpb25UeXBlKFRlbmFudEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IFRlbmFudEZ1bmN0aW9uVHlwZS5FRElUO1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogdGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWVkaXQtdGVuYW50Jyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVucyBtb2RhbCBjb21wb25lbnQgd2l0aCByZWNlaXZlZCBwYXJhbXMgYW5kIGhhbmRsZXMgZm9ybSBzdWJtaXNzaW9uIHN1Y2Nlc3MgYW5kIGVycm9ycy5cclxuICAgKiBAcGFyYW0geyp9IGRpYWxvZ09wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXNzTmFtZV1cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudHNEZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3Blbk1vZGFsKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgIGRpYWxvZ09wdGlvbnM6IGFueSxcclxuICAgIGNsYXNzTmFtZT86IHN0cmluZ1xyXG4gICk6IHZvaWQge1xyXG4gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lID8/ICcnO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkaWFsb2dPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWRpYWxvZycsIGNsYXNzTmFtZV0sXHJcbiAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5zdWJtaXRGb3JtUmVzcG9uc2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBuby11bnVzZWQtdmFyc1xyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5mdW5jdGlvblR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgVGVuYW50RnVuY3Rpb25UeXBlPy5FRElUOiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBgJHt0aGlzLnRlbmFudERldGFpbHM/LmFwcFRpdGxlfSAke3RoaXMuZWRpdFRlbmFudFNjcmVlblRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9ufWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzID0ge1xyXG4gICAgICAgICAgICAgIC4uLih0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpIGFzIFRlbmFudEJhc2ljSW5mbyksXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBUZW5hbnRGdW5jdGlvblR5cGU/LkNSRUFURV9ST0xFOiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb21wdE1lc3NhZ2UgPSB0aGlzLmNyZWF0ZVJvbGVTY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2VzcztcclxuICAgICAgICAgICAgY29uc3Qgcm9sZUluZm8gPSB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldE5ld2x5Q3JlYXRlZFJvbGVJbmZvKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBgJHtwcm9tcHRNZXNzYWdlPy5zdWJtaXNzaW9uMX0gJHtyb2xlSW5mbz8ucm9sZU5hbWV9ICR7cHJvbXB0TWVzc2FnZT8uc3VibWlzc2lvbjJ9ICR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0uICR7cHJvbXB0TWVzc2FnZT8uc3VibWlzc2lvbjN9YFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJvbGVzQW5kSW5pdGlhbGl6ZVRhYmxlU2NoZW1hKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBUZW5hbnRGdW5jdGlvblR5cGU/LkVESVRfUk9MRToge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9tcHRNZXNzYWdlID0gdGhpcy5jcmVhdGVSb2xlU2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGVJbmZvID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5nZXROZXdseUNyZWF0ZWRSb2xlSW5mbygpO1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgYCR7cm9sZUluZm8/LnJvbGVOYW1lfSAke3Byb21wdE1lc3NhZ2U/Lm1vZGlmeX0gJHt0aGlzLnRlbmFudERldGFpbHM/LmFwcFRpdGxlfS5gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um9sZXNBbmRJbml0aWFsaXplVGFibGVTY2hlbWEoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uZm9ybUNhbmNlbFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2FsbHMgb3BlblRlbmFudFN0YXR1c0NvbmZpcm1hdGlvbk1vZGFsIHRvIGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRlbmFudCBvbiBzbGlkZSB0b2dnbGUgY2hhbmdlLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHNsaWRlVG9nZ2xlT3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TbGlkZVRvZ2dsZUNoYW5nZShzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub3BlblRlbmFudFN0YXR1c0NvbmZpcm1hdGlvbk1vZGFsKHNsaWRlVG9nZ2xlT3B0aW9uPy5jaGVja2VkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBpbmFjdGl2YXRlL3JlYWN0aXZhdGUgdGhlIHRlbmFudC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWN0aXZhdGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuVGVuYW50U3RhdHVzQ29uZmlybWF0aW9uTW9kYWwoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9IHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IHN0YXR1c1RleHQgPSBpc0FjdGl2YXRlXHJcbiAgICAgID8gY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZUFjdGl2YXRlXHJcbiAgICAgIDogY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZUluYWN0aXZhdGU7XHJcbiAgICBjb25zdCB1cGRhdGVUZW5hbnRTdGF0dXNNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBgJHtjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlfSAke3N0YXR1c1RleHR9ICR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0/YCxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogdXBkYXRlVGVuYW50U3RhdHVzTW9kYWxPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVUZW5hbnRTdGF0dXMoaXNBY3RpdmF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U2xpZGVUb2dnbGVTdGF0dXMoaXNBY3RpdmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgdGVuYW50IHN0YXR1cyB0byB0aGUgc2VydmVyIHVzaW5nIGh0dHAgcmVxdWVzdCBhbmQgZGlzcGxheSBzdWNjZXNzL2Vycm9yIG1lc3NhZ2UgYmFzZWQgb24gcmVxdWVzdCByZXNwb25zZSAoc3VjY2VzcyBvciBmYWlsdXJlKS5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWN0aXZhdGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVUZW5hbnRTdGF0dXMoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgdXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQ6IFVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwSWQ6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwSWQsXHJcbiAgICAgICAgc3RhdHVzOiBpc0FjdGl2YXRlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAudXBkYXRlVGVuYW50U3RhdHVzKHVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmxhYmVsID0gaXNBY3RpdmF0ZVxyXG4gICAgICAgICAgICAgID8gdGhpcy50ZW5hbnRMYWJlbHM/LmFjdGl2ZVxyXG4gICAgICAgICAgICAgIDogdGhpcy50ZW5hbnRMYWJlbHM/LmluYWN0aXZlO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudERldGFpbHMuc3RhdHVzID0gaXNBY3RpdmF0ZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy50ZW5hbnREZXRhaWxzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFNsaWRlVG9nZ2xlU3RhdHVzKGlzQWN0aXZhdGUpO1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHNsaWRlIHRvZ2dsZSBjaGVja2VkIHN0YXR1cyBhbmQgbGFiZWwuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0FjdGl2YXRlXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0U2xpZGVUb2dnbGVTdGF0dXMoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5jaGVja2VkID0gIWlzQWN0aXZhdGU7XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmxhYmVsID0gIWlzQWN0aXZhdGVcclxuICAgICAgPyB0aGlzLnRlbmFudExhYmVscz8uYWN0aXZlXHJcbiAgICAgIDogdGhpcy50ZW5hbnRMYWJlbHM/LmluYWN0aXZlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgYXBwbGljYXRpb24vdGVuYW50IHR5cGVzLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEFwcGxpY2F0aW9uVHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldEFwcGxpY2F0aW9uVHlwZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0QXBwVHlwZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBUeXBlT3B0aW9ucyA9XHJcbiAgICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldEFwcGxpY2F0aW9uVHlwZU9wdGlvbnMoXHJcbiAgICAgICAgICAgICAgICByZXNwb25zZT8uYm9keSBhcyBBcHBUeXBlQ29uZmlnW11cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2Uuc2V0QXBwbGljYXRpb25UeXBlKFxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwVHlwZU9wdGlvbnMgYXMgUmFkaW9PcHRpb25bXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnRlbmFudEFwcFNlcnZpY2UudmFsaWRhdGVBY2Nlc3MoXHJcbiAgICAgIHBlcm1pc3Npb25UeXBlLFxyXG4gICAgICB0aGlzLnVzZXJUZW5hbnRzUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFBvc3RzIHRoZSBkZXRhaWxzIG9mIHRoZSByb2xlIHRvIGJlIGRlbGV0ZWQgdG8gdGhlIHNlcnZlciB1c2luZyBodHRwIHJlcXVlc3QgYW5kIGRpc3BsYXkgc3VjY2Vzcy9lcnJvciBtZXNzYWdlIGJhc2VkIG9uIHJlcXVlc3QgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSkuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlUm9sZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZDogRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwSWQ6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwSWQsXHJcbiAgICAgICAgcm9sZUlkOiB0aGlzLnNlbGVjdGVkUm9sZUluZm8/LnJvbGVJZCxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmRlbGV0ZVJvbGUoZGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IERlbGV0ZVJvbGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBgJHt0aGlzLnNlbGVjdGVkUm9sZUluZm8/LnJvbGVOYW1lfSAke3RoaXMuZGVsZXRlUm9sZVNjcmVlblRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9ufSAke3RoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGV9LmBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZEluaXRpYWxpemVUYWJsZVNjaGVtYSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgcm9sZSBtZW51IEhUTUxFbGVtZW50LlxyXG4gICAqIEBwYXJhbSB7SFRNTEVsZW1lbnR9IG1lbnVCdXR0b25cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBzZWxlY3RlZFJvbGVNZW51RWxlbWVudChtZW51QnV0dG9uOiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb2xlTWVudUVsZW1lbnQgPSBtZW51QnV0dG9uO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGdldCB1c2VyIGNvbmZpcm1hdGlvbiB0byBkZWxldGUgdGhlIHJvbGUuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkRlbGV0ZVJvbGVNb2RhbCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVSb2xlTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogYCR7Y29uZmlybWF0aW9uSW5mbz8uZGVsZXRlUm9sZUNvbmZpcm1hdGlvbk1lc3NhZ2V9ICR7dGhpcy5zZWxlY3RlZFJvbGVJbmZvPy5yb2xlTmFtZX0/ICR7Y29uZmlybWF0aW9uSW5mbz8uZGVsZXRlUm9sZVByb21wdE1lc3NhZ2V9ICR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0uYCxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlUm9sZU1vZGFsT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICcyNSUnLFxyXG4gICAgICBwYW5lbENsYXNzOiBbXHJcbiAgICAgICAgJ2llZWVzYS1tb2RhbC1jb25maXJtLWRpYWxvZycsXHJcbiAgICAgICAgJ2llZWVzYS1kZWxldGUtcm9sZS1jb25maXJtLWRpYWxvZycsXHJcbiAgICAgIF0sXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogY29uZmlybWF0aW9uSW5mbz8uYXJpYUxhYmVsPy5hbGVydCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZVJvbGUoKTtcclxuICAgICAgICB9IGVsc2UgdGhpcy5yb2xlTWVudUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvbGVUeXBlT3B0aW9ucyA9IFtdO1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5zZXRSb2xlVHlwZU9wdGlvbih0aGlzLnJvbGVUeXBlT3B0aW9ucyk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkPy5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JD8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLXZpZXctdGVuYW50LWluZm8gcHgtNCBwYi00XCJcclxuICBbbmdDbGFzc109XCJcclxuICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICA/ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tYmctd2hpdGUnXHJcbiAgICAgIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1iZy1ibHVlJ1xyXG4gIFwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtbGctNCBnYXAtbWQtMyBnYXAtc20tMiBnYXAtM1wiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnZmxleC1jb2x1bW4gZ2FwLTIgcGItMycgOiAnYWxpZ24taXRlbS1jZW50ZXInXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC1sZy00IGdhcC1tZC0zIGdhcC1zbS0zIGdhcC0zIHBzLTAgYWxpZ24taXRlbXMtbWQtY2VudGVyIGFsaWduLWl0ZW1zLXhsLWNlbnRlclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdmbGV4LWNvbHVtbicgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJtYi0wIGllZWVzYS1oZWFkbGluZS1sZy0zMiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnJyA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tdGl0bGUnXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHRlbmFudERldGFpbHM/LmFwcFRpdGxlIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtbGctMiBnYXAtbWQtMiBnYXAtc20tMiBnYXAtMlwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cIm1iLTAgaWVlZXNhLXRpdGxlLXNtLTE0IG10LTFcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWFwcC1pZCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHRlbmFudExhYmVscz8uYXBwSWQgfX06XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIHt7IHRlbmFudERldGFpbHM/LmFwcElkIH19XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbmFudERldGFpbHM/LmFwcElkICE9PSB0ZW5hbnRMYWJlbHM/LnNhQXBwSWRcIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlciBbdmVydGljYWxdPVwidHJ1ZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cIm1iLTAgbXQtMSBpZWVlc2EtdGl0bGUtc20tMTQgaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWFwcC1zdGF0dXNcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICcnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGVuYW50TGFiZWxzPy5zdGF0dXMgfX06XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8aWVlZXNhLXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgICBbc2xpZGVUb2dnbGVdPVwic2xpZGVUb2dnbGVPcHRpb25cIlxyXG4gICAgICAgICAgICAoc2xpZGVUb2dnbGVDaGFuZ2UpPVwib25TbGlkZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2llZWVzYS1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YVxyXG4gICAgICBjbGFzcz1cImllZWVzYS1idG4tbGFiZWwtbGctYm9sZC0xNiB0ZXh0LWRlY29yYXRpb24tbm9uZSBtdC1sZy0zIG10LXhsLTYgcC1zbS0wIHAtbWQtMFwiXHJcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcclxuICAgICAgW3JvdXRlckxpbmtdPVwidmlld1RlbmFudHNSb3V0ZVVybFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWxpbmstbW9iaWxlJ1xyXG4gICAgICAgICAgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWxpbmsnXHJcbiAgICAgIFwiXHJcbiAgICAgID57eyB0ZW5hbnRMYWJlbHM/LnZpZXdBbGxBcHBzIH19PC9hXHJcbiAgICA+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWNjb3JkaW9uIGllZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24tLWJsdWUtYmdcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24tLWluZm8nIDogJydcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgbGV0IGFjY29yZGlvbkluZm8gb2YgYWNjb3JkaW9uSW5mb0xpc3Q7XHJcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeUFjY29yZGlvbkZuXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjY29yZGlvbkluZm8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJhY2NvcmRpb25EZXRhaWxzLkJBU0lDX0RFVEFJTFNcIj5cclxuICAgICAgICAgIDxpZWVlc2EtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgIFthY2NvcmRpb25JbmZvXT1cImFjY29yZGlvbkluZm9cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24taW5mb1wiXHJcbiAgICAgICAgICAgIChhY2NvcmRpb25PcGVuZWQpPVwic2hvd1RlbmFudERldGFpbHMoYWNjb3JkaW9uSW5mbywgJGV2ZW50KVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICAgaXNCYXNpY0RldGFpbHNFeHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuTUFOQUdFX1RFTkFOVClcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgIGFjdGlvbnNcclxuICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS1idXR0b25cIlxyXG4gICAgICAgICAgICAgIFtpY29uQnV0dG9uXT1cImVkaXRCdXR0b25cIlxyXG4gICAgICAgICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib3BlbkVkaXRUZW5hbnRGb3JtKClcIlxyXG4gICAgICAgICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgY29tcG9uZW50ICpuZ0lmPVwiaXNCYXNpY0RldGFpbHNFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtdGVuYW50LWJhc2ljLWRldGFpbHNcclxuICAgICAgICAgICAgICAgIFt0ZW5hbnREZXRhaWxzXT1cInRlbmFudERldGFpbHNcIlxyXG4gICAgICAgICAgICAgID48L2llZWVzYS10ZW5hbnQtYmFzaWMtZGV0YWlscz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2llZWVzYS1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiYWNjb3JkaW9uRGV0YWlscy5ST0xFU19BTkRfUEVSTUlTU0lPTlNcIj5cclxuICAgICAgICAgIDxpZWVlc2EtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgIFthY2NvcmRpb25JbmZvXT1cImFjY29yZGlvbkluZm9cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19yb2xlcy1hbmQtcGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgYWN0aW9uc1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNSb2xlc0FuZFBlcm1pc3Npb25zRXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0zXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgIGlzTW9iaWxlVmlldyA/ICdtYi0zIHB4LTQnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY3Rpb25zJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC10ZXJ0aWFyeS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAncHgtMiBweS0yJ1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZVJvbGVGb3JtKClcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5NQU5BR0VfVEVOQU5UKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLmFjdGlvbkJ1dHRvbkxhYmVscy5hZGRSb2xlXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LXRlcnRpYXJ5LWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICdweC0yIHB5LTInXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICBjb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMuYWN0aW9uQnV0dG9uTGFiZWxzXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFBlcm1pc3Npb25zUm9sZXNcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGNvbXBvbmVudCAqbmdJZj1cImlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19yb2xlcy1hbmQtcGVybWlzc2lvbnNfX2RpdmlkZXJcIlxyXG4gICAgICAgICAgICAgID48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5TY2hlbWEubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZURhdGFJbmZvXT1cInRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbaGVhZGVyRWxlbWVudENsYXNzTmFtZV09XCJoZWFkZXJFbGVtZW50Q2xhc3NOYW1lXCJcclxuICAgICAgICAgICAgICAgIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJyb2xlc0FuZFBlcm1pc3Npb25zVGFibGVDYXB0aW9uXCJcclxuICAgICAgICAgICAgICAgIFtwYWdpbmF0b3JDb25maWddPVwicGFnaW5hdG9yQ29uZmlnXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUFjdGlvbnNdPVwidGFibGVBY3Rpb25zXCJcclxuICAgICAgICAgICAgICAgIFtpc1Njcm9sbFN1cHBvcnRNZXNzYWdlTmVlZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlQ29sdW1uQWN0aW9uTWVudVNpemVdPVwiaWNvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlQ29sdW1uQWN0aW9uc109XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgICAgW2N1c3RvbVN0aWNreUhlYWRlck5lZWRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XT1cInJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3Njcm9sbGJhclN1cHBvcnRNZXNzYWdlXT1cIlxyXG4gICAgICAgICAgICAgICAgICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVTdXBwb3J0TWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcl09XCJwZXJtaXNzaW9uc0NvbHVtbkNsYXNzTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uVGFibGVQYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHRhYmxlQ29sdW1uTWVudUFjdGlvbkNsaWNrKT1cIm9uUm9sZU1lbnVDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICh0YWJsZUNvbHVtbk1lbnVUb2dnbGVCdXR0b24pPVwic2VsZWN0ZWRSb2xlTWVudUVsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgPjwvaWVlZXNhLWRhdGEtdGFibGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pZWVlc2EtYWNjb3JkaW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cclxuICAgICAgICAgIDxpZWVlc2EtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgIFthY2NvcmRpb25JbmZvXT1cImFjY29yZGlvbkluZm9cIlxyXG4gICAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgICAgPjwvaWVlZXNhLWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
672
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10ZW5hbnQtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXRlbmFudC1kZXRhaWxzL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZGV0YWlscy92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFHVCxTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsY0FBYyxFQUdkLG9CQUFvQixFQUVwQixTQUFTLEVBQ1QsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUtuQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixrQkFBa0IsR0FFbkIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFhN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FB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UDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsMkJBQTJCO3dCQUMzQixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQiw2QkFBNkI7cUJBQzlCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7b1BBSTVCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBBbGVydFR5cGUsXHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gIE1vZGFsVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHtcclxuICBBY2NvcmRpb25JbmZvLFxyXG4gIE1vZGFsQ29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gIFRhYmxlQWN0aW9ucyxcclxuICBBbGlnblR5cGUsXHJcbiAgTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBSYWRpb09wdGlvbixcclxuICBJY29uQnV0dG9uLFxyXG4gIFNsaWRlVG9nZ2xlT3B0aW9uLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxuICBBY2NvcmRpb25Db21wb25lbnQsXHJcbiAgQWNjb3JkaW9uRGV0YWlscyxcclxuICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgVGFibGVDb2x1bW5NZW51SW5mbyxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dCBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQtYXBwbGljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFRlbmFudHNQZXJtaXNzaW9ucyxcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvdGVuYW50cy1wZXJtaXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3NoYXJlZCc7XHJcbmltcG9ydCB7IFRlbmFudHNSb3V0ZXNDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm91dGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIFRlbmFudEJhc2ljSW5mbyxcclxuICBUZW5hbnREZXRhaWxzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudC5tb2RlbCc7XHJcbmltcG9ydCB7IFRlbmFudEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy90ZW5hbnQtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IENyZWF0ZVRlbmFudEFwcGxpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi9jcmVhdGUtdGVuYW50LWFwcGxpY2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2VFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7XHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQsXHJcbiAgVXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2UsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL3VwZGF0ZS10ZW5hbnQtc3RhdHVzLm1vZGVsJztcclxuaW1wb3J0IHsgRmVhdHVyZVBlcm1pc3Npb25JZCB9IGZyb20gJy4uLy4uL21vZGVscy9mZWF0dXJlLXBlcm1pc3Npb24taWQubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEFwcFR5cGVDb25maWcsXHJcbiAgR2V0QXBwVHlwZXNSZXNwb25zZSxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwLXR5cGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgVGVuYW50QmFzaWNEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4vdGVuYW50LWJhc2ljLWRldGFpbHMvdGVuYW50LWJhc2ljLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZCxcclxuICBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUmVzcG9uc2UsXHJcbiAgR2V0Um9sZXNSZXNwb25zZSxcclxuICBSb2xlLFxyXG4gIFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5nLFxyXG4gIFJvbGVzQW5kUGVybWlzc2lvbnMsXHJcbiAgRGVsZXRlUm9sZVJlcXVlc3RQYXlsb2FkLFxyXG4gIERlbGV0ZVJvbGVSZXNwb25zZSxcclxuICBQYWdpbmF0aW9uSW5mbyxcclxuICBSb2xlRGV0YWlscyxcclxufSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZXMtYW5kLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1tb2RpZnktcm9sZS9jcmVhdGUtbW9kaWZ5LXJvbGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUm9sZU1lbnVBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZS1tZW51LWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFZpZXdUZW5hbnRHcm91cFR5cGVzQ29tcG9uZW50IH0gZnJvbSAnLi4vdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICBHZXRSb2xlVHlwZXNQYXlsb2FkLFxyXG4gIFJvbGVUeXBlQ29uZmlndXJhdGlvbixcclxuICBSb2xlVHlwZU9wdGlvbixcclxuICBSb2xlVHlwZVJlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9yb2xlLXR5cGUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2llZWVzYS12aWV3LXRlbmFudC1kZXRhaWxzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgQWNjb3JkaW9uQ29tcG9uZW50LFxyXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcclxuICAgIFRlbmFudEJhc2ljRGV0YWlsc0NvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBEYXRhVGFibGVDb21wb25lbnQsXHJcbiAgICBWaWV3VGVuYW50R3JvdXBUeXBlc0NvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBhcGlCYXNlVVJMITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJQZXJtaXNzaW9ucyE6IFVzZXJQZXJtaXNzaW9uW107XHJcbiAgQElucHV0KCkgcm91dGVQYXRocyE6IFRlbmFudHNSb3V0ZXNDb25maWc7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHQ7XHJcbiAgdGVuYW50TGFiZWxzID0gdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5sYWJlbDtcclxuICBzbGlkZVRvZ2dsZU9wdGlvbiA9IHtcclxuICAgIGlkOiAxLFxyXG4gICAgbGFiZWw6IHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8ubGFiZWw/LmFjdGl2ZSxcclxuICAgIGNoZWNrZWQ6IHRydWUsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgfTtcclxuICBlZGl0QnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5idXR0b25zO1xyXG4gIHRlbmFudERldGFpbHMhOiBUZW5hbnRCYXNpY0luZm87XHJcbiAgYWNjb3JkaW9uSW5mb0xpc3Q6IEFjY29yZGlvbkluZm9bXSA9IEpTT04ucGFyc2UoXHJcbiAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LnRlbmFudEFjY29yZGlvbkluZm8pXHJcbiAgKTtcclxuICBhcHBJZCA9ICcnO1xyXG4gIGljb25TaXplID0gdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25JY29uU2l6ZTtcclxuICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVDYXB0aW9uID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8udGFibGVDYXB0aW9uO1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWUgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy50YWJsZUNvbHVtbnNIZWFkZXJUZXh0O1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZVN1cHBvcnRNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8uc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2U7XHJcbiAgcGVybWlzc2lvbnNDb2x1bW5DbGFzc051bWJlciA9IDE7XHJcbiAgbWVudUl0ZW1zOiBNZW51W10gPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25NZW51SXRlbXM7XHJcbiAgY29sdW1uU2NoZW1hOiBUYWJsZUNvbHVtblNjaGVtYVtdID0gW107XHJcbiAgdGFibGVEYXRhOiBSb2xlc0FuZFBlcm1pc3Npb25zW10gPSBbXTtcclxuICBpc1JvbGVzQW5kUGVybWlzc2lvbnNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8ucGFnZVNpemVPcHRpb25zWzBdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIHRhYmxlUGFnaW5hdGlvbiE6IFBhZ2luYXRpb25JbmZvO1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNDbGFzc05hbWUgPVxyXG4gICAgJy5pZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fcm9sZXMtYW5kLXBlcm1pc3Npb25zJztcclxuICBoZWFkZXJFbGVtZW50Q2xhc3NOYW1lID0gJy5pZWVlc2EtaGVhZGVyJztcclxuICB0YWJsZUFjdGlvbnM6IFRhYmxlQWN0aW9ucyA9IHtcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIHZpZXdUZW5hbnRzUm91dGVVcmwhOiBzdHJpbmc7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBkaWFsb2dSZWY6IGFueTtcclxuICBhY2NvcmRpb25EZXRhaWxzID0gQWNjb3JkaW9uRGV0YWlscztcclxuICBhcHBUeXBlT3B0aW9ucyE6IFJhZGlvT3B0aW9uW107XHJcbiAgaXNCYXNpY0RldGFpbHNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdFRlbmFudFNjcmVlblRleHRzOiBhbnkgPSB0aGlzLmNvbnN0YW50cz8uZWRpdFRlbmFudDtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRlbGV0ZVJvbGVTY3JlZW5UZXh0czogYW55ID0gdGhpcy5jb25zdGFudHM/LmRlbGV0ZVJvbGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICB1c2VyVGVuYW50c1Blcm1pc3Npb25zITogVGVuYW50c1Blcm1pc3Npb25zW107XHJcbiAgcGVybWlzc2lvblR5cGUgPSBQZXJtaXNzaW9uVHlwZTtcclxuICBmdW5jdGlvblR5cGUhOiBUZW5hbnRGdW5jdGlvblR5cGU7XHJcbiAgY3JlYXRlUm9sZVNjcmVlblRleHRzID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZVJvbGU7XHJcbiAgcm9sZU1lbnVFbGVtZW50ITogSFRNTEVsZW1lbnQ7XHJcbiAgc2VsZWN0ZWRSb2xlSW5mbzogUm9sZURldGFpbHMgPSB7XHJcbiAgICByb2xlSWQ6ICcnLFxyXG4gICAgcm9sZU5hbWU6ICcnLFxyXG4gIH07XHJcbiAgaXNHcm91cFR5cGVzRXhwYW5kZWQgPSBmYWxzZTtcclxuICByb2xlVHlwZU9wdGlvbnM6IFJvbGVUeXBlT3B0aW9uW10gPSBbXTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgdGVuYW50QXBwU2VydmljZTogVGVuYW50QXBwbGljYXRpb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U6IEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgc2hhcmVkU2VydmljZTogU2hhcmVkU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQ/Lm1hdGNoZXM7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgdmlldyB0ZW5hbnQgZGV0YWlscyBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudERldGFpbHMgPVxyXG4gICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LmdldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oKSBhcyBUZW5hbnRCYXNpY0luZm87XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmNoZWNrZWQgPSB0aGlzLnRlbmFudERldGFpbHM/LnN0YXR1cyBhcyBib29sZWFuO1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IHRoaXMudGVuYW50RGV0YWlscz8uc3RhdHVzXHJcbiAgICAgID8gdGhpcy50ZW5hbnRMYWJlbHM/LmFjdGl2ZVxyXG4gICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgIHRoaXMucm91dGVQYXRocyA9IHRoaXMucm91dGVQYXRocyA/PyB0aGlzLmNvbnN0YW50cz8ucm91dGVDb25maWdQYXRoO1xyXG4gICAgdGhpcy52aWV3VGVuYW50c1JvdXRlVXJsID0gYC8ke3RoaXMucm91dGVQYXRocz8udmlld1RlbmFudHN9YDtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0QXBwQ29uZmlnKHRoaXMuYXBpQmFzZVVSTCwgdGhpcy51c2VyUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy51c2VyVGVuYW50c1Blcm1pc3Npb25zID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5maWx0ZXJQZXJtaXNzaW9uKFxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpXHJcbiAgICAgID8uYXBwSWQgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy50YWJsZVBhZ2luYXRpb24gPSB7XHJcbiAgICAgIG9mZnNldDogMCxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnLnBhZ2VTaXplT3B0aW9uc1swXSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdldFRlbmFudERldGFpbHModGhpcy5hcHBJZCk7XHJcbiAgICB0aGlzLmdldEFwcGxpY2F0aW9uVHlwZXMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGVuYW50IGRldGFpbHMgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VGVuYW50RGV0YWlscyhhcHBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFRlbmFudERldGFpbHMoYXBwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBUZW5hbnREZXRhaWxzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlc3BvbnNlPy5ib2R5IGFzIFRlbmFudEJhc2ljSW5mbztcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnNldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oXHJcbiAgICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24uY2hlY2tlZCA9IHRoaXMudGVuYW50RGV0YWlsc1xyXG4gICAgICAgICAgICAgIC5zdGF0dXMgYXMgYm9vbGVhbjtcclxuICAgICAgICAgICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IHRoaXMudGVuYW50RGV0YWlscy5zdGF0dXNcclxuICAgICAgICAgICAgICA/IHRoaXMudGVuYW50TGFiZWxzPy5hY3RpdmVcclxuICAgICAgICAgICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgICAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLnRlbmFudERldGFpbHMuZmVhdHVyZXMgYXMgRmVhdHVyZXNbXTtcclxuICAgICAgICAgICAgZmVhdHVyZXMubWFwKChmZWF0dXJlOiBGZWF0dXJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmU/LmZlYXR1cmVJZCA9PT1cclxuICAgICAgICAgICAgICAgICAgRmVhdHVyZVBlcm1pc3Npb25JZC5NRUVUSU5HU19BTkRfRVZFTlRTIHx8XHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlPy5mZWF0dXJlSWQgPT09IEZlYXR1cmVQZXJtaXNzaW9uSWQuQkFMTE9UU1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uSW5mb0xpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFjY29yZGlvbkluZm9MaXN0Lmxlbmd0aCArIDEsXHJcbiAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTogZmVhdHVyZT8uZmVhdHVyZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzLmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgdGhlIGNvcnJlc3BvbmRpbmcgdGVuYW50IGJhc2ljIG9yIGZlYXR1cmUgZGV0YWlscyBiYXNlZCBvbiBzZWxlY3RlZCBhY2NvcmRpb24uXHJcbiAgICogQHBhcmFtIHtBY2NvcmRpb25JbmZvfSBhY2NvcmRpb25JbmZvXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBleHBhbmRlZFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm86IEFjY29yZGlvbkluZm8sIGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBhY2NvcmRpb25JZCA9IGFjY29yZGlvbkluZm8uaWQgYXMgbnVtYmVyO1xyXG4gICAgc3dpdGNoIChhY2NvcmRpb25JZCkge1xyXG4gICAgICBjYXNlIDE6IHtcclxuICAgICAgICB0aGlzLmlzQmFzaWNEZXRhaWxzRXhwYW5kZWQgPSBleHBhbmRlZDtcclxuICAgICAgICBpZiAoZXhwYW5kZWQpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QXBwbGljYXRpb25UeXBlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIDI6IHtcclxuICAgICAgICB0aGlzLmlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkID0gZXhwYW5kZWQ7XHJcbiAgICAgICAgaWYgKGV4cGFuZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9uc1swXTtcclxuICAgICAgICAgIHRoaXMudGFibGVQYWdpbmF0aW9uLm9mZnNldCA9IDA7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUGFnaW5hdGlvbi5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlO1xyXG4gICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZEluaXRpYWxpemVUYWJsZVNjaGVtYSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIDM6IHtcclxuICAgICAgICB0aGlzLmlzR3JvdXBUeXBlc0V4cGFuZGVkID0gZXhwYW5kZWQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgY29uZmlndXJlZCByb2xlcyBvZiB0aGUgc2VsZWN0ZWQgdGVuYW50IGFuZCBjcmVhdGVzIHRoZSBjb2x1bW4gc2NoZW1hLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVzQW5kSW5pdGlhbGl6ZVRhYmxlU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRSb2xlcyh0aGlzLmFwcElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0Um9sZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyh7XHJcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiB0aGlzLnRhYmxlUGFnaW5hdGlvbi5vZmZzZXQsXHJcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy50YWJsZVBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGVzTGlzdCA9IHRoaXMudGVuYW50QXBwU2VydmljZS5zb3J0Um9sZXNCeVJvbGVUeXBlKFxyXG4gICAgICAgICAgICAgIHJlc3BvbnNlPy5ib2R5IGFzIFJvbGVbXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2Uuc2V0Um9sZXNJbmZvKHJvbGVzTGlzdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMudGFibGVDZWxsVmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgY29sdW1uRGVmOiAncGVybWlzc2lvbnMnLFxyXG4gICAgICAgICAgICAgICAgaGVhZGluZzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMudGFibGVDb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAucGVybWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgICAgICAgIGNlbGxEYXRhOiAocm9sZXNBbmRQZXJtaXNzaW9uczogUm9sZXNBbmRQZXJtaXNzaW9ucykgPT5cclxuICAgICAgICAgICAgICAgICAgcm9sZXNBbmRQZXJtaXNzaW9ucy5wZXJtaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgaXNTdGlja3lDb2x1bW46IHRydWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgcm9sZXNMaXN0Lm1hcCgocm9sZTogUm9sZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5EZWY6IHJvbGUucm9sZUlkLFxyXG4gICAgICAgICAgICAgICAgaGVhZGluZzogcm9sZS5yb2xlTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgICAgICAgaGFzQ29sdW1uQWN0aW9uczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNlbGxEYXRhOiAocm9sZXNBbmRQZXJtaXNzaW9uczogUm9sZXNBbmRQZXJtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcm9sZXNBbmRQZXJtaXNzaW9ucy5yb2xlSWRzTGlzdC5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChyb2xlSWQ6IHN0cmluZykgPT4gcm9sZS5yb2xlSWQgPT09IHJvbGVJZFxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsVmFsdWUueWVzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjZWxsVmFsdWUubm87XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgcm9sZXMgYW5kIHBlcm1pc3Npb25zIG1hcHBpbmdzIGZvciB0aGUgc2VsZWN0ZWQgdGVuYW50IGFuZCBhbmQgaW5pdGlhbGl6ZSB0YWJsZSB2aWV3LlxyXG4gICAqIEBwYXJhbSB7R2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgIHBheWxvYWQ6IEdldFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5ncyh0aGlzLmFwcElkLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPSByZXNwb25zZT8uYm9keVxyXG4gICAgICAgICAgICAgID8udG90YWxSZWNvcmRzIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZXNBbmRQZXJtaXNzaW9uc0xpc3QgPSByZXNwb25zZT8uYm9keVxyXG4gICAgICAgICAgICAgID8ucm9sZVBlcm1pc3Npb25EZXRhaWxzIGFzIFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5nW107XHJcbiAgICAgICAgICAgIHJvbGVzQW5kUGVybWlzc2lvbnNMaXN0Lm1hcCgocGVybWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCByb2xlSWRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgICByb2xlSWRzTGlzdCA9IHBlcm1pc3Npb24ucm9sZUxpc3QubWFwKChyb2xlKSA9PiByb2xlLnJvbGVJZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uOiBwZXJtaXNzaW9uLnBlcm1pc3Npb25OYW1lLFxyXG4gICAgICAgICAgICAgICAgcm9sZUlkc0xpc3Q6IHJvbGVJZHNMaXN0LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2ggdGhlIHJvbGVzIGFuZCBwZXJtaXNzaW9ucyByZWNvcmRzIGJhc2VkIG9uIG9mZnNldCBhbmQgcGFnZSBzaXplIHdoaWxlIHRoZSBwYWdpbmF0aW9uIGNoYW5nZXMuXHJcbiAgICogQHBhcmFtIHtQYWdlRXZlbnR9IHBhZ2VFdmVudFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uVGFibGVQYWdpbmF0aW9uQ2hhbmdlKHBhZ2VFdmVudDogUGFnZUV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYmxlUGFnaW5hdGlvbiA9IHtcclxuICAgICAgb2Zmc2V0OiBwYWdlRXZlbnQucGFnZUluZGV4LFxyXG4gICAgICBwYWdlU2l6ZTogcGFnZUV2ZW50LnBhZ2VTaXplLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ2V0Um9sZXNBbmRQZXJtaXNzaW9uc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgb2Zmc2V0OiBwYWdlRXZlbnQucGFnZUluZGV4LFxyXG4gICAgICAgIHBhZ2VTaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlbGVjdGVkIHJvbGUncyBpbmZvcm1hdGlvbiBhbmQgcGVyZm9ybXMgZWRpdCBvciBkZWxldGUgYWN0aW9uIGJhc2lzIG9uIHRoZSBzZWxlY3RlZCBtZW51IGl0ZW0uXHJcbiAgICogQHBhcmFtIHtUYWJsZUNvbHVtbk1lbnVJbmZvfSByb2xlTWVudUluZm9cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvblJvbGVNZW51Q2xpY2socm9sZU1lbnVJbmZvOiBUYWJsZUNvbHVtbk1lbnVJbmZvKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUm9sZUluZm8ucm9sZUlkID0gcm9sZU1lbnVJbmZvPy50YWJsZUNvbHVtbkluZm8/LmNvbHVtbkRlZjtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb2xlSW5mby5yb2xlTmFtZSA9IHJvbGVNZW51SW5mbz8udGFibGVDb2x1bW5JbmZvPy5oZWFkaW5nO1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5zZXRTZWxlY3RlZFJvbGVJbmZvcm1hdGlvbih0aGlzLnNlbGVjdGVkUm9sZUluZm8pO1xyXG4gICAgaWYgKHJvbGVNZW51SW5mbz8ubWVudUFjdGlvbkluZm8/LmlkID09PSBSb2xlTWVudUFjdGlvbi5ERUxFVEVfUk9MRSkge1xyXG4gICAgICB0aGlzLm9wZW5EZWxldGVSb2xlTW9kYWwoKTtcclxuICAgIH0gZWxzZSBpZiAocm9sZU1lbnVJbmZvPy5tZW51QWN0aW9uSW5mbz8uaWQgPT09IFJvbGVNZW51QWN0aW9uLkVESVRfUk9MRSkge1xyXG4gICAgICB0aGlzLm9wZW5FZGl0Um9sZUZvcm0oKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGFjY29yZGlvbiBiYXNlZCBvbiB0aGUgZWxlbWVudCdzIElEIGluIERPTSB0cmVlLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlBY2NvcmRpb25GbihpbmRleDogbnVtYmVyLCBpdGVtOiBBY2NvcmRpb25JbmZvKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpdGVtPy5pZCBhcyBudW1iZXI7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJvbGUgdHlwZXMgYW5kIHVwZGF0ZXMgdGhlIGZvcm0gY29udHJvbC5cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRSb2xlVHlwZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBHZXRSb2xlVHlwZXNQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwSWQ6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwSWQgYXMgc3RyaW5nLFxyXG4gICAgICAgIGNvbmZpZ0ZpZWxkTmFtZTogJ3JvbGVfdHlwZScsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRSb2xlVHlwZXMocGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IFJvbGVUeXBlUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucm9sZVR5cGVPcHRpb25zID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldFJvbGVUeXBlT3B0aW9ucyhcclxuICAgICAgICAgICAgICByZXNwb25zZT8uYm9keSBhcyBSb2xlVHlwZUNvbmZpZ3VyYXRpb25bXVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnNldFJvbGVUeXBlT3B0aW9uKHRoaXMucm9sZVR5cGVPcHRpb25zKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25UeXBlID09PSBUZW5hbnRGdW5jdGlvblR5cGUuQ1JFQVRFX1JPTEUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9wZW5DcmVhdGVSb2xlRm9ybSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlUm9sZVNjcmVlblRleHRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBjcmVhdGUgcm9sZSBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQ3JlYXRlUm9sZUZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnNldFRlbmFudEZ1bmN0aW9uVHlwZShcclxuICAgICAgVGVuYW50RnVuY3Rpb25UeXBlPy5DUkVBVEVfUk9MRVxyXG4gICAgKTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gVGVuYW50RnVuY3Rpb25UeXBlLkNSRUFURV9ST0xFO1xyXG4gICAgaWYgKHRoaXMucm9sZVR5cGVPcHRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbnN0YW50cz8uY3JlYXRlUm9sZT8uaGVhZGluZyxcclxuICAgICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQ3JlYXRlTW9kaWZ5Um9sZUNvbXBvbmVudCxcclxuICAgICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWNyZWF0ZS1tb2RpZnktcm9sZScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRSb2xlVHlwZXMoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgcm9sZSBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuRWRpdFJvbGVGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5zZXRUZW5hbnRGdW5jdGlvblR5cGUoVGVuYW50RnVuY3Rpb25UeXBlPy5FRElUX1JPTEUpO1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVF9ST0xFO1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogdGhpcy5zZWxlY3RlZFJvbGVJbmZvPy5yb2xlTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVNb2RpZnlSb2xlQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtY3JlYXRlLW1vZGlmeS1yb2xlJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IHRlbmFudCBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuRWRpdFRlbmFudEZvcm0oKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2U/LnNldFRlbmFudEZ1bmN0aW9uVHlwZShUZW5hbnRGdW5jdGlvblR5cGU/LkVESVQpO1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBUZW5hbnRGdW5jdGlvblR5cGUuRURJVDtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LXRlbmFudCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgbW9kYWwgY29tcG9uZW50IHdpdGggcmVjZWl2ZWQgcGFyYW1zIGFuZCBoYW5kbGVzIGZvcm0gc3VibWlzc2lvbiBzdWNjZXNzIGFuZCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHsqfSBkaWFsb2dPcHRpb25zXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGFzc05hbWVdXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnRzRGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5Nb2RhbChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBkaWFsb2dPcHRpb25zOiBhbnksXHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGlhbG9nT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICcnLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1tb2RhbC1kaWFsb2cnLCBjbGFzc05hbWVdLFxyXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uc3VibWl0Rm9ybVJlc3BvbnNlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnNcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuZnVuY3Rpb25UeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFRlbmFudEZ1bmN0aW9uVHlwZT8uRURJVDoge1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgYCR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0gJHt0aGlzLmVkaXRUZW5hbnRTY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvbn1gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHtcclxuICAgICAgICAgICAgICAuLi4odGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oKSBhcyBUZW5hbnRCYXNpY0luZm8pLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgVGVuYW50RnVuY3Rpb25UeXBlPy5DUkVBVEVfUk9MRToge1xyXG4gICAgICAgICAgICBjb25zdCBwcm9tcHRNZXNzYWdlID0gdGhpcy5jcmVhdGVSb2xlU2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGVJbmZvID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5nZXROZXdseUNyZWF0ZWRSb2xlSW5mbygpO1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgYCR7cHJvbXB0TWVzc2FnZT8uc3VibWlzc2lvbjF9ICR7cm9sZUluZm8/LnJvbGVOYW1lfSAke3Byb21wdE1lc3NhZ2U/LnN1Ym1pc3Npb24yfSAke3RoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGV9LiAke3Byb21wdE1lc3NhZ2U/LnN1Ym1pc3Npb24zfWBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZEluaXRpYWxpemVUYWJsZVNjaGVtYSgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgVGVuYW50RnVuY3Rpb25UeXBlPy5FRElUX1JPTEU6IHtcclxuICAgICAgICAgICAgY29uc3QgcHJvbXB0TWVzc2FnZSA9IHRoaXMuY3JlYXRlUm9sZVNjcmVlblRleHRzPy5tZXNzYWdlPy5zdWNjZXNzO1xyXG4gICAgICAgICAgICBjb25zdCByb2xlSW5mbyA9IHRoaXMudGVuYW50QXBwU2VydmljZT8uZ2V0TmV3bHlDcmVhdGVkUm9sZUluZm8oKTtcclxuICAgICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGAke3JvbGVJbmZvPy5yb2xlTmFtZX0gJHtwcm9tcHRNZXNzYWdlPy5tb2RpZnl9ICR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0uYFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmdldFJvbGVzQW5kSW5pdGlhbGl6ZVRhYmxlU2NoZW1hKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LmZvcm1DYW5jZWxcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENhbGxzIG9wZW5UZW5hbnRTdGF0dXNDb25maXJtYXRpb25Nb2RhbCB0byBjaGFuZ2UgdGhlIHN0YXR1cyBvZiB0ZW5hbnQgb24gc2xpZGUgdG9nZ2xlIGNoYW5nZS5cclxuICAgKiBAcGFyYW0ge1NsaWRlVG9nZ2xlT3B0aW9ufSBzbGlkZVRvZ2dsZU9wdGlvblxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uU2xpZGVUb2dnbGVDaGFuZ2Uoc2xpZGVUb2dnbGVPcHRpb246IFNsaWRlVG9nZ2xlT3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5UZW5hbnRTdGF0dXNDb25maXJtYXRpb25Nb2RhbChzbGlkZVRvZ2dsZU9wdGlvbj8uY2hlY2tlZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gaW5hY3RpdmF0ZS9yZWFjdGl2YXRlIHRoZSB0ZW5hbnQuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0FjdGl2YXRlXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlblRlbmFudFN0YXR1c0NvbmZpcm1hdGlvbk1vZGFsKGlzQWN0aXZhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBzdGF0dXNUZXh0ID0gaXNBY3RpdmF0ZVxyXG4gICAgICA/IGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2VBY3RpdmF0ZVxyXG4gICAgICA6IGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2VJbmFjdGl2YXRlO1xyXG4gICAgY29uc3QgdXBkYXRlVGVuYW50U3RhdHVzTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogYCR7Y29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZX0gJHtzdGF0dXNUZXh0fSAke3RoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGV9P2AsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiB0aGlzLmFsaWdubWVudFR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHVwZGF0ZVRlbmFudFN0YXR1c01vZGFsT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMudXBkYXRlVGVuYW50U3RhdHVzKGlzQWN0aXZhdGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFNsaWRlVG9nZ2xlU3RhdHVzKGlzQWN0aXZhdGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIHRlbmFudCBzdGF0dXMgdG8gdGhlIHNlcnZlciB1c2luZyBodHRwIHJlcXVlc3QgYW5kIGRpc3BsYXkgc3VjY2Vzcy9lcnJvciBtZXNzYWdlIGJhc2VkIG9uIHJlcXVlc3QgcmVzcG9uc2UgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSkuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0FjdGl2YXRlXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdXBkYXRlVGVuYW50U3RhdHVzKGlzQWN0aXZhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IHVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkOiBVcGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGFwcElkOiB0aGlzLnRlbmFudERldGFpbHM/LmFwcElkLFxyXG4gICAgICAgIHN0YXR1czogaXNBY3RpdmF0ZSxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLnVwZGF0ZVRlbmFudFN0YXR1cyh1cGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBVcGRhdGVUZW5hbnRTdGF0dXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IGlzQWN0aXZhdGVcclxuICAgICAgICAgICAgICA/IHRoaXMudGVuYW50TGFiZWxzPy5hY3RpdmVcclxuICAgICAgICAgICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzLnN0YXR1cyA9IGlzQWN0aXZhdGU7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudGVuYW50RGV0YWlscyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXRTbGlkZVRvZ2dsZVN0YXR1cyhpc0FjdGl2YXRlKTtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoXHJcbiAgICAgICAgICAgIGVycm9yLFxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmVycm9yc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBzbGlkZSB0b2dnbGUgY2hlY2tlZCBzdGF0dXMgYW5kIGxhYmVsLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBY3RpdmF0ZVxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNldFNsaWRlVG9nZ2xlU3RhdHVzKGlzQWN0aXZhdGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24uY2hlY2tlZCA9ICFpc0FjdGl2YXRlO1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9ICFpc0FjdGl2YXRlXHJcbiAgICAgID8gdGhpcy50ZW5hbnRMYWJlbHM/LmFjdGl2ZVxyXG4gICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGFwcGxpY2F0aW9uL3RlbmFudCB0eXBlcy5cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRBcHBsaWNhdGlvblR5cGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRBcHBsaWNhdGlvblR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEdldEFwcFR5cGVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwVHlwZU9wdGlvbnMgPVxyXG4gICAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRBcHBsaWNhdGlvblR5cGVPcHRpb25zKFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHkgYXMgQXBwVHlwZUNvbmZpZ1tdXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnNldEFwcGxpY2F0aW9uVHlwZShcclxuICAgICAgICAgICAgICB0aGlzLmFwcFR5cGVPcHRpb25zIGFzIFJhZGlvT3B0aW9uW11cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFZhbGlkYXRlcyBwZXJtaXNzaW9uIGJhc2VkIGFjY2VzcyBmb3IgcHJvdmlkZWQgZmVhdHVyZS5cclxuICAgKiBAcGFyYW0ge1Blcm1pc3Npb25UeXBlfSBwZXJtaXNzaW9uVHlwZVxyXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICBwZXJtaXNzaW9uVHlwZSxcclxuICAgICAgdGhpcy51c2VyVGVuYW50c1Blcm1pc3Npb25zXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQb3N0cyB0aGUgZGV0YWlscyBvZiB0aGUgcm9sZSB0byBiZSBkZWxldGVkIHRvIHRoZSBzZXJ2ZXIgdXNpbmcgaHR0cCByZXF1ZXN0IGFuZCBkaXNwbGF5IHN1Y2Nlc3MvZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiByZXF1ZXN0IHJlc3BvbnNlIChzdWNjZXNzIG9yIGZhaWx1cmUpLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRlbGV0ZVJvbGUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWxldGVSb2xlUmVxdWVzdFBheWxvYWQ6IERlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGFwcElkOiB0aGlzLnRlbmFudERldGFpbHM/LmFwcElkLFxyXG4gICAgICAgIHJvbGVJZDogdGhpcy5zZWxlY3RlZFJvbGVJbmZvPy5yb2xlSWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVSb2xlKGRlbGV0ZVJvbGVSZXF1ZXN0UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBEZWxldGVSb2xlUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgYCR7dGhpcy5zZWxlY3RlZFJvbGVJbmZvPy5yb2xlTmFtZX0gJHt0aGlzLmRlbGV0ZVJvbGVTY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvbn0gJHt0aGlzLnRlbmFudERldGFpbHM/LmFwcFRpdGxlfS5gXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um9sZXNBbmRJbml0aWFsaXplVGFibGVTY2hlbWEoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHJvbGUgbWVudSBIVE1MRWxlbWVudC5cclxuICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBtZW51QnV0dG9uXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRSb2xlTWVudUVsZW1lbnQobWVudUJ1dHRvbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucm9sZU1lbnVFbGVtZW50ID0gbWVudUJ1dHRvbjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBnZXQgdXNlciBjb25maXJtYXRpb24gdG8gZGVsZXRlIHRoZSByb2xlLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5EZWxldGVSb2xlTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlUm9sZU1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IGAke2NvbmZpcm1hdGlvbkluZm8/LmRlbGV0ZVJvbGVDb25maXJtYXRpb25NZXNzYWdlfSAke3RoaXMuc2VsZWN0ZWRSb2xlSW5mbz8ucm9sZU5hbWV9PyAke2NvbmZpcm1hdGlvbkluZm8/LmRlbGV0ZVJvbGVQcm9tcHRNZXNzYWdlfSAke3RoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGV9LmAsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiB0aGlzLmFsaWdubWVudFR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRlbGV0ZVJvbGVNb2RhbE9wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnMjUlJyxcclxuICAgICAgcGFuZWxDbGFzczogW1xyXG4gICAgICAgICdpZWVlc2EtbW9kYWwtY29uZmlybS1kaWFsb2cnLFxyXG4gICAgICAgICdpZWVlc2EtZGVsZXRlLXJvbGUtY29uZmlybS1kaWFsb2cnLFxyXG4gICAgICBdLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVSb2xlKCk7XHJcbiAgICAgICAgfSBlbHNlIHRoaXMucm9sZU1lbnVFbGVtZW50Py5mb2N1cygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb2xlVHlwZU9wdGlvbnMgPSBbXTtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0Um9sZVR5cGVPcHRpb24odGhpcy5yb2xlVHlwZU9wdGlvbnMpO1xyXG4gICAgdGhpcy5kZXN0cm95JD8ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQ/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXZcclxuICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvIHB4LTQgcGItNFwiXHJcbiAgW25nQ2xhc3NdPVwiXHJcbiAgICBpc01vYmlsZVZpZXdcclxuICAgICAgPyAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWJnLXdoaXRlJ1xyXG4gICAgICA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tYmctYmx1ZSdcclxuICBcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLWxnLTQgZ2FwLW1kLTMgZ2FwLXNtLTIgZ2FwLTNcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2ZsZXgtY29sdW1uIGdhcC0yIHBiLTMnIDogJ2FsaWduLWl0ZW0tY2VudGVyJ1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBnYXAtbGctNCBnYXAtbWQtMyBnYXAtc20tMyBnYXAtMyBwcy0wIGFsaWduLWl0ZW1zLW1kLWNlbnRlciBhbGlnbi1pdGVtcy14bC1jZW50ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnZmxleC1jb2x1bW4nIDogJydcIlxyXG4gICAgPlxyXG4gICAgICA8cFxyXG4gICAgICAgIGNsYXNzPVwibWItMCBpZWVlc2EtaGVhZGxpbmUtbGctMzIgcHktM1wiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJycgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLXRpdGxlJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyB0ZW5hbnREZXRhaWxzPy5hcHBUaXRsZSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLWxnLTIgZ2FwLW1kLTIgZ2FwLXNtLTIgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3M9XCJtYi0wIGllZWVzYS10aXRsZS1zbS0xNCBtdC0xXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1hcHAtaWQnXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyB0ZW5hbnRMYWJlbHM/LmFwcElkIH19OlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICB7eyB0ZW5hbnREZXRhaWxzPy5hcHBJZCB9fVxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0ZW5hbnREZXRhaWxzPy5hcHBJZCAhPT0gdGVuYW50TGFiZWxzPy5zYUFwcElkXCI+XHJcbiAgICAgICAgICA8bWF0LWRpdmlkZXIgW3ZlcnRpY2FsXT1cInRydWVcIj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgY2xhc3M9XCJtYi0wIG10LTEgaWVlZXNhLXRpdGxlLXNtLTE0IGllZWVzYS12aWV3LXRlbmFudC1pbmZvLS1hcHAtc3RhdHVzXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAnJ1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IHRlbmFudExhYmVscz8uc3RhdHVzIH19OlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPGllZWVzYS1zbGlkZS10b2dnbGVcclxuICAgICAgICAgICAgW3NsaWRlVG9nZ2xlXT1cInNsaWRlVG9nZ2xlT3B0aW9uXCJcclxuICAgICAgICAgICAgKHNsaWRlVG9nZ2xlQ2hhbmdlKT1cIm9uU2xpZGVUb2dnbGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9pZWVlc2Etc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGFcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtYnRuLWxhYmVsLWxnLWJvbGQtMTYgdGV4dC1kZWNvcmF0aW9uLW5vbmUgbXQtbGctMyBtdC14bC02IHAtc20tMCBwLW1kLTBcIlxyXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXHJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cInZpZXdUZW5hbnRzUm91dGVVcmxcIlxyXG4gICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICAgID8gJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1saW5rLW1vYmlsZSdcclxuICAgICAgICAgIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1saW5rJ1xyXG4gICAgICBcIlxyXG4gICAgICA+e3sgdGVuYW50TGFiZWxzPy52aWV3QWxsQXBwcyB9fTwvYVxyXG4gICAgPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLXZpZXctdGVuYW50LWluZm9fX2FjY29yZGlvbiBpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWNjb3JkaW9uLS1ibHVlLWJnXCJcclxuICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWNjb3JkaW9uLS1pbmZvJyA6ICcnXCJcclxuICA+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgIGxldCBhY2NvcmRpb25JbmZvIG9mIGFjY29yZGlvbkluZm9MaXN0O1xyXG4gICAgICAgIHRyYWNrQnk6IHRyYWNrQnlBY2NvcmRpb25GblxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJhY2NvcmRpb25JbmZvLmlkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiYWNjb3JkaW9uRGV0YWlscy5CQVNJQ19ERVRBSUxTXCI+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgICBbYWNjb3JkaW9uSW5mb109XCJhY2NvcmRpb25JbmZvXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWNjb3JkaW9uLWluZm9cIlxyXG4gICAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAgIGlzQmFzaWNEZXRhaWxzRXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgIHZhbGlkYXRlQWNjZXNzKHBlcm1pc3Npb25UeXBlLk1BTkFHRV9URU5BTlQpXHJcbiAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICBhY3Rpb25zXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtYnV0dG9uXCJcclxuICAgICAgICAgICAgICBbaWNvbkJ1dHRvbl09XCJlZGl0QnV0dG9uXCJcclxuICAgICAgICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5FZGl0VGVuYW50Rm9ybSgpXCJcclxuICAgICAgICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGNvbXBvbmVudCAqbmdJZj1cImlzQmFzaWNEZXRhaWxzRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICA8aWVlZXNhLXRlbmFudC1iYXNpYy1kZXRhaWxzXHJcbiAgICAgICAgICAgICAgICBbdGVuYW50RGV0YWlsc109XCJ0ZW5hbnREZXRhaWxzXCJcclxuICAgICAgICAgICAgICA+PC9pZWVlc2EtdGVuYW50LWJhc2ljLWRldGFpbHM+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pZWVlc2EtYWNjb3JkaW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImFjY29yZGlvbkRldGFpbHMuUk9MRVNfQU5EX1BFUk1JU1NJT05TXCI+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgICBbYWNjb3JkaW9uSW5mb109XCJhY2NvcmRpb25JbmZvXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fcm9sZXMtYW5kLXBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgKGFjY29yZGlvbk9wZW5lZCk9XCJzaG93VGVuYW50RGV0YWlscyhhY2NvcmRpb25JbmZvLCAkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGFjdGlvbnNcclxuICAgICAgICAgICAgICAqbmdJZj1cImlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtM1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICBpc01vYmlsZVZpZXcgPyAnbWItMyBweC00JyA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWN0aW9ucydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtdGVydGlhcnktYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJ3B4LTIgcHktMidcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DcmVhdGVSb2xlRm9ybSgpXCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwidmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuTUFOQUdFX1RFTkFOVClcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IGNvbnN0YW50cy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucy5hY3Rpb25CdXR0b25MYWJlbHMuYWRkUm9sZVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC10ZXJ0aWFyeS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAncHgtMiBweS0yJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLmFjdGlvbkJ1dHRvbkxhYmVsc1xyXG4gICAgICAgICAgICAgICAgLm1hcFBlcm1pc3Npb25zUm9sZXMgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgY29tcG9uZW50ICpuZ0lmPVwiaXNSb2xlc0FuZFBlcm1pc3Npb25zRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWRpdmlkZXJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXZpZXctdGVuYW50LWluZm9fX3JvbGVzLWFuZC1wZXJtaXNzaW9uc19fZGl2aWRlclwiXHJcbiAgICAgICAgICAgICAgPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbHVtblNjaGVtYS5sZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlRGF0YUluZm9dPVwidGFibGVEYXRhXCJcclxuICAgICAgICAgICAgICAgIFtoZWFkZXJFbGVtZW50Q2xhc3NOYW1lXT1cImhlYWRlckVsZW1lbnRDbGFzc05hbWVcIlxyXG4gICAgICAgICAgICAgICAgW2NvbHVtblNjaGVtYUluZm9dPVwiY29sdW1uU2NoZW1hXCJcclxuICAgICAgICAgICAgICAgIFtjYXB0aW9uXT1cInJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUNhcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlQWN0aW9uc109XCJ0YWJsZUFjdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgW2lzU2Nyb2xsU3VwcG9ydE1lc3NhZ2VOZWVkZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVDb2x1bW5BY3Rpb25NZW51U2l6ZV09XCJpY29uU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVDb2x1bW5BY3Rpb25zXT1cIm1lbnVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBbY3VzdG9tU3RpY2t5SGVhZGVyTmVlZGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgW3RhYmxlQ29sdW1uc0hlYWRlclRleHRdPVwicm9sZXNBbmRQZXJtaXNzaW9uc1RhYmxlSGVhZGVyTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBbc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2VdPVwiXHJcbiAgICAgICAgICAgICAgICAgIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZVN1cHBvcnRNZXNzYWdlXHJcbiAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgW3ZlcnRpY2FsQ29sdW1uSGVhZGVyTnVtYmVyXT1cInBlcm1pc3Npb25zQ29sdW1uQ2xhc3NOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgKHBhZ2luYXRpb25DaGFuZ2UpPVwib25UYWJsZVBhZ2luYXRpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAodGFibGVDb2x1bW5NZW51QWN0aW9uQ2xpY2spPVwib25Sb2xlTWVudUNsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKHRhYmxlQ29sdW1uTWVudVRvZ2dsZUJ1dHRvbik9XCJzZWxlY3RlZFJvbGVNZW51RWxlbWVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+PC9pZWVlc2EtZGF0YS10YWJsZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2llZWVzYS1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiYWNjb3JkaW9uRGV0YWlscy5HUk9VUF9UWVBFU1wiPlxyXG4gICAgICAgICAgPGllZWVzYS1hY2NvcmRpb25cclxuICAgICAgICAgICAgW2FjY29yZGlvbkluZm9dPVwiYWNjb3JkaW9uSW5mb1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXZpZXctdGVuYW50LWluZm9fX2dyb3VwLXR5cGVzXCJcclxuICAgICAgICAgICAgKGFjY29yZGlvbk9wZW5lZCk9XCJzaG93VGVuYW50RGV0YWlscyhhY2NvcmRpb25JbmZvLCAkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGFjdGlvbnNcclxuICAgICAgICAgICAgICAqbmdJZj1cImlzR3JvdXBUeXBlc0V4cGFuZGVkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtM1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgIGlzTW9iaWxlVmlldyA/ICdtYi0zIHB4LTQnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY3Rpb25zJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LXRlcnRpYXJ5LWJ1dHRvbiBwLTJcIlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5NQU5BR0VfVEVOQU5UKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgY29uc3RhbnRzLnZpZXdHcm91cFR5cGVzLmFjdGlvbkJ1dHRvbkxhYmVscy5hZGRHcm91cFR5cGUgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgY29tcG9uZW50ICpuZ0lmPVwiaXNHcm91cFR5cGVzRXhwYW5kZWRcIj5cclxuICAgICAgICAgICAgICA8aWVlZXNhLXZpZXctdGVuYW50LWdyb3VwLXR5cGVzPjwvaWVlZXNhLXZpZXctdGVuYW50LWdyb3VwLXR5cGVzPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvaWVlZXNhLWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgICBbYWNjb3JkaW9uSW5mb109XCJhY2NvcmRpb25JbmZvXCJcclxuICAgICAgICAgICAgKGFjY29yZGlvbk9wZW5lZCk9XCJzaG93VGVuYW50RGV0YWlscyhhY2NvcmRpb25JbmZvLCAkZXZlbnQpXCJcclxuICAgICAgICAgID48L2llZWVzYS1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=