@ieeesa-npm/tenants 0.1.4 → 0.1.6

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.
@@ -1,12 +1,15 @@
1
1
  import { Component, Input, ViewEncapsulation, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { SlideToggleComponent, AlignType, ModalConfirmationComponent, TableColumnType, DataTableComponent, AccordionComponent } from '@ieeesa-npm/presentation';
3
+ import { AlertType, ModalType, } from '@ieeesa-npm/utility';
4
+ import { ModalComponent, SlideToggleComponent, AlignType, ModalConfirmationComponent, TableColumnType, DataTableComponent, AccordionComponent, } from '@ieeesa-npm/presentation';
4
5
  import { MatButtonModule } from '@angular/material/button';
5
6
  import { Subject, takeUntil } from 'rxjs';
6
7
  import * as screenText from '../../assets/constants.json';
7
8
  import { RouterModule } from '@angular/router';
8
9
  import { MatDividerModule } from '@angular/material/divider';
9
10
  import { FeaturePermissionId } from '../../models/feature-permission-id.model';
11
+ import { TenantFunctionType } from '../../models/tenant-function-type.model';
12
+ import { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';
10
13
  import * as i0 from "@angular/core";
11
14
  import * as i1 from "@angular/material/dialog";
12
15
  import * as i2 from "@ieeesa-npm/utility";
@@ -63,6 +66,8 @@ export class ViewTenantDetailsComponent {
63
66
  this.tableActions = {
64
67
  isPaginationNeeded: true,
65
68
  };
69
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
70
+ this.editTenantScreenTexts = this.constants?.editTenant;
66
71
  this.alignmentType = AlignType;
67
72
  this.breakpointObserverService
68
73
  .getBreakpoint()
@@ -96,6 +101,7 @@ export class ViewTenantDetailsComponent {
96
101
  next: (response) => {
97
102
  if (response?.status) {
98
103
  this.tenantDetails = response?.body;
104
+ this.tenantAppService.setSelectedTenantInformation(this.tenantDetails);
99
105
  this.slideToggleOption.checked = this.tenantDetails
100
106
  .status;
101
107
  this.slideToggleOption.label = this.tenantDetails.status
@@ -243,6 +249,51 @@ export class ViewTenantDetailsComponent {
243
249
  trackByAccordionFn(index, item) {
244
250
  return item?.id;
245
251
  }
252
+ /**
253
+ * Sets the dialog options for edit tenant modal and calls openModal method.
254
+ * @return -returns nothing
255
+ * @memberof ViewTenantDetailsComponent
256
+ */
257
+ openEditTenantForm() {
258
+ this.tenantAppService?.setTenantFunctionType(TenantFunctionType?.EDIT);
259
+ const dialogOptions = {
260
+ heading: this.tenantDetails?.appTitle,
261
+ isCloseNeeded: true,
262
+ componentReference: CreateTenantApplicationComponent,
263
+ modalType: ModalType.FORM,
264
+ };
265
+ this.openModal(dialogOptions, 'ieeesa-edit-tenant');
266
+ }
267
+ /**
268
+ * Opens modal component with received params and handles form submission success and errors.
269
+ * @param {*} dialogOptions
270
+ * @param {string} [className]
271
+ * @return -returns nothing
272
+ * @memberof ViewTenantsDetailsComponent
273
+ */
274
+ openModal(
275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
276
+ dialogOptions, className) {
277
+ className = className ?? '';
278
+ this.dialogRef = this.dialog?.open(ModalComponent, {
279
+ data: dialogOptions,
280
+ width: '',
281
+ panelClass: ['ieeesa-modal-dialog', className],
282
+ ariaModal: true,
283
+ });
284
+ this.dialogRef?.componentInstance?.submitFormResponse
285
+ .pipe(takeUntil(this.destroy$))
286
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars
287
+ .subscribe((result) => {
288
+ this.dialogRef?.close();
289
+ this.sharedService.showAlertMessage(AlertType?.SUCCESS, `${this.tenantDetails?.appTitle} ${this.editTenantScreenTexts?.message?.success?.submission}`);
290
+ });
291
+ this.dialogRef?.componentInstance?.formCancel
292
+ .pipe(takeUntil(this.destroy$))
293
+ .subscribe(() => {
294
+ this.dialogRef?.close();
295
+ });
296
+ }
246
297
  /**
247
298
  * Calls openTenantStatusConfirmationModal to change the status of tenant on slide toggle change.
248
299
  * @param {SlideToggleOption} slideToggleOption
@@ -338,7 +389,7 @@ export class ViewTenantDetailsComponent {
338
389
  this.destroy$?.unsubscribe();
339
390
  }
340
391
  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 }); }
341
- 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]=\"isMobileView ? 'ieeesa-view-tenant-info--link-mobile' : 'ieeesa-view-tenant-info--link'\"\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=\"2\">\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 >\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 [tableDataInfo]=\"tableData\"\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 [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($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-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 .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}.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: "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", "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", "searchResultMessage"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
392
+ 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]=\"isMobileView ? 'ieeesa-view-tenant-info--link-mobile' : 'ieeesa-view-tenant-info--link'\"\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=\"2\">\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 >\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 [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 [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($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-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 .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}.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: "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", "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", "searchResultMessage"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
342
393
  }
343
394
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewTenantDetailsComponent, decorators: [{
344
395
  type: Component,
@@ -350,7 +401,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
350
401
  MatDividerModule,
351
402
  MatButtonModule,
352
403
  DataTableComponent,
353
- ], 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]=\"isMobileView ? 'ieeesa-view-tenant-info--link-mobile' : 'ieeesa-view-tenant-info--link'\"\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=\"2\">\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 >\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 [tableDataInfo]=\"tableData\"\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 [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($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-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 .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}.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"] }]
404
+ ], 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]=\"isMobileView ? 'ieeesa-view-tenant-info--link-mobile' : 'ieeesa-view-tenant-info--link'\"\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=\"2\">\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 >\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 [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 [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($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-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 .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}.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"] }]
354
405
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.BreakpointObserverService }, { type: i3.TenantApplicationsService }, { type: i2.GlobalErrorHandlerService }, { type: i4.SharedService }]; }, propDecorators: { apiBaseURL: [{
355
406
  type: Input
356
407
  }], userPermissions: [{
@@ -358,4 +409,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
358
409
  }], routePaths: [{
359
410
  type: Input
360
411
  }] } });
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10ZW5hbnQtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXRlbmFudC1kZXRhaWxzL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZGV0YWlscy92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFLL0MsT0FBTyxFQUlMLG9CQUFvQixFQUVwQixTQUFTLEVBQ1QsMEJBQTBCLEVBRzFCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBTzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7O0FBaUMvRSxNQUFNLE9BQU8sMEJBQTBCO0lBNkNyQztJQUNFLDBDQUEwQztJQUNuQyxNQUFpQjtJQUN4QiwwQ0FBMEM7SUFDbEMseUJBQW9EO0lBQzVELDBD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LENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXRWVSwwQkFBMEI7bUdBQTFCLDBCQUEwQiwwTEN0RXZDLHd5S0FvSUEsMG5XRDFFSSxZQUFZLHltQkFDWixZQUFZLHdRQUNaLG9CQUFvQiwwSkFDcEIsa0JBQWtCLHFIQUNsQixnQkFBZ0Isa0lBQ2hCLGVBQWUsNFFBQ2Ysa0JBQWtCOzs0RkFNVCwwQkFBMEI7a0JBakJ0QyxTQUFTOytCQUVFLDRCQUE0QixjQUMxQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2Ysa0JBQWtCO3FCQUNuQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJO29QQUk1QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEFjY29yZGlvbkluZm8sXHJcbiAgTWVudSxcclxuICBQYWdpbmF0b3JDb25maWcsXHJcbiAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgVGFibGVBY3Rpb25zLFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBTbGlkZVRvZ2dsZU9wdGlvbixcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIEFjY29yZGlvbkNvbXBvbmVudFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0IGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgVGVuYW50SW5mbywgVGVuYW50RGV0YWlsc1Jlc3BvbnNlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RlbmFudHMubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVuYW50cy1wZXJtaXNzaW9uLm1vZGVsJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3NoYXJlZCc7XHJcbmltcG9ydCB7IFRlbmFudHNSb3V0ZXNDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm91dGUtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBGZWF0dXJlUGVybWlzc2lvbklkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZlYXR1cmUtcGVybWlzc2lvbi1pZC5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlLFxyXG4gIEdldFJvbGVzUmVzcG9uc2UsXHJcbiAgUm9sZSxcclxuICBSb2xlc0FuZFBlcm1pc3Npb25zTWFwcGluZyxcclxuICBSb2xlc0FuZFBlcm1pc3Npb25zLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9yb2xlcy1hbmQtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIFVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkLFxyXG4gIFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy91cGRhdGUtdGVuYW50LXN0YXR1cy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLXZpZXctdGVuYW50LWRldGFpbHMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgUm91dGVyTW9kdWxlLFxyXG4gICAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgICBBY2NvcmRpb25Db21wb25lbnQsXHJcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmlld1RlbmFudERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBASW5wdXQoKSByb3V0ZVBhdGhzITogVGVuYW50c1JvdXRlc0NvbmZpZztcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dDtcclxuICB0ZW5hbnRMYWJlbHMgPSB0aGlzLmNvbnN0YW50cz8udmlld1RlbmFudHM/LmxhYmVsO1xyXG4gIHNsaWRlVG9nZ2xlT3B0aW9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBsYWJlbDogdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5sYWJlbD8uYWN0aXZlLFxyXG4gICAgY2hlY2tlZDogdHJ1ZSxcclxuICAgIGRpc2FibGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHRlbmFudERldGFpbHMhOiBUZW5hbnRJbmZvO1xyXG4gIGFjY29yZGlvbkluZm9MaXN0OiBBY2NvcmRpb25JbmZvW10gPSBKU09OLnBhcnNlKFxyXG4gICAgSlNPTi5zdHJpbmdpZnkodGhpcy5jb25zdGFudHM/LlRlbmFudEFjY29yZGlvbkluZm8pXHJcbiAgKTtcclxuICBhcHBJZCA9ICcnO1xyXG4gIGljb25TaXplID0gdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25JY29uU2l6ZTtcclxuICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVDYXB0aW9uID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8udGFibGVDYXB0aW9uO1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWUgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy50YWJsZUNvbHVtbnNIZWFkZXJUZXh0O1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZVN1cHBvcnRNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8uc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2U7XHJcbiAgcGVybWlzc2lvbnNDb2x1bW5DbGFzc051bWJlciA9IDE7XHJcbiAgbWVudUl0ZW1zOiBNZW51W10gPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25NZW51SXRlbXM7XHJcbiAgY29sdW1uU2NoZW1hOiBUYWJsZUNvbHVtblNjaGVtYVtdID0gW107XHJcbiAgdGFibGVEYXRhOiBSb2xlc0FuZFBlcm1pc3Npb25zW10gPSBbXTtcclxuICBpc1JvbGVzQW5kUGVybWlzc2lvbnNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8ucGFnZVNpemVPcHRpb25zWzBdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIHRhYmxlQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNQYWdpbmF0aW9uTmVlZGVkOiB0cnVlLFxyXG4gIH07XHJcbiAgdmlld1RlbmFudHNSb3V0ZVVybCE6IHN0cmluZztcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRlbmFudEFwcFNlcnZpY2U6IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHNoYXJlZFNlcnZpY2U6IFNoYXJlZFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gcmVzdWx0Py5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHZpZXcgdGVuYW50IGRldGFpbHMgY29tcG9uZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yb3V0ZVBhdGhzID0gdGhpcy5yb3V0ZVBhdGhzID8/IHRoaXMuY29uc3RhbnRzPy5yb3V0ZUNvbmZpZ1BhdGg7XHJcbiAgICB0aGlzLnZpZXdUZW5hbnRzUm91dGVVcmwgPSBgLyR7dGhpcy5yb3V0ZVBhdGhzPy52aWV3VGVuYW50c31gO1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmFwcElkID0gdGhpcy50ZW5hbnRBcHBTZXJ2aWNlLmdldFNlbGVjdGVkVGVuYW50SW5mb3JtYXRpb24oKVxyXG4gICAgICA/LmFwcElkIGFzIHN0cmluZztcclxuICAgIHRoaXMuZ2V0VGVuYW50RGV0YWlscyh0aGlzLmFwcElkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGVuYW50IGRldGFpbHMgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VGVuYW50RGV0YWlscyhhcHBJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFRlbmFudERldGFpbHMoYXBwSWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBUZW5hbnREZXRhaWxzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscyA9IHJlc3BvbnNlPy5ib2R5IGFzIFRlbmFudEluZm87XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24uY2hlY2tlZCA9IHRoaXMudGVuYW50RGV0YWlsc1xyXG4gICAgICAgICAgICAgIC5zdGF0dXMgYXMgYm9vbGVhbjtcclxuICAgICAgICAgICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5sYWJlbCA9IHRoaXMudGVuYW50RGV0YWlscy5zdGF0dXNcclxuICAgICAgICAgICAgICA/IHRoaXMudGVuYW50TGFiZWxzPy5hY3RpdmVcclxuICAgICAgICAgICAgICA6IHRoaXMudGVuYW50TGFiZWxzPy5pbmFjdGl2ZTtcclxuICAgICAgICAgICAgY29uc3QgZmVhdHVyZXMgPSB0aGlzLnRlbmFudERldGFpbHMuZmVhdHVyZXMgYXMgRmVhdHVyZXNbXTtcclxuICAgICAgICAgICAgZmVhdHVyZXMubWFwKChmZWF0dXJlOiBGZWF0dXJlcykgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGZlYXR1cmU/LmZlYXR1cmVJZCA9PT1cclxuICAgICAgICAgICAgICAgICAgRmVhdHVyZVBlcm1pc3Npb25JZC5NRUVUSU5HU19BTkRfRVZFTlRTIHx8XHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlPy5mZWF0dXJlSWQgPT09IEZlYXR1cmVQZXJtaXNzaW9uSWQuQkFMTE9UU1xyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uSW5mb0xpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmFjY29yZGlvbkluZm9MaXN0Lmxlbmd0aCArIDEsXHJcbiAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICB0aXRsZTogZmVhdHVyZT8uZmVhdHVyZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCB0aGlzLmNvbnN0YW50cz8uZXJyb3JzKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXkgdGhlIGNvcnJlc3BvbmRpbmcgdGVuYW50IGJhc2ljIG9yIGZlYXR1cmUgZGV0YWlscyBiYXNlZCBvbiBzZWxlY3RlZCBhY2NvcmRpb24uXHJcbiAgICogQHBhcmFtIHtBY2NvcmRpb25JbmZvfSBhY2NvcmRpb25JbmZvXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBleHBhbmRlZFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm86IEFjY29yZGlvbkluZm8sIGV4cGFuZGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBhY2NvcmRpb25JZCA9IGFjY29yZGlvbkluZm8uaWQgYXMgbnVtYmVyO1xyXG4gICAgc3dpdGNoIChhY2NvcmRpb25JZCkge1xyXG4gICAgICBjYXNlIDI6IHtcclxuICAgICAgICB0aGlzLmlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkID0gZXhwYW5kZWQ7XHJcbiAgICAgICAgaWYgKGV4cGFuZGVkKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcucmVjb3Jkc1BlclBhZ2UgPVxyXG4gICAgICAgICAgICB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9uc1swXTtcclxuICAgICAgICAgIHRoaXMuZ2V0Um9sZXNBbmRJbml0aWFsaXplVGFibGVTY2hlbWEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgY29uZmlndXJlZCByb2xlcyBvZiB0aGUgc2VsZWN0ZWQgdGVuYW50IGFuZCBjcmVhdGVzIHRoZSBjb2x1bW4gc2NoZW1hLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVzQW5kSW5pdGlhbGl6ZVRhYmxlU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRSb2xlcyh0aGlzLmFwcElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0Um9sZXNSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyh7XHJcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxyXG4gICAgICAgICAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZXNMaXN0ID0gcmVzcG9uc2UuYm9keSBhcyBSb2xlW107XHJcbiAgICAgICAgICAgIGNvbnN0IGNlbGxWYWx1ZSA9XHJcbiAgICAgICAgICAgICAgdGhpcy5jb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMudGFibGVDZWxsVmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIGlkOiAwLFxyXG4gICAgICAgICAgICAgICAgY29sdW1uRGVmOiAncGVybWlzc2lvbnMnLFxyXG4gICAgICAgICAgICAgICAgaGVhZGluZzpcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMudGFibGVDb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAucGVybWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgICAgICAgIGNlbGxEYXRhOiAocm9sZXNBbmRQZXJtaXNzaW9uczogUm9sZXNBbmRQZXJtaXNzaW9ucykgPT5cclxuICAgICAgICAgICAgICAgICAgcm9sZXNBbmRQZXJtaXNzaW9ucy5wZXJtaXNzaW9uLFxyXG4gICAgICAgICAgICAgICAgaXNTdGlja3lDb2x1bW46IHRydWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgcm9sZXNMaXN0Lm1hcCgocm9sZTogUm9sZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGlkOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5EZWY6IHJvbGUucm9sZUlkLFxyXG4gICAgICAgICAgICAgICAgaGVhZGluZzogcm9sZS5yb2xlTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgICAgICAgICAgaGFzQ29sdW1uQWN0aW9uczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIGNlbGxEYXRhOiAocm9sZXNBbmRQZXJtaXNzaW9uczogUm9sZXNBbmRQZXJtaXNzaW9ucykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcm9sZXNBbmRQZXJtaXNzaW9ucy5yb2xlSWRzTGlzdC5maW5kKFxyXG4gICAgICAgICAgICAgICAgICAgIChyb2xlSWQ6IHN0cmluZykgPT4gcm9sZS5yb2xlSWQgPT09IHJvbGVJZFxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgPyBjZWxsVmFsdWUueWVzXHJcbiAgICAgICAgICAgICAgICAgICAgOiBjZWxsVmFsdWUubm87XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IsIHRoaXMuY29uc3RhbnRzPy5lcnJvcnMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaGVzIHRoZSByb2xlcyBhbmQgcGVybWlzc2lvbnMgbWFwcGluZ3MgZm9yIHRoZSBzZWxlY3RlZCB0ZW5hbnQgYW5kIGFuZCBpbml0aWFsaXplIHRhYmxlIHZpZXcuXHJcbiAgICogQHBhcmFtIHtHZXRSb2xlc0FuZFBlcm1pc3Npb25zUGF5bG9hZH0gcGF5bG9hZFxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFJvbGVzQW5kUGVybWlzc2lvbnNBbmRJbml0aWFsaXplVGFibGVWaWV3KFxyXG4gICAgcGF5bG9hZDogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWRcclxuICApOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0Um9sZXNBbmRQZXJtaXNzaW9uc01hcHBpbmdzKHRoaXMuYXBwSWQsIHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlOiBHZXRSb2xlc0FuZFBlcm1pc3Npb25zUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnRvdGFsUmVjb3JkcyA9IHJlc3BvbnNlPy5ib2R5XHJcbiAgICAgICAgICAgICAgPy50b3RhbFJlY29yZHMgYXMgbnVtYmVyO1xyXG4gICAgICAgICAgICBjb25zdCByb2xlc0FuZFBlcm1pc3Npb25zTGlzdCA9IHJlc3BvbnNlPy5ib2R5XHJcbiAgICAgICAgICAgICAgPy5yb2xlUGVybWlzc2lvbkRldGFpbHMgYXMgUm9sZXNBbmRQZXJtaXNzaW9uc01hcHBpbmdbXTtcclxuICAgICAgICAgICAgcm9sZXNBbmRQZXJtaXNzaW9uc0xpc3QubWFwKChwZXJtaXNzaW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHJvbGVJZHNMaXN0OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgICAgICAgIHJvbGVJZHNMaXN0ID0gcGVybWlzc2lvbi5yb2xlTGlzdC5tYXAoKHJvbGUpID0+IHJvbGUucm9sZUlkKTtcclxuICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5wdXNoKHtcclxuICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHBlcm1pc3Npb24ucGVybWlzc2lvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICByb2xlSWRzTGlzdDogcm9sZUlkc0xpc3QsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvciwgdGhpcy5jb25zdGFudHM/LmVycm9ycyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZldGNoIHRoZSByb2xlcyBhbmQgcGVybWlzc2lvbnMgcmVjb3JkcyBiYXNlZCBvbiBvZmZzZXQgYW5kIHBhZ2Ugc2l6ZSB3aGlsZSB0aGUgcGFnaW5hdGlvbiBjaGFuZ2VzLlxyXG4gICAqIEBwYXJhbSB7UGFnZUV2ZW50fSBwYWdlRXZlbnRcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvblRhYmxlUGFnaW5hdGlvbkNoYW5nZShwYWdlRXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyh7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBvZmZzZXQ6IHBhZ2VFdmVudC5wYWdlSW5kZXgsXHJcbiAgICAgICAgcGFnZVNpemU6IHBhZ2VFdmVudC5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBLZWVwcyB0cmFjayBvZiB0aGUgYWNjb3JkaW9uIGJhc2VkIG9uIHRoZSBlbGVtZW50J3MgSUQgaW4gRE9NIHRyZWUuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUFjY29yZGlvbkZuKGluZGV4OiBudW1iZXIsIGl0ZW06IEFjY29yZGlvbkluZm8pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGl0ZW0/LmlkIGFzIG51bWJlcjtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2FsbHMgb3BlblRlbmFudFN0YXR1c0NvbmZpcm1hdGlvbk1vZGFsIHRvIGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRlbmFudCBvbiBzbGlkZSB0b2dnbGUgY2hhbmdlLlxyXG4gICAqIEBwYXJhbSB7U2xpZGVUb2dnbGVPcHRpb259IHNsaWRlVG9nZ2xlT3B0aW9uXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25TbGlkZVRvZ2dsZUNoYW5nZShzbGlkZVRvZ2dsZU9wdGlvbjogU2xpZGVUb2dnbGVPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMub3BlblRlbmFudFN0YXR1c0NvbmZpcm1hdGlvbk1vZGFsKHNsaWRlVG9nZ2xlT3B0aW9uPy5jaGVja2VkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBpbmFjdGl2YXRlL3JlYWN0aXZhdGUgdGhlIHRlbmFudC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWN0aXZhdGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuVGVuYW50U3RhdHVzQ29uZmlybWF0aW9uTW9kYWwoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9IHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IHN0YXR1c1RleHQgPSBpc0FjdGl2YXRlXHJcbiAgICAgID8gY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZUFjdGl2YXRlXHJcbiAgICAgIDogY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZUluYWN0aXZhdGU7XHJcbiAgICBjb25zdCB1cGRhdGVUZW5hbnRTdGF0dXNNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBgJHtjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlfSAke3N0YXR1c1RleHR9ICR7dGhpcy50ZW5hbnREZXRhaWxzPy5hcHBUaXRsZX0/YCxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogdXBkYXRlVGVuYW50U3RhdHVzTW9kYWxPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy51cGRhdGVUZW5hbnRTdGF0dXMoaXNBY3RpdmF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc2V0U2xpZGVUb2dnbGVTdGF0dXMoaXNBY3RpdmF0ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgdGVuYW50IHN0YXR1cyB0byB0aGUgc2VydmVyIHVzaW5nIGh0dHAgcmVxdWVzdCBhbmQgZGlzcGxheSBzdWNjZXNzL2Vycm9yIG1lc3NhZ2UgYmFzZWQgb24gcmVxdWVzdCByZXNwb25zZSAoc3VjY2VzcyBvciBmYWlsdXJlKS5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWN0aXZhdGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICB1cGRhdGVUZW5hbnRTdGF0dXMoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgdXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQ6IFVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgYXBwSWQ6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwSWQsXHJcbiAgICAgICAgc3RhdHVzOiBpc0FjdGl2YXRlLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAudXBkYXRlVGVuYW50U3RhdHVzKHVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmxhYmVsID0gaXNBY3RpdmF0ZVxyXG4gICAgICAgICAgICAgID8gdGhpcy50ZW5hbnRMYWJlbHM/LmFjdGl2ZVxyXG4gICAgICAgICAgICAgIDogdGhpcy50ZW5hbnRMYWJlbHM/LmluYWN0aXZlO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudERldGFpbHMuc3RhdHVzID0gaXNBY3RpdmF0ZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnREZXRhaWxzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy50ZW5hbnREZXRhaWxzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNldFNsaWRlVG9nZ2xlU3RhdHVzKGlzQWN0aXZhdGUpO1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhcclxuICAgICAgICAgICAgZXJyb3IsXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8uZXJyb3JzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHNsaWRlIHRvZ2dsZSBjaGVja2VkIHN0YXR1cyBhbmQgbGFiZWwuXHJcbiAgICogQHBhcmFtIHtib29sZWFufSBpc0FjdGl2YXRlXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0U2xpZGVUb2dnbGVTdGF0dXMoaXNBY3RpdmF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5zbGlkZVRvZ2dsZU9wdGlvbi5jaGVja2VkID0gIWlzQWN0aXZhdGU7XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmxhYmVsID0gIWlzQWN0aXZhdGVcclxuICAgICAgPyB0aGlzLnRlbmFudExhYmVscz8uYWN0aXZlXHJcbiAgICAgIDogdGhpcy50ZW5hbnRMYWJlbHM/LmluYWN0aXZlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBQZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkPy5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JD8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwiaWVlZXNhLXZpZXctdGVuYW50LWluZm8gcHgtNCBwYi00XCJcclxuICBbbmdDbGFzc109XCJcclxuICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICA/ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tYmctd2hpdGUnXHJcbiAgICAgIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1iZy1ibHVlJ1xyXG4gIFwiXHJcbj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtbGctNCBnYXAtbWQtMyBnYXAtc20tMiBnYXAtM1wiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnZmxleC1jb2x1bW4gZ2FwLTIgcGItMycgOiAnYWxpZ24taXRlbS1jZW50ZXInXCJcclxuICA+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC1sZy00IGdhcC1tZC0zIGdhcC1zbS0zIGdhcC0zIHBzLTAgYWxpZ24taXRlbXMtbWQtY2VudGVyIGFsaWduLWl0ZW1zLXhsLWNlbnRlclwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdmbGV4LWNvbHVtbicgOiAnJ1wiXHJcbiAgICA+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJtYi0wIGllZWVzYS1oZWFkbGluZS1sZy0zMiBweS0zXCJcclxuICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnJyA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tdGl0bGUnXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHRlbmFudERldGFpbHM/LmFwcFRpdGxlIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtbGctMiBnYXAtbWQtMiBnYXAtc20tMiBnYXAtMlwiPlxyXG4gICAgICAgIDxzcGFuXHJcbiAgICAgICAgICBjbGFzcz1cIm1iLTAgaWVlZXNhLXRpdGxlLXNtLTE0IG10LTFcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWFwcC1pZCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7IHRlbmFudExhYmVscz8uYXBwSWQgfX06XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIHt7IHRlbmFudERldGFpbHM/LmFwcElkIH19XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbmFudERldGFpbHM/LmFwcElkICE9PSB0ZW5hbnRMYWJlbHM/LnNhQXBwSWRcIj5cclxuICAgICAgICAgIDxtYXQtZGl2aWRlciBbdmVydGljYWxdPVwidHJ1ZVwiPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICBjbGFzcz1cIm1iLTAgbXQtMSBpZWVlc2EtdGl0bGUtc20tMTQgaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWFwcC1zdGF0dXNcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICcnXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgdGVuYW50TGFiZWxzPy5zdGF0dXMgfX06XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8aWVlZXNhLXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgICBbc2xpZGVUb2dnbGVdPVwic2xpZGVUb2dnbGVPcHRpb25cIlxyXG4gICAgICAgICAgICAoc2xpZGVUb2dnbGVDaGFuZ2UpPVwib25TbGlkZVRvZ2dsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2llZWVzYS1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YVxyXG4gICAgICBjbGFzcz1cImllZWVzYS1idG4tbGFiZWwtbGctYm9sZC0xNiB0ZXh0LWRlY29yYXRpb24tbm9uZSBtdC1sZy0zIG10LXhsLTYgcC1zbS0wIHAtbWQtMFwiXHJcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcclxuICAgICAgW3JvdXRlckxpbmtdPVwidmlld1RlbmFudHNSb3V0ZVVybFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tbGluay1tb2JpbGUnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1saW5rJ1wiXHJcbiAgICAgID57eyB0ZW5hbnRMYWJlbHM/LnZpZXdBbGxBcHBzIH19PC9hXHJcbiAgICA+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWNjb3JkaW9uIGllZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24tLWJsdWUtYmdcIlxyXG4gICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24tLWluZm8nIDogJydcIlxyXG4gID5cclxuICAgIDxuZy1jb250YWluZXJcclxuICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgbGV0IGFjY29yZGlvbkluZm8gb2YgYWNjb3JkaW9uSW5mb0xpc3Q7XHJcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeUFjY29yZGlvbkZuXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjY29yZGlvbkluZm8uaWRcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIyXCI+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgICBbYWNjb3JkaW9uSW5mb109XCJhY2NvcmRpb25JbmZvXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fcm9sZXMtYW5kLXBlcm1pc3Npb25zXCJcclxuICAgICAgICAgICAgKGFjY29yZGlvbk9wZW5lZCk9XCJzaG93VGVuYW50RGV0YWlscyhhY2NvcmRpb25JbmZvLCAkZXZlbnQpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGFjdGlvbnNcclxuICAgICAgICAgICAgICAqbmdJZj1cImlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBnYXAtM1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICAgICBpc01vYmlsZVZpZXcgPyAnbWItMyBweC00JyA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fYWN0aW9ucydcclxuICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtYXQtdGVydGlhcnktYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJ3B4LTIgcHktMidcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0YW50cy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucy5hY3Rpb25CdXR0b25MYWJlbHMuYWRkUm9sZVxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC10ZXJ0aWFyeS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAncHgtMiBweS0yJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLmFjdGlvbkJ1dHRvbkxhYmVsc1xyXG4gICAgICAgICAgICAgICAgICAgIC5tYXBQZXJtaXNzaW9uc1JvbGVzXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjb21wb25lbnQgKm5nSWY9XCJpc1JvbGVzQW5kUGVybWlzc2lvbnNFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtZGl2aWRlclxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mb19fcm9sZXMtYW5kLXBlcm1pc3Npb25zX19kaXZpZGVyXCJcclxuICAgICAgICAgICAgICA+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICA8aWVlZXNhLWRhdGEtdGFibGVcclxuICAgICAgICAgICAgICAgIFt0YWJsZURhdGFJbmZvXT1cInRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgICAgICAgICAgICAgW2NhcHRpb25dPVwicm9sZXNBbmRQZXJtaXNzaW9uc1RhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbcGFnaW5hdG9yQ29uZmlnXT1cInBhZ2luYXRvckNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXT1cImljb25TaXplXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbkFjdGlvbnNdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XT1cInJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3Njcm9sbGJhclN1cHBvcnRNZXNzYWdlXT1cIlxyXG4gICAgICAgICAgICAgICAgICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVTdXBwb3J0TWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcl09XCJwZXJtaXNzaW9uc0NvbHVtbkNsYXNzTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uVGFibGVQYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2llZWVzYS1kYXRhLXRhYmxlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvaWVlZXNhLWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgW2FjY29yZGlvbkluZm9dPVwiYWNjb3JkaW9uSW5mb1wiXHJcbiAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgID48L2llZWVzYS1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10ZW5hbnQtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZW5hbnRzL3NyYy9saWIvY29tcG9uZW50cy92aWV3LXRlbmFudC1kZXRhaWxzL3ZpZXctdGVuYW50LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZGV0YWlscy92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFHVCxTQUFTLEdBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsY0FBYyxFQUdkLG9CQUFvQixFQUVwQixTQUFTLEVBQ1QsMEJBQTBCLEVBRzFCLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBTTdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlD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VTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIEFsZXJ0VHlwZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIEdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2UsXHJcbiAgTW9kYWxUeXBlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQge1xyXG4gIEFjY29yZGlvbkluZm8sXHJcbiAgTW9kYWxDb21wb25lbnQsXHJcbiAgTWVudSxcclxuICBQYWdpbmF0b3JDb25maWcsXHJcbiAgU2xpZGVUb2dnbGVDb21wb25lbnQsXHJcbiAgVGFibGVBY3Rpb25zLFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBTbGlkZVRvZ2dsZU9wdGlvbixcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBUYWJsZUNvbHVtblR5cGUsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIEFjY29yZGlvbkNvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dCBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XHJcbmltcG9ydCB7IFRlbmFudEFwcGxpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZW5hbnQtYXBwbGljYXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uL21vZGVscy90ZW5hbnRzLXBlcm1pc3Npb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnQGllZWVzYS1ucG0vc2hhcmVkJztcclxuaW1wb3J0IHsgVGVuYW50c1JvdXRlc0NvbmZpZyB9IGZyb20gJy4uLy4uL21vZGVscy9yb3V0ZS1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGZWF0dXJlcyB9IGZyb20gJy4uLy4uL21vZGVscy9mZWF0dXJlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEZlYXR1cmVQZXJtaXNzaW9uSWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmVhdHVyZS1wZXJtaXNzaW9uLWlkLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBUZW5hbnRCYXNpY0luZm8sXHJcbiAgVGVuYW50RGV0YWlsc1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy90ZW5hbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBUZW5hbnRGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGVuYW50LWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBDcmVhdGVUZW5hbnRBcHBsaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS10ZW5hbnQtYXBwbGljYXRpb24vY3JlYXRlLXRlbmFudC1hcHBsaWNhdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIFVwZGF0ZVRlbmFudFN0YXR1c1JlcXVlc3RQYXlsb2FkLFxyXG4gIFVwZGF0ZVRlbmFudFN0YXR1c1Jlc3BvbnNlLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy91cGRhdGUtdGVuYW50LXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWQsXHJcbiAgR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlLFxyXG4gIEdldFJvbGVzUmVzcG9uc2UsXHJcbiAgUm9sZSxcclxuICBSb2xlc0FuZFBlcm1pc3Npb25zTWFwcGluZyxcclxuICBSb2xlc0FuZFBlcm1pc3Npb25zLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9yb2xlcy1hbmQtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcclxuICBzZWxlY3RvcjogJ2llZWVzYS12aWV3LXRlbmFudC1kZXRhaWxzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFNsaWRlVG9nZ2xlQ29tcG9uZW50LFxyXG4gICAgQWNjb3JkaW9uQ29tcG9uZW50LFxyXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92aWV3LXRlbmFudC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBASW5wdXQoKSBhcGlCYXNlVVJMITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHVzZXJQZXJtaXNzaW9ucyE6IFVzZXJQZXJtaXNzaW9uW107XHJcbiAgQElucHV0KCkgcm91dGVQYXRocyE6IFRlbmFudHNSb3V0ZXNDb25maWc7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHQ7XHJcbiAgdGVuYW50TGFiZWxzID0gdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5sYWJlbDtcclxuICBzbGlkZVRvZ2dsZU9wdGlvbiA9IHtcclxuICAgIGlkOiAxLFxyXG4gICAgbGFiZWw6IHRoaXMuY29uc3RhbnRzPy52aWV3VGVuYW50cz8ubGFiZWw/LmFjdGl2ZSxcclxuICAgIGNoZWNrZWQ6IHRydWUsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgfTtcclxuICB0ZW5hbnREZXRhaWxzITogVGVuYW50QmFzaWNJbmZvO1xyXG4gIGFjY29yZGlvbkluZm9MaXN0OiBBY2NvcmRpb25JbmZvW10gPSBKU09OLnBhcnNlKFxyXG4gICAgSlNPTi5zdHJpbmdpZnkodGhpcy5jb25zdGFudHM/LlRlbmFudEFjY29yZGlvbkluZm8pXHJcbiAgKTtcclxuICBhcHBJZCA9ICcnO1xyXG4gIGljb25TaXplID0gdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25JY29uU2l6ZTtcclxuICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVDYXB0aW9uID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8udGFibGVDYXB0aW9uO1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWUgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy50YWJsZUNvbHVtbnNIZWFkZXJUZXh0O1xyXG4gIHJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZVN1cHBvcnRNZXNzYWdlID1cclxuICAgIHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8uc2Nyb2xsYmFyU3VwcG9ydE1lc3NhZ2U7XHJcbiAgcGVybWlzc2lvbnNDb2x1bW5DbGFzc051bWJlciA9IDE7XHJcbiAgbWVudUl0ZW1zOiBNZW51W10gPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5jb2x1bW5BY3Rpb25NZW51SXRlbXM7XHJcbiAgY29sdW1uU2NoZW1hOiBUYWJsZUNvbHVtblNjaGVtYVtdID0gW107XHJcbiAgdGFibGVEYXRhOiBSb2xlc0FuZFBlcm1pc3Npb25zW10gPSBbXTtcclxuICBpc1JvbGVzQW5kUGVybWlzc2lvbnNFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuY29uc3RhbnRzPy52aWV3Um9sZXNBbmRQZXJtaXNzaW9ucz8ucGFnZVNpemVPcHRpb25zWzBdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLmNvbnN0YW50cz8udmlld1JvbGVzQW5kUGVybWlzc2lvbnM/LnBhZ2VTaXplT3B0aW9ucyxcclxuICAgIHRvdGFsUmVjb3JkczogMCxcclxuICB9O1xyXG4gIHRhYmxlQWN0aW9uczogVGFibGVBY3Rpb25zID0ge1xyXG4gICAgaXNQYWdpbmF0aW9uTmVlZGVkOiB0cnVlLFxyXG4gIH07XHJcbiAgdmlld1RlbmFudHNSb3V0ZVVybCE6IHN0cmluZztcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZWRpdFRlbmFudFNjcmVlblRleHRzOiBhbnkgPSB0aGlzLmNvbnN0YW50cz8uZWRpdFRlbmFudDtcclxuICBhbGlnbm1lbnRUeXBlID0gQWxpZ25UeXBlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyU2VydmljZTogQnJlYWtwb2ludE9ic2VydmVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB0ZW5hbnRBcHBTZXJ2aWNlOiBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdD8ubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB2aWV3IHRlbmFudCBkZXRhaWxzIGNvbXBvbmVudC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMucm91dGVQYXRocyA9IHRoaXMucm91dGVQYXRocyA/PyB0aGlzLmNvbnN0YW50cz8ucm91dGVDb25maWdQYXRoO1xyXG4gICAgdGhpcy52aWV3VGVuYW50c1JvdXRlVXJsID0gYC8ke3RoaXMucm91dGVQYXRocz8udmlld1RlbmFudHN9YDtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZT8uc2V0QXBwQ29uZmlnKHRoaXMuYXBpQmFzZVVSTCwgdGhpcy51c2VyUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5hcHBJZCA9IHRoaXMudGVuYW50QXBwU2VydmljZS5nZXRTZWxlY3RlZFRlbmFudEluZm9ybWF0aW9uKClcclxuICAgICAgPy5hcHBJZCBhcyBzdHJpbmc7XHJcbiAgICB0aGlzLmdldFRlbmFudERldGFpbHModGhpcy5hcHBJZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNlbGVjdGVkIHRlbmFudCBkZXRhaWxzIGZyb20gc2VydmVyLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldFRlbmFudERldGFpbHMoYXBwSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC5nZXRUZW5hbnREZXRhaWxzKGFwcElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogVGVuYW50RGV0YWlsc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudERldGFpbHMgPSByZXNwb25zZT8uYm9keSBhcyBUZW5hbnRCYXNpY0luZm87XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50QXBwU2VydmljZS5zZXRTZWxlY3RlZFRlbmFudEluZm9ybWF0aW9uKFxyXG4gICAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlsc1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmNoZWNrZWQgPSB0aGlzLnRlbmFudERldGFpbHNcclxuICAgICAgICAgICAgICAuc3RhdHVzIGFzIGJvb2xlYW47XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24ubGFiZWwgPSB0aGlzLnRlbmFudERldGFpbHMuc3RhdHVzXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnRlbmFudExhYmVscz8uYWN0aXZlXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnRlbmFudExhYmVscz8uaW5hY3RpdmU7XHJcbiAgICAgICAgICAgIGNvbnN0IGZlYXR1cmVzID0gdGhpcy50ZW5hbnREZXRhaWxzLmZlYXR1cmVzIGFzIEZlYXR1cmVzW107XHJcbiAgICAgICAgICAgIGZlYXR1cmVzLm1hcCgoZmVhdHVyZTogRmVhdHVyZXMpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBmZWF0dXJlPy5mZWF0dXJlSWQgPT09XHJcbiAgICAgICAgICAgICAgICAgIEZlYXR1cmVQZXJtaXNzaW9uSWQuTUVFVElOR1NfQU5EX0VWRU5UUyB8fFxyXG4gICAgICAgICAgICAgICAgZmVhdHVyZT8uZmVhdHVyZUlkID09PSBGZWF0dXJlUGVybWlzc2lvbklkLkJBTExPVFNcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjY29yZGlvbkluZm9MaXN0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICBpZDogdGhpcy5hY2NvcmRpb25JbmZvTGlzdC5sZW5ndGggKyAxLFxyXG4gICAgICAgICAgICAgICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6IGZlYXR1cmU/LmZlYXR1cmVOYW1lLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zaGFyZWRTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvciwgdGhpcy5jb25zdGFudHM/LmVycm9ycyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5IHRoZSBjb3JyZXNwb25kaW5nIHRlbmFudCBiYXNpYyBvciBmZWF0dXJlIGRldGFpbHMgYmFzZWQgb24gc2VsZWN0ZWQgYWNjb3JkaW9uLlxyXG4gICAqIEBwYXJhbSB7QWNjb3JkaW9uSW5mb30gYWNjb3JkaW9uSW5mb1xyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXhwYW5kZWRcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93VGVuYW50RGV0YWlscyhhY2NvcmRpb25JbmZvOiBBY2NvcmRpb25JbmZvLCBleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgYWNjb3JkaW9uSWQgPSBhY2NvcmRpb25JbmZvLmlkIGFzIG51bWJlcjtcclxuICAgIHN3aXRjaCAoYWNjb3JkaW9uSWQpIHtcclxuICAgICAgY2FzZSAyOiB7XHJcbiAgICAgICAgdGhpcy5pc1JvbGVzQW5kUGVybWlzc2lvbnNFeHBhbmRlZCA9IGV4cGFuZGVkO1xyXG4gICAgICAgIGlmIChleHBhbmRlZCkge1xyXG4gICAgICAgICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXTtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnLnJlY29yZHNQZXJQYWdlID1cclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zPy5wYWdlU2l6ZU9wdGlvbnNbMF07XHJcbiAgICAgICAgICB0aGlzLmdldFJvbGVzQW5kSW5pdGlhbGl6ZVRhYmxlU2NoZW1hKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZldGNoZXMgdGhlIGNvbmZpZ3VyZWQgcm9sZXMgb2YgdGhlIHNlbGVjdGVkIHRlbmFudCBhbmQgY3JlYXRlcyB0aGUgY29sdW1uIHNjaGVtYS5cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRSb2xlc0FuZEluaXRpYWxpemVUYWJsZVNjaGVtYSgpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0Um9sZXModGhpcy5hcHBJZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IEdldFJvbGVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0Um9sZXNBbmRQZXJtaXNzaW9uc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoe1xyXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgICAgICAgIG9mZnNldDogMCxcclxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvbGVzTGlzdCA9IHJlc3BvbnNlLmJvZHkgYXMgUm9sZVtdO1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsVmFsdWUgPVxyXG4gICAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLnRhYmxlQ2VsbFZhbHVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtblNjaGVtYSA9IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBpZDogMCxcclxuICAgICAgICAgICAgICAgIGNvbHVtbkRlZjogJ3Blcm1pc3Npb25zJyxcclxuICAgICAgICAgICAgICAgIGhlYWRpbmc6XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLnRhYmxlQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgLnBlcm1pc3Npb25zLFxyXG4gICAgICAgICAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgICAgICAgICBjZWxsRGF0YTogKHJvbGVzQW5kUGVybWlzc2lvbnM6IFJvbGVzQW5kUGVybWlzc2lvbnMpID0+XHJcbiAgICAgICAgICAgICAgICAgIHJvbGVzQW5kUGVybWlzc2lvbnMucGVybWlzc2lvbixcclxuICAgICAgICAgICAgICAgIGlzU3RpY2t5Q29sdW1uOiB0cnVlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIHJvbGVzTGlzdC5tYXAoKHJvbGU6IFJvbGUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jb2x1bW5TY2hlbWEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAxLFxyXG4gICAgICAgICAgICAgICAgY29sdW1uRGVmOiByb2xlLnJvbGVJZCxcclxuICAgICAgICAgICAgICAgIGhlYWRpbmc6IHJvbGUucm9sZU5hbWUsXHJcbiAgICAgICAgICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAgICAgICAgIGhhc0NvbHVtbkFjdGlvbnM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBjZWxsRGF0YTogKHJvbGVzQW5kUGVybWlzc2lvbnM6IFJvbGVzQW5kUGVybWlzc2lvbnMpID0+IHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvbGVzQW5kUGVybWlzc2lvbnMucm9sZUlkc0xpc3QuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAocm9sZUlkOiBzdHJpbmcpID0+IHJvbGUucm9sZUlkID09PSByb2xlSWRcclxuICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgICAgID8gY2VsbFZhbHVlLnllc1xyXG4gICAgICAgICAgICAgICAgICAgIDogY2VsbFZhbHVlLm5vO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yLCB0aGlzLmNvbnN0YW50cz8uZXJyb3JzKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyB0aGUgcm9sZXMgYW5kIHBlcm1pc3Npb25zIG1hcHBpbmdzIGZvciB0aGUgc2VsZWN0ZWQgdGVuYW50IGFuZCBhbmQgaW5pdGlhbGl6ZSB0YWJsZSB2aWV3LlxyXG4gICAqIEBwYXJhbSB7R2V0Um9sZXNBbmRQZXJtaXNzaW9uc1BheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRSb2xlc0FuZFBlcm1pc3Npb25zQW5kSW5pdGlhbGl6ZVRhYmxlVmlldyhcclxuICAgIHBheWxvYWQ6IEdldFJvbGVzQW5kUGVybWlzc2lvbnNQYXlsb2FkXHJcbiAgKTogdm9pZCB7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2VcclxuICAgICAgLmdldFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5ncyh0aGlzLmFwcElkLCBwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogR2V0Um9sZXNBbmRQZXJtaXNzaW9uc1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPSByZXNwb25zZT8uYm9keVxyXG4gICAgICAgICAgICAgID8udG90YWxSZWNvcmRzIGFzIG51bWJlcjtcclxuICAgICAgICAgICAgY29uc3Qgcm9sZXNBbmRQZXJtaXNzaW9uc0xpc3QgPSByZXNwb25zZT8uYm9keVxyXG4gICAgICAgICAgICAgID8ucm9sZVBlcm1pc3Npb25EZXRhaWxzIGFzIFJvbGVzQW5kUGVybWlzc2lvbnNNYXBwaW5nW107XHJcbiAgICAgICAgICAgIHJvbGVzQW5kUGVybWlzc2lvbnNMaXN0Lm1hcCgocGVybWlzc2lvbikgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCByb2xlSWRzTGlzdDogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICAgICAgICByb2xlSWRzTGlzdCA9IHBlcm1pc3Npb24ucm9sZUxpc3QubWFwKChyb2xlKSA9PiByb2xlLnJvbGVJZCk7XHJcbiAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBwZXJtaXNzaW9uOiBwZXJtaXNzaW9uLnBlcm1pc3Npb25OYW1lLFxyXG4gICAgICAgICAgICAgICAgcm9sZUlkc0xpc3Q6IHJvbGVJZHNMaXN0LFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2hhcmVkU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IsIHRoaXMuY29uc3RhbnRzPy5lcnJvcnMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBGZXRjaCB0aGUgcm9sZXMgYW5kIHBlcm1pc3Npb25zIHJlY29yZHMgYmFzZWQgb24gb2Zmc2V0IGFuZCBwYWdlIHNpemUgd2hpbGUgdGhlIHBhZ2luYXRpb24gY2hhbmdlcy5cclxuICAgKiBAcGFyYW0ge1BhZ2VFdmVudH0gcGFnZUV2ZW50XHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25UYWJsZVBhZ2luYXRpb25DaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0Um9sZXNBbmRQZXJtaXNzaW9uc0FuZEluaXRpYWxpemVUYWJsZVZpZXcoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgb2Zmc2V0OiBwYWdlRXZlbnQucGFnZUluZGV4LFxyXG4gICAgICAgIHBhZ2VTaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGFjY29yZGlvbiBiYXNlZCBvbiB0aGUgZWxlbWVudCdzIElEIGluIERPTSB0cmVlLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHRyYWNrQnlBY2NvcmRpb25GbihpbmRleDogbnVtYmVyLCBpdGVtOiBBY2NvcmRpb25JbmZvKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpdGVtPy5pZCBhcyBudW1iZXI7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgZWRpdCB0ZW5hbnQgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnREZXRhaWxzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkVkaXRUZW5hbnRGb3JtKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlPy5zZXRUZW5hbnRGdW5jdGlvblR5cGUoVGVuYW50RnVuY3Rpb25UeXBlPy5FRElUKTtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHRoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQ3JlYXRlVGVuYW50QXBwbGljYXRpb25Db21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LXRlbmFudCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbnMgbW9kYWwgY29tcG9uZW50IHdpdGggcmVjZWl2ZWQgcGFyYW1zIGFuZCBoYW5kbGVzIGZvcm0gc3VibWlzc2lvbiBzdWNjZXNzIGFuZCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHsqfSBkaWFsb2dPcHRpb25zXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGFzc05hbWVdXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnRzRGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5Nb2RhbChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBkaWFsb2dPcHRpb25zOiBhbnksXHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmdcclxuICApOiB2b2lkIHtcclxuICAgIGNsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGlhbG9nT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICcnLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1tb2RhbC1kaWFsb2cnLCBjbGFzc05hbWVdLFxyXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uc3VibWl0Rm9ybVJlc3BvbnNlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSwgbm8tdW51c2VkLXZhcnNcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2Uuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgIGAke3RoaXMudGVuYW50RGV0YWlscz8uYXBwVGl0bGV9ICR7dGhpcy5lZGl0VGVuYW50U2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb259YFxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5mb3JtQ2FuY2VsXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDYWxscyBvcGVuVGVuYW50U3RhdHVzQ29uZmlybWF0aW9uTW9kYWwgdG8gY2hhbmdlIHRoZSBzdGF0dXMgb2YgdGVuYW50IG9uIHNsaWRlIHRvZ2dsZSBjaGFuZ2UuXHJcbiAgICogQHBhcmFtIHtTbGlkZVRvZ2dsZU9wdGlvbn0gc2xpZGVUb2dnbGVPcHRpb25cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBvblNsaWRlVG9nZ2xlQ2hhbmdlKHNsaWRlVG9nZ2xlT3B0aW9uOiBTbGlkZVRvZ2dsZU9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuVGVuYW50U3RhdHVzQ29uZmlybWF0aW9uTW9kYWwoc2xpZGVUb2dnbGVPcHRpb24/LmNoZWNrZWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGluYWN0aXZhdGUvcmVhY3RpdmF0ZSB0aGUgdGVuYW50LlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBY3RpdmF0ZVxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5UZW5hbnRTdGF0dXNDb25maXJtYXRpb25Nb2RhbChpc0FjdGl2YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3Qgc3RhdHVzVGV4dCA9IGlzQWN0aXZhdGVcclxuICAgICAgPyBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlQWN0aXZhdGVcclxuICAgICAgOiBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlSW5hY3RpdmF0ZTtcclxuICAgIGNvbnN0IHVwZGF0ZVRlbmFudFN0YXR1c01vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IGAke2NvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2V9ICR7c3RhdHVzVGV4dH0gJHt0aGlzLnRlbmFudERldGFpbHM/LmFwcFRpdGxlfT9gLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogdGhpcy5hbGlnbm1lbnRUeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiB1cGRhdGVUZW5hbnRTdGF0dXNNb2RhbE9wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogY29uZmlybWF0aW9uSW5mbz8uYXJpYUxhYmVsPy5hbGVydCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0ZVRlbmFudFN0YXR1cyhpc0FjdGl2YXRlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zZXRTbGlkZVRvZ2dsZVN0YXR1cyhpc0FjdGl2YXRlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHRoZSB0ZW5hbnQgc3RhdHVzIHRvIHRoZSBzZXJ2ZXIgdXNpbmcgaHR0cCByZXF1ZXN0IGFuZCBkaXNwbGF5IHN1Y2Nlc3MvZXJyb3IgbWVzc2FnZSBiYXNlZCBvbiByZXF1ZXN0IHJlc3BvbnNlIChzdWNjZXNzIG9yIGZhaWx1cmUpLlxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNBY3RpdmF0ZVxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50RGV0YWlsc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHVwZGF0ZVRlbmFudFN0YXR1cyhpc0FjdGl2YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBjb25zdCB1cGRhdGVUZW5hbnRTdGF0dXNSZXF1ZXN0UGF5bG9hZDogVXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBhcHBJZDogdGhpcy50ZW5hbnREZXRhaWxzPy5hcHBJZCxcclxuICAgICAgICBzdGF0dXM6IGlzQWN0aXZhdGUsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy50ZW5hbnRBcHBTZXJ2aWNlXHJcbiAgICAgIC51cGRhdGVUZW5hbnRTdGF0dXModXBkYXRlVGVuYW50U3RhdHVzUmVxdWVzdFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogVXBkYXRlVGVuYW50U3RhdHVzUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24ubGFiZWwgPSBpc0FjdGl2YXRlXHJcbiAgICAgICAgICAgICAgPyB0aGlzLnRlbmFudExhYmVscz8uYWN0aXZlXHJcbiAgICAgICAgICAgICAgOiB0aGlzLnRlbmFudExhYmVscz8uaW5hY3RpdmU7XHJcbiAgICAgICAgICAgIHRoaXMudGVuYW50RGV0YWlscy5zdGF0dXMgPSBpc0FjdGl2YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudERldGFpbHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnRlbmFudERldGFpbHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2V0U2xpZGVUb2dnbGVTdGF0dXMoaXNBY3RpdmF0ZSk7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdUZW5hbnRzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2xpZGUgdG9nZ2xlIGNoZWNrZWQgc3RhdHVzIGFuZCBsYWJlbC5cclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQWN0aXZhdGVcclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRTbGlkZVRvZ2dsZVN0YXR1cyhpc0FjdGl2YXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnNsaWRlVG9nZ2xlT3B0aW9uLmNoZWNrZWQgPSAhaXNBY3RpdmF0ZTtcclxuICAgIHRoaXMuc2xpZGVUb2dnbGVPcHRpb24ubGFiZWwgPSAhaXNBY3RpdmF0ZVxyXG4gICAgICA/IHRoaXMudGVuYW50TGFiZWxzPy5hY3RpdmVcclxuICAgICAgOiB0aGlzLnRlbmFudExhYmVscz8uaW5hY3RpdmU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudERldGFpbHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQ/Lm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkPy51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtaW5mbyBweC00IHBiLTRcIlxyXG4gIFtuZ0NsYXNzXT1cIlxyXG4gICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgID8gJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1iZy13aGl0ZSdcclxuICAgICAgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWJnLWJsdWUnXHJcbiAgXCJcclxuPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC1sZy00IGdhcC1tZC0zIGdhcC1zbS0yIGdhcC0zXCJcclxuICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdmbGV4LWNvbHVtbiBnYXAtMiBwYi0zJyA6ICdhbGlnbi1pdGVtLWNlbnRlcidcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLWxnLTQgZ2FwLW1kLTMgZ2FwLXNtLTMgZ2FwLTMgcHMtMCBhbGlnbi1pdGVtcy1tZC1jZW50ZXIgYWxpZ24taXRlbXMteGwtY2VudGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2ZsZXgtY29sdW1uJyA6ICcnXCJcclxuICAgID5cclxuICAgICAgPHBcclxuICAgICAgICBjbGFzcz1cIm1iLTAgaWVlZXNhLWhlYWRsaW5lLWxnLTMyIHB5LTNcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICcnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS10aXRsZSdcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgdGVuYW50RGV0YWlscz8uYXBwVGl0bGUgfX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC1sZy0yIGdhcC1tZC0yIGdhcC1zbS0yIGdhcC0yXCI+XHJcbiAgICAgICAgPHNwYW5cclxuICAgICAgICAgIGNsYXNzPVwibWItMCBpZWVlc2EtdGl0bGUtc20tMTQgbXQtMVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICdpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tYXBwLWlkJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgdGVuYW50TGFiZWxzPy5hcHBJZCB9fTpcclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAge3sgdGVuYW50RGV0YWlscz8uYXBwSWQgfX1cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVuYW50RGV0YWlscz8uYXBwSWQgIT09IHRlbmFudExhYmVscz8uc2FBcHBJZFwiPlxyXG4gICAgICAgICAgPG1hdC1kaXZpZGVyIFt2ZXJ0aWNhbF09XCJ0cnVlXCI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWItMCBtdC0xIGllZWVzYS10aXRsZS1zbS0xNCBpZWVlc2Etdmlldy10ZW5hbnQtaW5mby0tYXBwLXN0YXR1c1wiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJydcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyB0ZW5hbnRMYWJlbHM/LnN0YXR1cyB9fTpcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDxpZWVlc2Etc2xpZGUtdG9nZ2xlXHJcbiAgICAgICAgICAgIFtzbGlkZVRvZ2dsZV09XCJzbGlkZVRvZ2dsZU9wdGlvblwiXHJcbiAgICAgICAgICAgIChzbGlkZVRvZ2dsZUNoYW5nZSk9XCJvblNsaWRlVG9nZ2xlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvaWVlZXNhLXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxhXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWJ0bi1sYWJlbC1sZy1ib2xkLTE2IHRleHQtZGVjb3JhdGlvbi1ub25lIG10LWxnLTMgbXQteGwtNiBwLXNtLTAgcC1tZC0wXCJcclxuICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXHJcbiAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxyXG4gICAgICBbcm91dGVyTGlua109XCJ2aWV3VGVuYW50c1JvdXRlVXJsXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvLS1saW5rLW1vYmlsZScgOiAnaWVlZXNhLXZpZXctdGVuYW50LWluZm8tLWxpbmsnXCJcclxuICAgICAgPnt7IHRlbmFudExhYmVscz8udmlld0FsbEFwcHMgfX08L2FcclxuICAgID5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY2NvcmRpb24gaWVlZXNhLXZpZXctdGVuYW50LWluZm9fX2FjY29yZGlvbi0tYmx1ZS1iZ1wiXHJcbiAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAnaWVlZXNhLXZpZXctdGVuYW50LWluZm9fX2FjY29yZGlvbi0taW5mbycgOiAnJ1wiXHJcbiAgPlxyXG4gICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAqbmdGb3I9XCJcclxuICAgICAgICBsZXQgYWNjb3JkaW9uSW5mbyBvZiBhY2NvcmRpb25JbmZvTGlzdDtcclxuICAgICAgICB0cmFja0J5OiB0cmFja0J5QWNjb3JkaW9uRm5cclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiYWNjb3JkaW9uSW5mby5pZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjJcIj5cclxuICAgICAgICAgIDxpZWVlc2EtYWNjb3JkaW9uXHJcbiAgICAgICAgICAgIFthY2NvcmRpb25JbmZvXT1cImFjY29yZGlvbkluZm9cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19yb2xlcy1hbmQtcGVybWlzc2lvbnNcIlxyXG4gICAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgYWN0aW9uc1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNSb2xlc0FuZFBlcm1pc3Npb25zRXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC0zXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgICAgIGlzTW9iaWxlVmlldyA/ICdtYi0zIHB4LTQnIDogJ2llZWVzYS12aWV3LXRlbmFudC1pbmZvX19hY3Rpb25zJ1xyXG4gICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdC10ZXJ0aWFyeS1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAncHgtMiBweS0yJ1wiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgY29uc3RhbnRzLnZpZXdSb2xlc0FuZFBlcm1pc3Npb25zLmFjdGlvbkJ1dHRvbkxhYmVscy5hZGRSb2xlXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWF0LXRlcnRpYXJ5LWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICdweC0yIHB5LTInXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICBjb25zdGFudHMudmlld1JvbGVzQW5kUGVybWlzc2lvbnMuYWN0aW9uQnV0dG9uTGFiZWxzXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFBlcm1pc3Npb25zUm9sZXNcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGNvbXBvbmVudCAqbmdJZj1cImlzUm9sZXNBbmRQZXJtaXNzaW9uc0V4cGFuZGVkXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImllZWVzYS12aWV3LXRlbmFudC1pbmZvX19yb2xlcy1hbmQtcGVybWlzc2lvbnNfX2RpdmlkZXJcIlxyXG4gICAgICAgICAgICAgID48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb2x1bW5TY2hlbWEubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZURhdGFJbmZvXT1cInRhYmxlRGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgICAgICAgICAgICAgW2NhcHRpb25dPVwicm9sZXNBbmRQZXJtaXNzaW9uc1RhYmxlQ2FwdGlvblwiXHJcbiAgICAgICAgICAgICAgICBbcGFnaW5hdG9yQ29uZmlnXT1cInBhZ2luYXRvckNvbmZpZ1wiXHJcbiAgICAgICAgICAgICAgICBbdGFibGVBY3Rpb25zXT1cInRhYmxlQWN0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICBbaXNTY3JvbGxTdXBwb3J0TWVzc2FnZU5lZWRlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbkFjdGlvbk1lbnVTaXplXT1cImljb25TaXplXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbkFjdGlvbnNdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFt0YWJsZUNvbHVtbnNIZWFkZXJUZXh0XT1cInJvbGVzQW5kUGVybWlzc2lvbnNUYWJsZUhlYWRlck5hbWVcIlxyXG4gICAgICAgICAgICAgICAgW3Njcm9sbGJhclN1cHBvcnRNZXNzYWdlXT1cIlxyXG4gICAgICAgICAgICAgICAgICByb2xlc0FuZFBlcm1pc3Npb25zVGFibGVTdXBwb3J0TWVzc2FnZVxyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbENvbHVtbkhlYWRlck51bWJlcl09XCJwZXJtaXNzaW9uc0NvbHVtbkNsYXNzTnVtYmVyXCJcclxuICAgICAgICAgICAgICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uVGFibGVQYWdpbmF0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgID48L2llZWVzYS1kYXRhLXRhYmxlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvaWVlZXNhLWFjY29yZGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaERlZmF1bHQ+XHJcbiAgICAgICAgICA8aWVlZXNhLWFjY29yZGlvblxyXG4gICAgICAgICAgW2FjY29yZGlvbkluZm9dPVwiYWNjb3JkaW9uSW5mb1wiXHJcbiAgICAgICAgICAoYWNjb3JkaW9uT3BlbmVkKT1cInNob3dUZW5hbnREZXRhaWxzKGFjY29yZGlvbkluZm8sICRldmVudClcIlxyXG4gICAgICAgID48L2llZWVzYS1hY2NvcmRpb24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=