@ieeesa-npm/groups 0.10.2 → 0.10.3

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.
@@ -20,8 +20,9 @@ import * as i1 from "@angular/material/dialog";
20
20
  import * as i2 from "./services/groups.service";
21
21
  import * as i3 from "@ieeesa-npm/utility";
22
22
  import * as i4 from "./services/user-permissions.service";
23
- import * as i5 from "@angular/common";
24
- import * as i6 from "@angular/material/button";
23
+ import * as i5 from "./services/group-permissions-map-service";
24
+ import * as i6 from "@angular/common";
25
+ import * as i7 from "@angular/material/button";
25
26
  /**
26
27
  * Groups component is a wrapper or container component for groups management reusable component and in this component integrates all group management functionalities and this will be entry component for managing groups when it is consumed in other applications.
27
28
  * @class GroupsComponent
@@ -39,13 +40,16 @@ export class GroupsComponent {
39
40
  // eslint-disable-next-line no-unused-vars
40
41
  globalErrorHandlerService,
41
42
  // eslint-disable-next-line no-unused-vars
42
- userPermissionsService) {
43
+ userPermissionsService,
44
+ // eslint-disable-next-line no-unused-vars
45
+ groupPermissionsService) {
43
46
  this.dialog = dialog;
44
47
  this.groupsService = groupsService;
45
48
  this.alertService = alertService;
46
49
  this.breakpointObserverService = breakpointObserverService;
47
50
  this.globalErrorHandlerService = globalErrorHandlerService;
48
51
  this.userPermissionsService = userPermissionsService;
52
+ this.groupPermissionsService = groupPermissionsService;
49
53
  this.destroy$ = new Subject();
50
54
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
55
  this.constants = screenTexts;
@@ -106,7 +110,7 @@ export class GroupsComponent {
106
110
  ' ' +
107
111
  this.viewGroupTexts?.minCharRequiredToSearch2;
108
112
  this.userGroupPermissions =
109
- this.userPermissionsService.filterUserGroupPermissions(this.userPermissions);
113
+ this.userPermissionsService.filterUserGroupPermissions(this.userPermissions, this.groupPermissionsService?.getGlobalGroupPermissions());
110
114
  this.groupsService.setUserGroupPermissions(this.userGroupPermissions);
111
115
  this.groupsService?.setAppConfig(this.apiBaseURL, this.userPermissions);
112
116
  this.getGroupTypes();
@@ -594,8 +598,8 @@ export class GroupsComponent {
594
598
  this.destroy$.next(true);
595
599
  this.destroy$.unsubscribe();
596
600
  }
597
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, deps: [{ token: i1.MatDialog }, { token: i2.GroupsService }, { token: i3.AlertsService }, { token: i3.BreakpointObserverService }, { token: i3.GlobalErrorHandlerService }, { token: i4.UserPermissionsService }], target: i0.ɵɵFactoryTarget.Component }); }
598
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GroupsComponent, isStandalone: true, selector: "ieeesa-groups", inputs: { groupsPageInfo: "groupsPageInfo", applicationId: "applicationId", apiBaseURL: "apiBaseURL", userPermissions: "userPermissions" }, providers: [AlertsService], ngImport: i0, template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo.groupsTitle }}\r\n </p>\r\n <div [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-groups__info__action'\">\r\n <button\r\n mat-button\r\n *ngIf=\"validateAccess(permissionType.CREATE_ROOT_GROUP)\"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"validateAccess(permissionType.CREATE_ROOT_GROUP)\"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <button\r\n mat-button\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.search\"\r\n (click)=\"onGroupSearch()\"\r\n type=\"button\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass search-group-icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <p\r\n class=\"ieeesa-body-md-16 order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7\"\r\n >\r\n {{ groupsPageInfo.groupsDescription }}\r\n </p>\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n ></ieeesa-tree>\r\n <div\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n class=\"d-flex flex-column flex-sm-row flex-md-row mt-4 justify-content-start justify-content-sm-end\"\r\n >\r\n <p class=\"px-sm-3 d-flex align-items-start ieeesa-label-lg-bold-16\">\r\n {{ constants?.viewGroups?.legend }}\r\n </p>\r\n <ieeesa-legend\r\n [legends]=\"groupsLegends\"\r\n [isSorting]=\"isSorting\"\r\n ></ieeesa-legend>\r\n </div>\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-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .mat-mdc-button{min-width:45px;padding:0 10px}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info .search-group-icon{height:1.5em;color:#00629b}.ieeesa-groups__info__heading,.ieeesa-groups__info__action{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px;font-size:1rem}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:baseline}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text{display:none}.ieeesa-groups .ieeesa-select-field .mat-mdc-select-min-line{color:#49454f}.ieeesa-groups .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-groups .ieeesa-search-field__button{background:none}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field{width:100%;border-radius:3px;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: SearchComponent, selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: SelectComponent, selector: "ieeesa-select", inputs: ["isSortNeeded", "dropdownOptions", "selectedOptions", "formControlName", "isMultiLevel", "isLabelAlignedLeft", "selectLabel", "isMultiSelect", "isDisabled", "isSearch", "placeholderText"], outputs: ["optionSelected", "optionSearched"] }, { kind: "component", type: TreeViewComponent, selector: "ieeesa-tree", inputs: ["parentGroupsInfo", "childGroupsInfo", "isGroupSearchOrFilterActive", "deletedGroupIdInfo", "userGroupPermissions"], outputs: ["toggleGroupClick", "createGroupClick", "editGroupClick", "deleteGroupClick", "viewRosterClick"] }, { kind: "component", type: LegendComponent, selector: "ieeesa-legend", inputs: ["legends", "isSorting"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
601
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, deps: [{ token: i1.MatDialog }, { token: i2.GroupsService }, { token: i3.AlertsService }, { token: i3.BreakpointObserverService }, { token: i3.GlobalErrorHandlerService }, { token: i4.UserPermissionsService }, { token: i5.GroupPermissionsMapService }], target: i0.ɵɵFactoryTarget.Component }); }
602
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: GroupsComponent, isStandalone: true, selector: "ieeesa-groups", inputs: { groupsPageInfo: "groupsPageInfo", applicationId: "applicationId", apiBaseURL: "apiBaseURL", userPermissions: "userPermissions" }, providers: [AlertsService], ngImport: i0, template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo.groupsTitle }}\r\n </p>\r\n <div [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-groups__info__action'\">\r\n <button\r\n mat-button\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"(validateAccess(permissionType.CREATE_ROOT_GROUP) || validateAccess(this.permissionType.MANAGE_ALL_GROUPS))\"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <button\r\n mat-button\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.search\"\r\n (click)=\"onGroupSearch()\"\r\n type=\"button\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass search-group-icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <p\r\n class=\"ieeesa-body-md-16 order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7\"\r\n >\r\n {{ groupsPageInfo.groupsDescription }}\r\n </p>\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n ></ieeesa-tree>\r\n <div\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n class=\"d-flex flex-column flex-sm-row flex-md-row mt-4 justify-content-start justify-content-sm-end\"\r\n >\r\n <p class=\"px-sm-3 d-flex align-items-start ieeesa-label-lg-bold-16\">\r\n {{ constants?.viewGroups?.legend }}\r\n </p>\r\n <ieeesa-legend\r\n [legends]=\"groupsLegends\"\r\n [isSorting]=\"isSorting\"\r\n ></ieeesa-legend>\r\n </div>\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-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .mat-mdc-button{min-width:45px;padding:0 10px}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info .search-group-icon{height:1.5em;color:#00629b}.ieeesa-groups__info__heading,.ieeesa-groups__info__action{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px;font-size:1rem}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:baseline}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text{display:none}.ieeesa-groups .ieeesa-select-field .mat-mdc-select-min-line{color:#49454f}.ieeesa-groups .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-groups .ieeesa-search-field__button{background:none}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field{width:100%;border-radius:3px;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.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: SearchComponent, selector: "ieeesa-search", inputs: ["formControlName", "placeholderLabel", "searchTerm", "supportMessage", "searchType", "minCharacterToSearch"], outputs: ["searchValue"] }, { kind: "component", type: SelectComponent, selector: "ieeesa-select", inputs: ["isSortNeeded", "dropdownOptions", "selectedOptions", "formControlName", "isMultiLevel", "isLabelAlignedLeft", "selectLabel", "isMultiSelect", "isDisabled", "isSearch", "placeholderText"], outputs: ["optionSelected", "optionSearched"] }, { kind: "component", type: TreeViewComponent, selector: "ieeesa-tree", inputs: ["parentGroupsInfo", "childGroupsInfo", "isGroupSearchOrFilterActive", "deletedGroupIdInfo", "userGroupPermissions"], outputs: ["toggleGroupClick", "createGroupClick", "editGroupClick", "deleteGroupClick", "viewRosterClick"] }, { kind: "component", type: LegendComponent, selector: "ieeesa-legend", inputs: ["legends", "isSorting"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton"], outputs: ["iconButtonClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
599
603
  }
600
604
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, decorators: [{
601
605
  type: Component,
@@ -608,8 +612,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
608
612
  TreeViewComponent,
609
613
  LegendComponent,
610
614
  IconButtonComponent,
611
- ], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo.groupsTitle }}\r\n </p>\r\n <div [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-groups__info__action'\">\r\n <button\r\n mat-button\r\n *ngIf=\"validateAccess(permissionType.CREATE_ROOT_GROUP)\"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"validateAccess(permissionType.CREATE_ROOT_GROUP)\"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <button\r\n mat-button\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.search\"\r\n (click)=\"onGroupSearch()\"\r\n type=\"button\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass search-group-icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <p\r\n class=\"ieeesa-body-md-16 order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7\"\r\n >\r\n {{ groupsPageInfo.groupsDescription }}\r\n </p>\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n ></ieeesa-tree>\r\n <div\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n class=\"d-flex flex-column flex-sm-row flex-md-row mt-4 justify-content-start justify-content-sm-end\"\r\n >\r\n <p class=\"px-sm-3 d-flex align-items-start ieeesa-label-lg-bold-16\">\r\n {{ constants?.viewGroups?.legend }}\r\n </p>\r\n <ieeesa-legend\r\n [legends]=\"groupsLegends\"\r\n [isSorting]=\"isSorting\"\r\n ></ieeesa-legend>\r\n </div>\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-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .mat-mdc-button{min-width:45px;padding:0 10px}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info .search-group-icon{height:1.5em;color:#00629b}.ieeesa-groups__info__heading,.ieeesa-groups__info__action{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px;font-size:1rem}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:baseline}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text{display:none}.ieeesa-groups .ieeesa-select-field .mat-mdc-select-min-line{color:#49454f}.ieeesa-groups .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-groups .ieeesa-search-field__button{background:none}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field{width:100%;border-radius:3px;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}\n"] }]
612
- }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.GroupsService }, { type: i3.AlertsService }, { type: i3.BreakpointObserverService }, { type: i3.GlobalErrorHandlerService }, { type: i4.UserPermissionsService }]; }, propDecorators: { groupsPageInfo: [{
615
+ ], encapsulation: ViewEncapsulation.None, providers: [AlertsService], template: "<div class=\"ieeesa-groups px-4\">\r\n <div\r\n class=\"ieeesa-groups__info d-flex justify-content-between pb-3\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__info--white-bg'\r\n : 'ieeesa-groups__info--blue-bg'\r\n \"\r\n >\r\n <p\r\n class=\"mb-0\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-title-lg-24 p-0'\r\n : 'ieeesa-headline-lg-32 ieeesa-groups__info__heading'\r\n \"\r\n >\r\n {{ groupsPageInfo.groupsTitle }}\r\n </p>\r\n <div [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-groups__info__action'\">\r\n <button\r\n mat-button\r\n *ngIf=\"\r\n validateAccess(permissionType.CREATE_ROOT_GROUP) ||\r\n validateAccess(this.permissionType.MANAGE_ALL_GROUPS)\r\n \"\r\n class=\"ieeesa-groups__create-subgroup mat-tertiary-button d-none d-sm-none d-md-block d-lg-block d-xl-block\"\r\n (click)=\"openCreateGroupForm()\"\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.addGroup\"\r\n >\r\n {{ constants?.viewGroups?.addGroup }}\r\n </button>\r\n </div>\r\n <div\r\n class=\"d-flex d-sm-flex d-md-none d-lg-none d-xl-none ieeesa-groups__mobile-icons gap-2\"\r\n >\r\n <ieeesa-icon-button\r\n [iconButton]=\"createGroupIcon\"\r\n *ngIf=\"(validateAccess(permissionType.CREATE_ROOT_GROUP) || validateAccess(this.permissionType.MANAGE_ALL_GROUPS))\"\r\n (iconButtonClick)=\"openCreateGroupForm()\"\r\n >\r\n </ieeesa-icon-button>\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterGroupIcon\"\r\n (iconButtonClick)=\"showGroupFilter()\"\r\n >\r\n </ieeesa-icon-button>\r\n <button\r\n mat-button\r\n [attr.aria-label]=\"constants?.viewGroups?.ariaLabel?.search\"\r\n (click)=\"onGroupSearch()\"\r\n type=\"button\"\r\n >\r\n <i class=\"fa-solid fa-magnifying-glass search-group-icon\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div\r\n class=\"ieeesa-groups__actions\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-groups__actions--white-bg'\r\n : 'ieeesa-groups__actions--blue-bg'\r\n \"\r\n >\r\n <div class=\"ieeesa-groups__actions--search row\">\r\n <p\r\n class=\"ieeesa-body-md-16 order-2 order-sm-1 col-12 col-md-7 col-lg-7 col-xl-7\"\r\n >\r\n {{ groupsPageInfo.groupsDescription }}\r\n </p>\r\n <div\r\n *ngIf=\"\r\n ((isGroupSearchActive || isGroupFilterActive) && isMobileView) ||\r\n !isMobileView\r\n \"\r\n class=\"order-1 order-sm-2 col-12 col-md-5 col-lg-5 col-xl-5 d-flex flex-column\"\r\n >\r\n <ieeesa-search\r\n *ngIf=\"isGroupSearchActive || !isMobileView\"\r\n (searchValue)=\"onGroupSearchClick($event)\"\r\n [searchTerm]=\"trimmedSearchTerm\"\r\n [searchType]=\"searchType\"\r\n [placeholderLabel]=\"searchPlaceHolderText\"\r\n [minCharacterToSearch]=\"minCharacterToSearch\"\r\n [supportMessage]=\"supportMessage\"\r\n ></ieeesa-search>\r\n\r\n <ieeesa-select\r\n *ngIf=\"isGroupFilterActive || !isMobileView\"\r\n class=\"align-self-end pt-lg-4 pt-md-4 pt-xl-4\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectGroupOptions\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onGroupTypeFiltered($event)\"\r\n [placeholderText]=\"filterPlaceHolderText\"\r\n [selectedOptions]=\"selectedGroupType\"\r\n ></ieeesa-select>\r\n </div>\r\n </div>\r\n <ieeesa-tree\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n [parentGroupsInfo]=\"parentGroupsInfo\"\r\n [childGroupsInfo]=\"childGroupsInfo\"\r\n [deletedGroupIdInfo]=\"deletedGroupId\"\r\n [isGroupSearchOrFilterActive]=\"isGroupSearchOrFilterActive\"\r\n [userGroupPermissions]=\"userGroupPermissions\"\r\n (toggleGroupClick)=\"getGroups($event)\"\r\n (createGroupClick)=\"openCreateGroupForm($event)\"\r\n (deleteGroupClick)=\"openDeleteConfirmationModal($event)\"\r\n (viewRosterClick)=\"viewRoster($event)\"\r\n (editGroupClick)=\"openEditGroupForm($event)\"\r\n ></ieeesa-tree>\r\n <div\r\n *ngIf=\"parentGroupsInfo && parentGroupsInfo.length > 0\"\r\n class=\"d-flex flex-column flex-sm-row flex-md-row mt-4 justify-content-start justify-content-sm-end\"\r\n >\r\n <p class=\"px-sm-3 d-flex align-items-start ieeesa-label-lg-bold-16\">\r\n {{ constants?.viewGroups?.legend }}\r\n </p>\r\n <ieeesa-legend\r\n [legends]=\"groupsLegends\"\r\n [isSorting]=\"isSorting\"\r\n ></ieeesa-legend>\r\n </div>\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-groups{background-color:#f2f2f2}.ieeesa-groups__mobile-icons .mat-mdc-button{min-width:45px;padding:0 10px}.ieeesa-groups__mobile-icons .ieeesa-icon-button__svg{height:1.5em!important;width:1.5em!important}.ieeesa-groups__info--white-bg{background-color:#fff;padding:16px 24px 0}.ieeesa-groups__info .search-group-icon{height:1.5em;color:#00629b}.ieeesa-groups__info__heading,.ieeesa-groups__info__action{padding:12px 0}.ieeesa-groups__actions{background-color:#fff;box-shadow:0 2px #00b5e2 inset;padding:16px 24px 48px}.ieeesa-groups__actions--white-bg{background-color:#fff;box-shadow:none}.ieeesa-groups .ieeesa-select-field__label{width:max-content;padding-right:9px;font-size:1rem}.ieeesa-groups .ieeesa-select-field__label-left{display:flex;align-items:baseline}.ieeesa-groups .ieeesa-select-field .mat-mdc-form-field{width:auto}.ieeesa-groups .ieeesa-select-field .ieeesa-form-support-text{display:none}.ieeesa-groups .ieeesa-select-field .mat-mdc-select-min-line{color:#49454f}.ieeesa-groups .ieeesa-search-field__search-icon{color:#00629b}.ieeesa-groups .ieeesa-search-field__button{background:none}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field{width:100%;border-radius:3px;background:linear-gradient(0deg,#00629b0d 0% 100%),#fffbfe;font-size:1rem;box-shadow:0 0 4px #00000080 inset}.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__leading,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__notch,.ieeesa-groups .ieeesa-search-field .mat-mdc-form-field .mdc-notched-outline__trailing{border:none}\n"] }]
616
+ }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.GroupsService }, { type: i3.AlertsService }, { type: i3.BreakpointObserverService }, { type: i3.GlobalErrorHandlerService }, { type: i4.UserPermissionsService }, { type: i5.GroupPermissionsMapService }]; }, propDecorators: { groupsPageInfo: [{
613
617
  type: Input
614
618
  }], applicationId: [{
615
619
  type: Input
@@ -618,4 +622,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
618
622
  }], userPermissions: [{
619
623
  type: Input
620
624
  }] } });
621
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFFZixVQUFVLEVBQ1YsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7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QUNmLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGFBQWEsQ0FBQzs2UUF3Q2pCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDcmVhdGVHcm91cENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtZ3JvdXAvY3JlYXRlLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQge1xyXG4gIE1vZGFsQ29tcG9uZW50LFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gIEljb25CdXR0b24sXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIFNlbGVjdENvbXBvbmVudCxcclxuICBMZWdlbmRDb21wb25lbnQsXHJcbiAgTGVnZW5kLFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgU2VhcmNoQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JvdXBUeXBlLCBHcm91cFR5cGVDb25maWdWYWx1ZSB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBNb2RhbFR5cGUsXHJcbiAgQWxlcnRUeXBlLFxyXG4gIEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFJvc3RlckZ1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Jvc3Rlci1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgR2V0R3JvdXBzUGF5bG9hZCB9IGZyb20gJy4vbW9kZWxzL3ZpZXctZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBEZWxldGVHcm91cFBheWxvYWQgfSBmcm9tICcuL21vZGVscy9kZWxldGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRVc2VyUm9zdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FkZC11c2VyLXJvc3Rlci9hZGQtdXNlci1yb3N0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmlld1Jvc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy92aWV3LXJvc3Rlci92aWV3LXJvc3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvIH0gZnJvbSAnLi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEVkaXRVc2VyUm9sZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEdyb3VwUGVybWlzc2lvbixcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuL21vZGVscy9ncm91cC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBHcm91cHMgY29tcG9uZW50IGlzIGEgd3JhcHBlciBvciBjb250YWluZXIgY29tcG9uZW50IGZvciBncm91cHMgbWFuYWdlbWVudCByZXVzYWJsZSBjb21wb25lbnQgYW5kIGluIHRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgYWxsIGdyb3VwIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0aWVzIGFuZCB0aGlzIHdpbGwgYmUgZW50cnkgY29tcG9uZW50IGZvciBtYW5hZ2luZyBncm91cHMgd2hlbiBpdCBpcyBjb25zdW1lZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAqIEBjbGFzcyBHcm91cHNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZ3JvdXBzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFNlYXJjaENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyb3Vwcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIHZpZXdHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cHM7XHJcbiAgY3JlYXRlR3JvdXBUZXh0ID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZUdyb3VwO1xyXG4gIGVkaXRHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRHcm91cDtcclxuICBlZGl0VXNlclJvbGVzVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uZWRpdFVzZXJSb2xlcztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBpc0dyb3VwU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgaXNHcm91cEZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGNoaWxkR3JvdXBzSW5mbyE6IEdyb3VwSW5mb1tdO1xyXG4gIHNlbGVjdGVkR3JvdXBUeXBlITogU2VsZWN0T3B0aW9uO1xyXG4gIHBhcmVudEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RHcm91cE9wdGlvbnMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBkZWxldGVkR3JvdXBJZCE6IHN0cmluZztcclxuICBkZWxldGVHcm91cE5hbWUhOiBzdHJpbmc7XHJcbiAgZ3JvdXBUeXBlcyE6IEdyb3VwVHlwZUNvbmZpZ1ZhbHVlO1xyXG4gIHNlYXJjaFBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5zZWFyY2g7XHJcbiAgZmlsdGVyUGxhY2VIb2xkZXJUZXh0OiBzdHJpbmcgPSB0aGlzLnZpZXdHcm91cFRleHRzPy5wbGFjZWhvbGRlclRleHQ/LmZpbHRlcjtcclxuICBjcmVhdGVHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMSxcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmFkZCxcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmNyZWF0ZUdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgfTtcclxuICBmaWx0ZXJHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMixcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmZpbHRlcixcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmZpbHRlckdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgfTtcclxuICBncm91cHNMZWdlbmRzOiBMZWdlbmRbXSA9IFtdO1xyXG4gIGdldEdyb3Vwc1BheWxvYWQ6IEdldEdyb3Vwc1BheWxvYWQgPSB7IGdyb3VwSWQ6ICcnLCBncm91cFR5cGVJZDogJycgfTtcclxuICBASW5wdXQoKSBncm91cHNQYWdlSW5mbzoge1xyXG4gICAgZ3JvdXBzVGl0bGU6IHN0cmluZztcclxuICAgIGdyb3Vwc0Rlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgfSA9IHtcclxuICAgIGdyb3Vwc1RpdGxlOiB0aGlzLnZpZXdHcm91cFRleHRzPy5ncm91cHNUaXRsZSxcclxuICAgIGdyb3Vwc0Rlc2NyaXB0aW9uOiB0aGlzLnZpZXdHcm91cFRleHRzPy5ncm91cHNEZXNjcmlwdGlvbixcclxuICB9O1xyXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uSWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBpQmFzZVVSTCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VyUGVybWlzc2lvbnMhOiBVc2VyUGVybWlzc2lvbltdO1xyXG4gIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGU7XHJcbiAgZnVuY3Rpb25UeXBlITogR3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICBpc1NvcnRpbmcgPSB0cnVlO1xyXG4gIGNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIG1pbkNoYXJhY3RlclRvU2VhcmNoID0gMztcclxuICB0cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gIHVzZXJHcm91cFBlcm1pc3Npb25zITogR3JvdXBQZXJtaXNzaW9uW107XHJcbiAgc3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyU2VydmljZVxyXG4gICAgICAuZ2V0QnJlYWtwb2ludCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiB7IG1hdGNoZXM6IGJvb2xlYW4gfSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2JpbGVWaWV3ID0gcmVzdWx0Py5tYXRjaGVzO1xyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ub3Blbk1vZGFsTm90aWZpZXI/Lm5leHQoR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVIpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBncm91cHMgY29tcG9uZW50LlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3VwcG9ydE1lc3NhZ2UgPVxyXG4gICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDEgK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLm1pbkNoYXJhY3RlclRvU2VhcmNoICtcclxuICAgICAgJyAnICtcclxuICAgICAgdGhpcy52aWV3R3JvdXBUZXh0cz8ubWluQ2hhclJlcXVpcmVkVG9TZWFyY2gyO1xyXG4gICAgdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9ucyA9XHJcbiAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zU2VydmljZS5maWx0ZXJVc2VyR3JvdXBQZXJtaXNzaW9ucyhcclxuICAgICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1xyXG4gICAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFVzZXJHcm91cFBlcm1pc3Npb25zKHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmdldEdyb3VwVHlwZXMoKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ub3Blbk1vZGFsTm90aWZpZXJcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUpIHtcclxuICAgICAgICAgIHRoaXMub3BlbkVkaXRVc2VyUm9sZXNNb2RhbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuQWRkVXNlclJvc3Rlck1vZGFsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgcGVybWlzc2lvblR5cGUsXHJcbiAgICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBjcmVhdGUgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IFtwYXJlbnRHcm91cEluZm9dIC1BbiBvcHRpb25hbCBwYXJhbWV0ZXIuIFBhcmVudCBncm91cCBpbmZvIHRvIGJlIHBhc3NlZCBmb3IgY3JlYXRlIGNoaWxkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQ3JlYXRlR3JvdXBGb3JtKHBhcmVudEdyb3VwSW5mbz86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRTZWxlY3RlZEdyb3VwSW5mbyhwYXJlbnRHcm91cEluZm8gPz8gdW5kZWZpbmVkKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURSk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLmNyZWF0ZUdyb3VwVGV4dD8uaGVhZGluZyxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVHcm91cENvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlPy5DUkVBVEU7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWNyZWF0ZS1ncm91cCcsIHBhcmVudEdyb3VwSW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IGdyb3VwIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBwYXJhbSB7RWRpdEdyb3VwQW5kUGFyZW50SW5mb30gZWRpdEdyb3VwSW5mbyAtZWRpdGluZyBncm91cCBhbmQgaXRzIHBhcmVudCBncm91cCBpbmZvIHRvIGJlIHBhc3NlZCBmb3IgcG9wdWxhdGluZyBlZGl0IGdyb3VwIGZvcm0gZmllbGRzLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuRWRpdEdyb3VwRm9ybShlZGl0R3JvdXBJbmZvOiBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldFNlbGVjdGVkR3JvdXBJbmZvKFxyXG4gICAgICBlZGl0R3JvdXBJbmZvPy5ncm91cEluZm8sXHJcbiAgICAgIGVkaXRHcm91cEluZm8/LnBhcmVudEdyb3VwSW5mb1xyXG4gICAgKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkVESVQpO1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogZWRpdEdyb3VwSW5mbz8uZ3JvdXBJbmZvPy5ncm91cE5hbWUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQ3JlYXRlR3JvdXBDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVDtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtZWRpdC1ncm91cCcsIGVkaXRHcm91cEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgZWRpdCB1c2VyIHJvbGVzIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuRWRpdFVzZXJSb2xlc01vZGFsKCk6IHZvaWQge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRVc2VySW5mbyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0U2VsZWN0ZWRVc2VySW5mbygpO1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogc2VsZWN0ZWRVc2VySW5mbz8ubmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBFZGl0VXNlclJvbGVzQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZSh0aGlzLmZ1bmN0aW9uVHlwZSk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWVkaXQtdXNlci1yb2xlcycpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgYWRkIHVzZXJzIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQWRkVXNlclJvc3Rlck1vZGFsKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogdGhpcy5hZGRVc2VyUm9zdGVyVGV4dHM/LmhlYWRpbmcsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQWRkVXNlclJvc3RlckNvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUjtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUodGhpcy5mdW5jdGlvblR5cGUpO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1hZGQtdXNlci1yb3N0ZXInKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIHVzZXJzIG1vZGFsIGFuZCBjYWxscyBvcGVuTW9kYWwgbWV0aG9kLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvfSBncm91cFxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2aWV3Um9zdGVyKGdyb3VwOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IGdyb3VwPy5ncm91cE5hbWUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogVmlld1Jvc3RlckNvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STV9BTkRfQ09OVEVOVCxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0U2VsZWN0ZWRHcm91cEluZm8oZ3JvdXApO1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUjtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkVESVQpO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS12aWV3LXJvc3RlcicpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyBtb2RhbCBjb21wb25lbnQgd2l0aCBmb3IgcmVjZWl2ZWQgcGFyYW1zIGFuZCBoYW5kbGVzIGZvcm0gc3VibWlzc2lvbiBzdWNjZXNzIGFuZCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHsqfSBkaWFsb2dPcHRpb25zXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjbGFzc05hbWVdXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8taW5mZXJyYWJsZS10eXBlcywgbm8tdW51c2VkLXZhcnNcclxuICBvcGVuTW9kYWwoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgZGlhbG9nT3B0aW9uczogYW55LFxyXG4gICAgY2xhc3NOYW1lPzogc3RyaW5nLFxyXG4gICAgZ3JvdXBJbmZvPzogR3JvdXBJbmZvIHwgRWRpdEdyb3VwQW5kUGFyZW50SW5mb1xyXG4gICk6IHZvaWQge1xyXG4gICAgY2xhc3NOYW1lID0gY2xhc3NOYW1lID8/ICcnO1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkaWFsb2dPcHRpb25zLFxyXG4gICAgICB3aWR0aDpcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuVklFV19ST1NURVIgfHxcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFIHx8XHJcbiAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUlxyXG4gICAgICAgICAgPyAnJ1xyXG4gICAgICAgICAgOiAnYXV0bycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWRpYWxvZycsIGNsYXNzTmFtZV0sXHJcbiAgICAgIGFyaWFNb2RhbDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5zdWJtaXRGb3JtUmVzcG9uc2VcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55LCBuby11bnVzZWQtdmFyc1xyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIHN3aXRjaCAodGhpcy5mdW5jdGlvblR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURToge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNyZWF0ZUdyb3VwSW5mbyA9IGdyb3VwSW5mbyBhcyBHcm91cEluZm87XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGNyZWF0ZUdyb3VwSW5mbykgdGhpcy5nZXRHcm91cHMoY3JlYXRlR3JvdXBJbmZvKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkVESVQ6IHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICB0aGlzLmVkaXRHcm91cFRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzUGFyZW50R3JvdXBDaGFuZ2VkID1cclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoKTtcclxuICAgICAgICAgICAgY29uc3QgZWRpdEdyb3VwSW5mbyA9IGdyb3VwSW5mbyBhcyBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvO1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZS5pZCAhPT0gJycpXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChlZGl0R3JvdXBJbmZvPy5wYXJlbnRHcm91cEluZm8/Lmdyb3VwSWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNQYXJlbnRHcm91cENoYW5nZWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGUuUkVBU1NJR05fUEFSRU5UX0dST1VQKTtcclxuICAgICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0UGFyZW50R3JvdXBDaGFuZ2VTdGF0dXMoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLmdldEdyb3VwcyhlZGl0R3JvdXBJbmZvLnBhcmVudEdyb3VwSW5mbyk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVF9ST1NURVJfVVNFUl9ST0xFOiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5jYW5TaG93TWVzc2FnZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRSb3N0ZXJGdW5jdGlvblR5cGUoXHJcbiAgICAgICAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkFERF9VU0VSX1RPX1JPU1RFUjoge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0Um9zdGVyRnVuY3Rpb25UeXBlKFxyXG4gICAgICAgICAgICAgIFJvc3RlckZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudEluc3RhbmNlPy5mb3JtQ2FuY2VsXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUiB8fFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld1Jvc3Rlcih0aGlzLmdyb3Vwc1NlcnZpY2Uuc2VsZWN0ZWRHcm91cEluZm8gYXMgR3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgPy5hZnRlck9wZW5lZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUiB8fFxyXG4gICAgICAgICAgdGhpcy5mdW5jdGlvblR5cGUgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICA/LmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwpIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdSb3N0ZXIodGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgdGhlIGNvbmZpcm1hdGlvbiBtb2RhbCB0byBnZXQgdXNlciBjb25maXJtYXRpb24gdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBncm91cC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbChncm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgY29uZmlybWF0aW9uSW5mbyA9IHNjcmVlblRleHRzPy5kZWxldGVHcm91cD8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwTW9kYWxPcHRpb25zID0ge1xyXG4gICAgICBsZWZ0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTpcclxuICAgICAgICBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlICsgZ3JvdXBJbmZvPy5ncm91cE5hbWUgKyAnPycsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiB0aGlzLmFsaWdubWVudFR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRlbGV0ZUdyb3VwTW9kYWxPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlR3JvdXAoZ3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUaGlzIG1ldGhvZCBzZW5kcyBBUEkgUmVxdWVzdCB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGdyb3VwIGFuZCBoYW5kbGVzIHRoZSBzdWNjZXNzIGFuZCBlcnJvciByZXNwb25zZSBvZiB0aGUgaHR0cCByZXF1ZXN0LlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGRlbGV0ZUdyb3VwKGdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWxldGVHcm91cFRleHQgPSBzY3JlZW5UZXh0cz8uZGVsZXRlR3JvdXA7XHJcbiAgICB0aGlzLmRlbGV0ZUdyb3VwTmFtZSA9IGdyb3VwSW5mbz8uZ3JvdXBOYW1lO1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBQYXlsb2FkOiBEZWxldGVHcm91cFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBncm91cElkOiBncm91cEluZm8/Lmdyb3VwSWQsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVHcm91cChkZWxldGVHcm91cFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5kZWxldGVkR3JvdXBJZCA9IGdyb3VwSW5mbz8uZ3JvdXBJZDtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBncm91cEluZm8/Lmdyb3VwTmFtZSArIGRlbGV0ZUdyb3VwVGV4dD8ubWVzc2FnZT8uc3VjY2Vzcz8uZGVsZXRpb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBzZWFyY2ggZmllbGQgb24gY2xpY2sgb2Ygc2VhcmNoIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvbkdyb3VwU2VhcmNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgRmlsdGVyIGJ5IGRyb3Bkb3duIG9wdGlvbnMgb24gY2xpY2sgb2YgZmlsdGVyIGljb24gaW4gY2FzZSBvZiBtb2JpbGUgdmlld1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93R3JvdXBGaWx0ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlIHRvIHRydWUgYW5kIGxvYWRzIHRoZSBncm91cHMgdGhvc2UgYXJlIGNvbmZpZ3VyZWQgd2l0aCBzZWxlY3RlZCBncm91cCB0eXBlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hUZXJtXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG5cclxuICBvbkdyb3VwU2VhcmNoQ2xpY2soc2VhcmNoVGVybTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gc2VhcmNoVGVybS50cmltKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGUuU0VBUkNIKTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0gJiZcclxuICAgICAgKHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zWzBdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKSByZXR1cm47XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlID0gdGhpcy5zZWxlY3RHcm91cE9wdGlvbnNbMF07XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9ICEhdGhpcy50cmltbWVkU2VhcmNoVGVybTtcclxuICAgIHRoaXMub25Hcm91cFNlYXJjaCgpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5ncm91cHNCeU5hbWVBY3JvbnltKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSBbXTtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBzZWxlY3QgZ3JvdXAgdHlwZSBvcHRpb25zIGZyb20gZ3JvdXBUeXBlcyByZXNwb25zZVxyXG4gICAqIEByZXR1cm4geyp9ICB7U2VsZWN0T3B0aW9uW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZU9wdGlvbnMoKTogU2VsZWN0T3B0aW9uW10ge1xyXG4gICAgdGhpcy5sZWdlbmRDb2xvcigpO1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICAgIGdyb3VwVHlwZU9wdGlvbnMucHVzaCh7XHJcbiAgICAgIGlkOiAnJyxcclxuICAgICAgbmFtZTogdGhpcy52aWV3R3JvdXBUZXh0cz8uYWxsR3JvdXBUeXBlc09wdGlvbixcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5ncm91cFR5cGVzKT8uZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBncm91cFR5cGVPcHRpb25zLnB1c2goeyBpZDogbm9kZVswXSwgbmFtZTogbm9kZVsxXT8ubmFtZSB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGdyb3VwVHlwZU9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgbGVnZW5kIGNvbG9yIGZyb20gZ3JvdXBUeXBlcyByZXNwb25zZVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBsZWdlbmRDb2xvcigpOiB2b2lkIHtcclxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ3JvdXBUeXBlcyk/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgdGhpcy5ncm91cHNMZWdlbmRzPy5wdXNoKHtcclxuICAgICAgICBjb2xvcjogbm9kZVsxXT8ubGVnZW5kQ29sb3IsXHJcbiAgICAgICAgbGFiZWw6IG5vZGVbMV0/Lm5hbWUsXHJcbiAgICAgICAgaGllcmFyY2h5OiBub2RlWzFdPy5oaWVyYXJjaHksXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSBmbGFnIGFuZCBsb2FkcyBwYXJlbnQgZ3JvdXAgaW5mbyBhcyBwZXIgc2VsZWN0ZWQgZmlsdGVyIG9wdGlvbi5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wdGlvbn0gZXZlbnRcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cFR5cGVGaWx0ZXJlZChldmVudDogU2VsZWN0T3B0aW9uKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlID0gZXZlbnQ7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9ICEhdGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8uaWQ7XHJcbiAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgIGdyb3VwSWQ6ICcnLFxyXG4gICAgICBncm91cFR5cGVJZDogdGhpcy5zZWxlY3RlZEdyb3VwVHlwZT8uaWQgYXMgc3RyaW5nLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2hvd0dyb3VwRmlsdGVyKCk7XHJcbiAgICB0aGlzLnRyaW1tZWRTZWFyY2hUZXJtID0gJyc7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlPy5GSUxURVIpO1xyXG4gICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgYWxsIHRoZSBwYXJlbnQgZ3JvdXBzIGluZm9ybWF0aW9uLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cHMoZ3JvdXA/OiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgICAgZ3JvdXBJZDogZ3JvdXA/Lmdyb3VwSWQgPz8gJycsXHJcbiAgICAgICAgZ3JvdXBUeXBlSWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmdldEdyb3Vwc1BheWxvYWQuZ3JvdXBUeXBlSWQgPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzUGF5bG9hZCA9IHtcclxuICAgICAgICBncm91cElkOiAnJyxcclxuICAgICAgICBncm91cFR5cGVJZDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3Vwcyh0aGlzLmdldEdyb3Vwc1BheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2U/LnN0YXR1cykge1xyXG4gICAgICAgICAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgICB0aGlzLmNoaWxkR3JvdXBzSW5mbyA9IHRoaXMudmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IHRoaXMudmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgZ3JvdXBUeXBlIGluZm8gd2l0aCBncm91cCByZXNwb25zZSBmcm9tIGdyb3VwVHlwZSByZXNwb25zZVxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvW119IHJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7Kn0gIHtHcm91cEluZm9bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U6IEdyb3VwSW5mb1tdKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmVzcG9uc2U/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgY29uc3QgZ3JvdXBUeXBlSW5mbzogR3JvdXBUeXBlID0gdGhpcy5ncm91cFR5cGVzW25vZGUuZ3JvdXBUeXBlXTtcclxuICAgICAgbm9kZS5ncm91cFR5cGVJbmZvID0gZ3JvdXBUeXBlSW5mbztcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyB0aGUgZ3JvdXAgdHlwZXMuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3VwVHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3VwVHlwZXMoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3VwVHlwZXMgPSB0aGlzLmdyb3Vwc1NlcnZpY2U/LmdldEZvcm1hdHRlZEdyb3VwVHlwZXMoXHJcbiAgICAgICAgICAgICAgcmVzPy5ib2R5XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zID0gdGhpcy5nZXRHcm91cFR5cGVPcHRpb25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUgPSB0aGlzLnNlbGVjdEdyb3VwT3B0aW9uc1swXTtcclxuICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGFsZXJ0cyBmb3Igc3VjY2VzcywgZXJyb3IgYW5kIHdhcm5pbmcuXHJcbiAgICogQHBhcmFtIHsoc3RyaW5nIHwgc3RyaW5nW10pfSBtZXNzYWdlIC1zdWNjZXNzIG9yIGVycm9yIG9yIHdhcm5pbmcgbWVzc2FnZS5cclxuICAgKiBAcGFyYW0ge0FsZXJ0VHlwZX0gYWxlcnRUeXBlXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dBbGVydE1lc3NhZ2UoYWxlcnRUeXBlOiBBbGVydFR5cGUsIG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICBhbGVydFR5cGU6IGFsZXJ0VHlwZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDYXB0dXJlcyB0aGUgc2VydmVyIHNpZGUgZXJyb3JzIGFuZCBoYW5kbGVzIGl0IGJhc2VkIG9uIHRoZSBjdXN0b20gb3IgSHR0cCBlcnJvcnMuXHJcbiAgICogQHBhcmFtIHtIdHRwRXJyb3JSZXNwb25zZX0gZXJyb3JcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaGFuZGxlRXJyb3JzKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXJyb3JDb2Rlczogc3RyaW5nW10gPSBlcnJvcj8uZXJyb3I/LmJvZHk/LmVycm9yQ29kZXM7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShlcnJvckNvZGVzKSkge1xyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2U6IHN0cmluZ1tdID1cclxuICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnBhcnNlRXJyb3JNZXNzYWdlKGVycm9yQ29kZXMpO1xyXG4gICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMDgnKSkge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZVswXSA9IHRoaXMuZGVsZXRlR3JvdXBOYW1lICsgZXJyb3JNZXNzYWdlPy5bMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKEFsZXJ0VHlwZS5FUlJPUiwgZXJyb3JNZXNzYWdlKTtcclxuICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDEwJykpIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IFtdO1xyXG4gICAgfSBlbHNlIGlmIChlcnJvciAmJiBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XHJcbiAgICAgIHRoaXMuZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZT8uaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaWVlZXNhLWdyb3VwcyBweC00XCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19pbmZvIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBwYi0zXCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICA/ICdpZWVlc2EtZ3JvdXBzX19pbmZvLS13aGl0ZS1iZydcclxuICAgICAgICA6ICdpZWVlc2EtZ3JvdXBzX19pbmZvLS1ibHVlLWJnJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8cFxyXG4gICAgICBjbGFzcz1cIm1iLTBcIlxyXG4gICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICAgID8gJ2llZWVzYS10aXRsZS1sZy0yNCBwLTAnXHJcbiAgICAgICAgICA6ICdpZWVlc2EtaGVhZGxpbmUtbGctMzIgaWVlZXNhLWdyb3Vwc19faW5mb19faGVhZGluZydcclxuICAgICAgXCJcclxuICAgID5cclxuICAgICAge3sgZ3JvdXBzUGFnZUluZm8uZ3JvdXBzVGl0bGUgfX1cclxuICAgIDwvcD5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwiaXNNb2JpbGVWaWV3ID8gJ3AtMCcgOiAnaWVlZXNhLWdyb3Vwc19faW5mb19fYWN0aW9uJ1wiPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgICpuZ0lmPVwidmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApXCJcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2NyZWF0ZS1zdWJncm91cCBtYXQtdGVydGlhcnktYnV0dG9uIGQtbm9uZSBkLXNtLW5vbmUgZC1tZC1ibG9jayBkLWxnLWJsb2NrIGQteGwtYmxvY2tcIlxyXG4gICAgICAgIChjbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKClcIlxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy52aWV3R3JvdXBzPy5hcmlhTGFiZWw/LmFkZEdyb3VwXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cz8udmlld0dyb3Vwcz8uYWRkR3JvdXAgfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1zbS1mbGV4IGQtbWQtbm9uZSBkLWxnLW5vbmUgZC14bC1ub25lIGllZWVzYS1ncm91cHNfX21vYmlsZS1pY29ucyBnYXAtMlwiXHJcbiAgICA+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJjcmVhdGVHcm91cEljb25cIlxyXG4gICAgICAgICpuZ0lmPVwidmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIm9wZW5DcmVhdGVHcm91cEZvcm0oKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJmaWx0ZXJHcm91cEljb25cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwic2hvd0dyb3VwRmlsdGVyKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgbWF0LWJ1dHRvblxyXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiY29uc3RhbnRzPy52aWV3R3JvdXBzPy5hcmlhTGFiZWw/LnNlYXJjaFwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uR3JvdXBTZWFyY2goKVwiXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgID5cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLW1hZ25pZnlpbmctZ2xhc3Mgc2VhcmNoLWdyb3VwLWljb25cIj48L2k+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19hY3Rpb25zXCJcclxuICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICBpc01vYmlsZVZpZXdcclxuICAgICAgICA/ICdpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS13aGl0ZS1iZydcclxuICAgICAgICA6ICdpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS1ibHVlLWJnJ1xyXG4gICAgXCJcclxuICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0tc2VhcmNoIHJvd1wiPlxyXG4gICAgICA8cFxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTYgb3JkZXItMiBvcmRlci1zbS0xIGNvbC0xMiBjb2wtbWQtNyBjb2wtbGctNyBjb2wteGwtN1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBncm91cHNQYWdlSW5mby5ncm91cHNEZXNjcmlwdGlvbiB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgKChpc0dyb3VwU2VhcmNoQWN0aXZlIHx8IGlzR3JvdXBGaWx0ZXJBY3RpdmUpICYmIGlzTW9iaWxlVmlldykgfHxcclxuICAgICAgICAgICFpc01vYmlsZVZpZXdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwib3JkZXItMSBvcmRlci1zbS0yIGNvbC0xMiBjb2wtbWQtNSBjb2wtbGctNSBjb2wteGwtNSBkLWZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGllZWVzYS1zZWFyY2hcclxuICAgICAgICAgICpuZ0lmPVwiaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCAhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAgIChzZWFyY2hWYWx1ZSk9XCJvbkdyb3VwU2VhcmNoQ2xpY2soJGV2ZW50KVwiXHJcbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJ0cmltbWVkU2VhcmNoVGVybVwiXHJcbiAgICAgICAgICBbc2VhcmNoVHlwZV09XCJzZWFyY2hUeXBlXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlckxhYmVsXT1cInNlYXJjaFBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgICAgICBbbWluQ2hhcmFjdGVyVG9TZWFyY2hdPVwibWluQ2hhcmFjdGVyVG9TZWFyY2hcIlxyXG4gICAgICAgICAgW3N1cHBvcnRNZXNzYWdlXT1cInN1cHBvcnRNZXNzYWdlXCJcclxuICAgICAgICA+PC9pZWVlc2Etc2VhcmNoPlxyXG5cclxuICAgICAgICA8aWVlZXNhLXNlbGVjdFxyXG4gICAgICAgICAgKm5nSWY9XCJpc0dyb3VwRmlsdGVyQWN0aXZlIHx8ICFpc01vYmlsZVZpZXdcIlxyXG4gICAgICAgICAgY2xhc3M9XCJhbGlnbi1zZWxmLWVuZCBwdC1sZy00IHB0LW1kLTQgcHQteGwtNFwiXHJcbiAgICAgICAgICBbaXNTb3J0TmVlZGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkcm9wZG93bk9wdGlvbnNdPVwic2VsZWN0R3JvdXBPcHRpb25zXCJcclxuICAgICAgICAgIFtpc0xhYmVsQWxpZ25lZExlZnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2VsZWN0TGFiZWxdPVwiY29uc3RhbnRzPy52aWV3R3JvdXBzPy5maWx0ZXJCeUxhYmVsXCJcclxuICAgICAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbkdyb3VwVHlwZUZpbHRlcmVkKCRldmVudClcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyVGV4dF09XCJmaWx0ZXJQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgW3NlbGVjdGVkT3B0aW9uc109XCJzZWxlY3RlZEdyb3VwVHlwZVwiXHJcbiAgICAgICAgPjwvaWVlZXNhLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxpZWVlc2EtdHJlZVxyXG4gICAgICAqbmdJZj1cInBhcmVudEdyb3Vwc0luZm8gJiYgcGFyZW50R3JvdXBzSW5mby5sZW5ndGggPiAwXCJcclxuICAgICAgW3BhcmVudEdyb3Vwc0luZm9dPVwicGFyZW50R3JvdXBzSW5mb1wiXHJcbiAgICAgIFtjaGlsZEdyb3Vwc0luZm9dPVwiY2hpbGRHcm91cHNJbmZvXCJcclxuICAgICAgW2RlbGV0ZWRHcm91cElkSW5mb109XCJkZWxldGVkR3JvdXBJZFwiXHJcbiAgICAgIFtpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmVdPVwiaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXCJcclxuICAgICAgW3VzZXJHcm91cFBlcm1pc3Npb25zXT1cInVzZXJHcm91cFBlcm1pc3Npb25zXCJcclxuICAgICAgKHRvZ2dsZUdyb3VwQ2xpY2spPVwiZ2V0R3JvdXBzKCRldmVudClcIlxyXG4gICAgICAoY3JlYXRlR3JvdXBDbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKCRldmVudClcIlxyXG4gICAgICAoZGVsZXRlR3JvdXBDbGljayk9XCJvcGVuRGVsZXRlQ29uZmlybWF0aW9uTW9kYWwoJGV2ZW50KVwiXHJcbiAgICAgICh2aWV3Um9zdGVyQ2xpY2spPVwidmlld1Jvc3RlcigkZXZlbnQpXCJcclxuICAgICAgKGVkaXRHcm91cENsaWNrKT1cIm9wZW5FZGl0R3JvdXBGb3JtKCRldmVudClcIlxyXG4gICAgPjwvaWVlZXNhLXRyZWU+XHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwicGFyZW50R3JvdXBzSW5mbyAmJiBwYXJlbnRHcm91cHNJbmZvLmxlbmd0aCA+IDBcIlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LXNtLXJvdyBmbGV4LW1kLXJvdyBtdC00IGp1c3RpZnktY29udGVudC1zdGFydCBqdXN0aWZ5LWNvbnRlbnQtc20tZW5kXCJcclxuICAgID5cclxuICAgICAgPHAgY2xhc3M9XCJweC1zbS0zIGQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBpZWVlc2EtbGFiZWwtbGctYm9sZC0xNlwiPlxyXG4gICAgICAgIHt7IGNvbnN0YW50cz8udmlld0dyb3Vwcz8ubGVnZW5kIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPGllZWVzYS1sZWdlbmRcclxuICAgICAgICBbbGVnZW5kc109XCJncm91cHNMZWdlbmRzXCJcclxuICAgICAgICBbaXNTb3J0aW5nXT1cImlzU29ydGluZ1wiXHJcbiAgICAgID48L2llZWVzYS1sZWdlbmQ+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
625
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFFZixVQUFVLEVBQ1YsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7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Qjs7NEZBT1YsZUFBZTtrQkFuQjNCLFNBQVM7K0JBRUUsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLG1CQUFtQjtxQkFDcEIsaUJBR2MsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLGFBQWEsQ0FBQztzVEF3Q2pCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBT0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIE9uSW5pdCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBDcmVhdGVHcm91cENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtZ3JvdXAvY3JlYXRlLWdyb3VwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3Vwc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyb3Vwcy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLWluZm8ubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQge1xyXG4gIE1vZGFsQ29tcG9uZW50LFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gIEljb25CdXR0b24sXHJcbiAgQWxpZ25UeXBlLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIFNlbGVjdENvbXBvbmVudCxcclxuICBMZWdlbmRDb21wb25lbnQsXHJcbiAgTGVnZW5kLFxyXG4gIFNlYXJjaFR5cGUsXHJcbiAgU2VhcmNoQ29tcG9uZW50LFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3ByZXNlbnRhdGlvbic7XHJcbmltcG9ydCB7IFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR3JvdXBUeXBlLCBHcm91cFR5cGVDb25maWdWYWx1ZSB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBNb2RhbFR5cGUsXHJcbiAgQWxlcnRUeXBlLFxyXG4gIEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgQWxlcnRzU2VydmljZSxcclxuICBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG59IGZyb20gJ0BpZWVlc2EtbnBtL3V0aWxpdHknO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3VwRnVuY3Rpb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IFJvc3RlckZ1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Jvc3Rlci1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgR2V0R3JvdXBzUGF5bG9hZCB9IGZyb20gJy4vbW9kZWxzL3ZpZXctZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBEZWxldGVHcm91cFBheWxvYWQgfSBmcm9tICcuL21vZGVscy9kZWxldGUtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBBZGRVc2VyUm9zdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FkZC11c2VyLXJvc3Rlci9hZGQtdXNlci1yb3N0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmlld1Jvc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy92aWV3LXJvc3Rlci92aWV3LXJvc3Rlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvIH0gZnJvbSAnLi9tb2RlbHMvZWRpdC1ncm91cC5tb2RlbCc7XHJcbmltcG9ydCB7IEVkaXRVc2VyUm9sZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZWRpdC11c2VyLXJvbGVzL2VkaXQtdXNlci1yb2xlcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLXBlcm1pc3Npb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIEdyb3VwUGVybWlzc2lvbixcclxuICBVc2VyUGVybWlzc2lvbixcclxufSBmcm9tICcuL21vZGVscy9ncm91cC1wZXJtaXNzaW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFBlcm1pc3Npb25UeXBlIH0gZnJvbSAnLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBQZXJtaXNzaW9uc01hcFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2dyb3VwLXBlcm1pc3Npb25zLW1hcC1zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiBHcm91cHMgY29tcG9uZW50IGlzIGEgd3JhcHBlciBvciBjb250YWluZXIgY29tcG9uZW50IGZvciBncm91cHMgbWFuYWdlbWVudCByZXVzYWJsZSBjb21wb25lbnQgYW5kIGluIHRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgYWxsIGdyb3VwIG1hbmFnZW1lbnQgZnVuY3Rpb25hbGl0aWVzIGFuZCB0aGlzIHdpbGwgYmUgZW50cnkgY29tcG9uZW50IGZvciBtYW5hZ2luZyBncm91cHMgd2hlbiBpdCBpcyBjb25zdW1lZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMuXHJcbiAqIEBjbGFzcyBHcm91cHNDb21wb25lbnRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtZ3JvdXBzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdERpYWxvZ01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIFNlYXJjaENvbXBvbmVudCxcclxuICAgIFNlbGVjdENvbXBvbmVudCxcclxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxyXG4gICAgTGVnZW5kQ29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ncm91cHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyb3Vwcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgcHJvdmlkZXJzOiBbQWxlcnRzU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHRzO1xyXG4gIHZpZXdHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cHM7XHJcbiAgY3JlYXRlR3JvdXBUZXh0ID0gdGhpcy5jb25zdGFudHM/LmNyZWF0ZUdyb3VwO1xyXG4gIGVkaXRHcm91cFRleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRHcm91cDtcclxuICBlZGl0VXNlclJvbGVzVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uZWRpdFVzZXJSb2xlcztcclxuICBhZGRVc2VyUm9zdGVyVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uYWRkVXNlclJvc3RlcjtcclxuICBpc0dyb3VwU2VhcmNoQWN0aXZlID0gZmFsc2U7XHJcbiAgaXNHcm91cEZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzTW9iaWxlVmlldyA9IGZhbHNlO1xyXG4gIGNoaWxkR3JvdXBzSW5mbyE6IEdyb3VwSW5mb1tdO1xyXG4gIHNlbGVjdGVkR3JvdXBUeXBlITogU2VsZWN0T3B0aW9uO1xyXG4gIHBhcmVudEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RHcm91cE9wdGlvbnMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBkZWxldGVkR3JvdXBJZCE6IHN0cmluZztcclxuICBkZWxldGVHcm91cE5hbWUhOiBzdHJpbmc7XHJcbiAgZ3JvdXBUeXBlcyE6IEdyb3VwVHlwZUNvbmZpZ1ZhbHVlO1xyXG4gIHNlYXJjaFBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5zZWFyY2g7XHJcbiAgZmlsdGVyUGxhY2VIb2xkZXJUZXh0OiBzdHJpbmcgPSB0aGlzLnZpZXdHcm91cFRleHRzPy5wbGFjZWhvbGRlclRleHQ/LmZpbHRlcjtcclxuICBjcmVhdGVHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMSxcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmFkZCxcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmNyZWF0ZUdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgfTtcclxuICBmaWx0ZXJHcm91cEljb246IEljb25CdXR0b24gPSB7XHJcbiAgICBpZDogMixcclxuICAgIGFyaWFMYWJlbDogdGhpcy52aWV3R3JvdXBUZXh0cz8uYXJpYUxhYmVsLmZpbHRlcixcclxuICAgIGljb25VUkw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmZpbHRlckdyb3VwSWNvbixcclxuICAgIHRvb2xUaXA6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgfTtcclxuICBncm91cHNMZWdlbmRzOiBMZWdlbmRbXSA9IFtdO1xyXG4gIGdldEdyb3Vwc1BheWxvYWQ6IEdldEdyb3Vwc1BheWxvYWQgPSB7IGdyb3VwSWQ6ICcnLCBncm91cFR5cGVJZDogJycgfTtcclxuICBASW5wdXQoKSBncm91cHNQYWdlSW5mbzoge1xyXG4gICAgZ3JvdXBzVGl0bGU6IHN0cmluZztcclxuICAgIGdyb3Vwc0Rlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgfSA9IHtcclxuICAgIGdyb3Vwc1RpdGxlOiB0aGlzLnZpZXdHcm91cFRleHRzPy5ncm91cHNUaXRsZSxcclxuICAgIGdyb3Vwc0Rlc2NyaXB0aW9uOiB0aGlzLnZpZXdHcm91cFRleHRzPy5ncm91cHNEZXNjcmlwdGlvbixcclxuICB9O1xyXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uSWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgYXBpQmFzZVVSTCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VyUGVybWlzc2lvbnMhOiBVc2VyUGVybWlzc2lvbltdO1xyXG4gIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGU7XHJcbiAgZnVuY3Rpb25UeXBlITogR3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICBpc1NvcnRpbmcgPSB0cnVlO1xyXG4gIGNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIG1pbkNoYXJhY3RlclRvU2VhcmNoID0gMztcclxuICB0cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gIHVzZXJHcm91cFBlcm1pc3Npb25zITogR3JvdXBQZXJtaXNzaW9uW107XHJcbiAgc3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U6IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdD8ubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyPy5uZXh0KEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZ3JvdXBzIGNvbXBvbmVudC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN1cHBvcnRNZXNzYWdlID1cclxuICAgICAgdGhpcy52aWV3R3JvdXBUZXh0cz8ubWluQ2hhclJlcXVpcmVkVG9TZWFyY2gxICtcclxuICAgICAgJyAnICtcclxuICAgICAgdGhpcy5taW5DaGFyYWN0ZXJUb1NlYXJjaCArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMudmlld0dyb3VwVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMjtcclxuICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMgPVxyXG4gICAgICB0aGlzLnVzZXJQZXJtaXNzaW9uc1NlcnZpY2UuZmlsdGVyVXNlckdyb3VwUGVybWlzc2lvbnMoXHJcbiAgICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnMsXHJcbiAgICAgICAgdGhpcy5ncm91cFBlcm1pc3Npb25zU2VydmljZT8uZ2V0R2xvYmFsR3JvdXBQZXJtaXNzaW9ucygpXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0VXNlckdyb3VwUGVybWlzc2lvbnModGhpcy51c2VyR3JvdXBQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEFwcENvbmZpZyh0aGlzLmFwaUJhc2VVUkwsIHRoaXMudXNlclBlcm1pc3Npb25zKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBUeXBlcygpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5vcGVuTW9kYWxOb3RpZmllclxyXG4gICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICA/LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRfUk9TVEVSX1VTRVJfUk9MRSkge1xyXG4gICAgICAgICAgdGhpcy5vcGVuRWRpdFVzZXJSb2xlc01vZGFsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSKSB7XHJcbiAgICAgICAgICB0aGlzLm9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgcGVybWlzc2lvbiBiYXNlZCBhY2Nlc3MgZm9yIHByb3ZpZGVkIGZlYXR1cmUuXHJcbiAgICogQHBhcmFtIHtQZXJtaXNzaW9uVHlwZX0gcGVybWlzc2lvblR5cGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZTogUGVybWlzc2lvblR5cGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJQZXJtaXNzaW9uc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3NQZXJtaXNzaW9uKFxyXG4gICAgICBwZXJtaXNzaW9uVHlwZSxcclxuICAgICAgdGhpcy51c2VyR3JvdXBQZXJtaXNzaW9uc1xyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGNyZWF0ZSBncm91cCBtb2RhbCBhbmQgY2FsbHMgb3Blbk1vZGFsIG1ldGhvZC5cclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gW3BhcmVudEdyb3VwSW5mb10gLUFuIG9wdGlvbmFsIHBhcmFtZXRlci4gUGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBjcmVhdGUgY2hpbGQgZ3JvdXAuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5DcmVhdGVHcm91cEZvcm0ocGFyZW50R3JvdXBJbmZvPzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldFNlbGVjdGVkR3JvdXBJbmZvKHBhcmVudEdyb3VwSW5mbyA/PyB1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFKTtcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHRoaXMuY3JlYXRlR3JvdXBUZXh0Py5oZWFkaW5nLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZUdyb3VwQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtY3JlYXRlLWdyb3VwJywgcGFyZW50R3JvdXBJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtFZGl0R3JvdXBBbmRQYXJlbnRJbmZvfSBlZGl0R3JvdXBJbmZvIC1lZGl0aW5nIGdyb3VwIGFuZCBpdHMgcGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBwb3B1bGF0aW5nIGVkaXQgZ3JvdXAgZm9ybSBmaWVsZHMuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0R3JvdXBGb3JtKGVkaXRHcm91cEluZm86IEVkaXRHcm91cEFuZFBhcmVudEluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8oXHJcbiAgICAgIGVkaXRHcm91cEluZm8/Lmdyb3VwSW5mbyxcclxuICAgICAgZWRpdEdyb3VwSW5mbz8ucGFyZW50R3JvdXBJbmZvXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBlZGl0R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVHcm91cENvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LWdyb3VwJywgZWRpdEdyb3VwSW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IHVzZXIgcm9sZXMgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0VXNlclJvbGVzTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBzZWxlY3RlZFVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEVkaXRVc2VyUm9sZXNDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKHRoaXMuZnVuY3Rpb25UeXBlKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtZWRpdC11c2VyLXJvbGVzJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBhZGQgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uaGVhZGluZyxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZSh0aGlzLmZ1bmN0aW9uVHlwZSk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWFkZC11c2VyLXJvc3RlcicpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdSb3N0ZXIoZ3JvdXA6IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogZ3JvdXA/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBWaWV3Um9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNX0FORF9DT05URU5ULFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRTZWxlY3RlZEdyb3VwSW5mbyhncm91cCk7XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLXZpZXctcm9zdGVyJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIG1vZGFsIGNvbXBvbmVudCB3aXRoIGZvciByZWNlaXZlZCBwYXJhbXMgYW5kIGhhbmRsZXMgZm9ybSBzdWJtaXNzaW9uIHN1Y2Nlc3MgYW5kIGVycm9ycy5cclxuICAgKiBAcGFyYW0geyp9IGRpYWxvZ09wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXNzTmFtZV1cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbmZlcnJhYmxlLXR5cGVzLCBuby11bnVzZWQtdmFyc1xyXG4gIG9wZW5Nb2RhbChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBkaWFsb2dPcHRpb25zOiBhbnksXHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmcsXHJcbiAgICBncm91cEluZm8/OiBHcm91cEluZm8gfCBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUgPz8gJyc7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxvZ09wdGlvbnMsXHJcbiAgICAgIHdpZHRoOlxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUiB8fFxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUgfHxcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6ICdhdXRvJyxcclxuICAgICAgcGFuZWxDbGFzczogWydpZWVlc2EtbW9kYWwtZGlhbG9nJywgY2xhc3NOYW1lXSxcclxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LnN1Ym1pdEZvcm1SZXNwb25zZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIG5vLXVudXNlZC12YXJzXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmZ1bmN0aW9uVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFOiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlR3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEdyb3VwSW5mbztcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY3JlYXRlR3JvdXBJbmZvKSB0aGlzLmdldEdyb3VwcyhjcmVhdGVHcm91cEluZm8pO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVDoge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdEdyb3VwVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgaXNQYXJlbnRHcm91cENoYW5nZWQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5nZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cygpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0R3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEVkaXRHcm91cEFuZFBhcmVudEluZm87XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVkaXRHcm91cEluZm8/LnBhcmVudEdyb3VwSW5mbz8uZ3JvdXBJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZS5SRUFTU0lHTl9QQVJFTlRfR1JPVVApO1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cyhmYWxzZSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHRoaXMuZ2V0R3JvdXBzKGVkaXRHcm91cEluZm8ucGFyZW50R3JvdXBJbmZvKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUX1JPU1RFUl9VU0VSX1JPTEU6IHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmNhblNob3dNZXNzYWdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFJvc3RlckZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uQUREX1VTRVJfVE9fUk9TVEVSOiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5jYW5TaG93TWVzc2FnZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRSb3N0ZXJGdW5jdGlvblR5cGUoXHJcbiAgICAgICAgICAgICAgUm9zdGVyRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LmZvcm1DYW5jZWxcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSIHx8XHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3Um9zdGVyKHRoaXMuZ3JvdXBzU2VydmljZS5zZWxlY3RlZEdyb3VwSW5mbyBhcyBHcm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICA/LmFmdGVyT3BlbmVkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSIHx8XHJcbiAgICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVF9ST1NURVJfVVNFUl9ST0xFXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgID8uYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCkge1xyXG4gICAgICAgICAgdGhpcy5jYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudmlld1Jvc3Rlcih0aGlzLmdyb3Vwc1NlcnZpY2Uuc2VsZWN0ZWRHcm91cEluZm8gYXMgR3JvdXBJbmZvKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGdldCB1c2VyIGNvbmZpcm1hdGlvbiB0byBkZWxldGUgdGhlIHNlbGVjdGVkIGdyb3VwLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cENvbXBvbmVudFxyXG4gICAqL1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgb3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKGdyb3VwSW5mbzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gc2NyZWVuVGV4dHM/LmRlbGV0ZUdyb3VwPy5jb25maXJtYXRpb25JbmZvO1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOlxyXG4gICAgICAgIGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2UgKyBncm91cEluZm8/Lmdyb3VwTmFtZSArICc/JyxcclxuICAgICAgYWN0aW9uQnV0dG9uQWxpZ246IHRoaXMuYWxpZ25tZW50VHlwZT8uTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2c/Lm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlR3JvdXBNb2RhbE9wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgIGF1dG9Gb2N1czogJ2RpYWxvZycsXHJcbiAgICAgIGFyaWFMYWJlbDogdGhpcy5jb25zdGFudHM/LmFyaWFMYWJlbD8uYWxlcnQsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVHcm91cChncm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRoaXMgbWV0aG9kIHNlbmRzIEFQSSBSZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZ3JvdXAgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlR3JvdXAoZ3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwVGV4dCA9IHNjcmVlblRleHRzPy5kZWxldGVHcm91cDtcclxuICAgIHRoaXMuZGVsZXRlR3JvdXBOYW1lID0gZ3JvdXBJbmZvPy5ncm91cE5hbWU7XHJcbiAgICBjb25zdCBkZWxldGVHcm91cFBheWxvYWQ6IERlbGV0ZUdyb3VwUGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGdyb3VwSWQ6IGdyb3VwSW5mbz8uZ3JvdXBJZCxcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUdyb3VwKGRlbGV0ZUdyb3VwUGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSB0aGlzLmRlbGV0ZWRHcm91cElkID0gZ3JvdXBJbmZvPy5ncm91cElkO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGdyb3VwSW5mbz8uZ3JvdXBOYW1lICsgZGVsZXRlR3JvdXBUZXh0Py5tZXNzYWdlPy5zdWNjZXNzPy5kZWxldGlvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIHNlYXJjaCBmaWVsZCBvbiBjbGljayBvZiBzZWFyY2ggaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSBGaWx0ZXIgYnkgZHJvcGRvd24gb3B0aW9ucyBvbiBjbGljayBvZiBmaWx0ZXIgaWNvbiBpbiBjYXNlIG9mIG1vYmlsZSB2aWV3XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dHcm91cEZpbHRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgdG8gdHJ1ZSBhbmQgbG9hZHMgdGhlIGdyb3VwcyB0aG9zZSBhcmUgY29uZmlndXJlZCB3aXRoIHNlbGVjdGVkIGdyb3VwIHR5cGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlYXJjaFRlcm1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcblxyXG4gIG9uR3JvdXBTZWFyY2hDbGljayhzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPSBzZWFyY2hUZXJtLnRyaW0oKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZS5TRUFSQ0gpO1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy50cmltbWVkU2VhcmNoVGVybSAmJlxyXG4gICAgICAodGhpcy5pc0dyb3VwU2VhcmNoQWN0aXZlIHx8IHRoaXMuaXNHcm91cEZpbHRlckFjdGl2ZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RHcm91cE9wdGlvbnNbMF0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMudHJpbW1lZFNlYXJjaFRlcm0pIHJldHVybjtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUgPSB0aGlzLnNlbGVjdEdyb3VwT3B0aW9uc1swXTtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlID0gISF0aGlzLnRyaW1tZWRTZWFyY2hUZXJtO1xyXG4gICAgdGhpcy5vbkdyb3VwU2VhcmNoKCk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2VcclxuICAgICAgLmdyb3Vwc0J5TmFtZUFjcm9ueW0odGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IHRoaXMudmlld0dyb3VwUmVzcG9uc2UocmVzcG9uc2U/LmJvZHkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMucGFyZW50R3JvdXBzSW5mbyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHNlbGVjdCBncm91cCB0eXBlIG9wdGlvbnMgZnJvbSBncm91cFR5cGVzIHJlc3BvbnNlXHJcbiAgICogQHJldHVybiB7Kn0gIHtTZWxlY3RPcHRpb25bXX1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlT3B0aW9ucygpOiBTZWxlY3RPcHRpb25bXSB7XHJcbiAgICB0aGlzLmxlZ2VuZENvbG9yKCk7XHJcbiAgICBjb25zdCBncm91cFR5cGVPcHRpb25zOiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gICAgZ3JvdXBUeXBlT3B0aW9ucy5wdXNoKHtcclxuICAgICAgaWQ6ICcnLFxyXG4gICAgICBuYW1lOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hbGxHcm91cFR5cGVzT3B0aW9uLFxyXG4gICAgfSk7XHJcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmdyb3VwVHlwZXMpPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGdyb3VwVHlwZU9wdGlvbnMucHVzaCh7IGlkOiBub2RlWzBdLCBuYW1lOiBub2RlWzFdPy5uYW1lIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZ3JvdXBUeXBlT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBsZWdlbmQgY29sb3IgZnJvbSBncm91cFR5cGVzIHJlc3BvbnNlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGxlZ2VuZENvbG9yKCk6IHZvaWQge1xyXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5ncm91cFR5cGVzKT8uZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICB0aGlzLmdyb3Vwc0xlZ2VuZHM/LnB1c2goe1xyXG4gICAgICAgIGNvbG9yOiBub2RlWzFdPy5sZWdlbmRDb2xvcixcclxuICAgICAgICBsYWJlbDogbm9kZVsxXT8ubmFtZSxcclxuICAgICAgICBoaWVyYXJjaHk6IG5vZGVbMV0/LmhpZXJhcmNoeSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlIGZsYWcgYW5kIGxvYWRzIHBhcmVudCBncm91cCBpbmZvIGFzIHBlciBzZWxlY3RlZCBmaWx0ZXIgb3B0aW9uLlxyXG4gICAqIEBwYXJhbSB7U2VsZWN0T3B0aW9ufSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvbkdyb3VwVHlwZUZpbHRlcmVkKGV2ZW50OiBTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUgPSBldmVudDtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlID0gISF0aGlzLnNlbGVjdGVkR3JvdXBUeXBlPy5pZDtcclxuICAgIHRoaXMuZ2V0R3JvdXBzUGF5bG9hZCA9IHtcclxuICAgICAgZ3JvdXBJZDogJycsXHJcbiAgICAgIGdyb3VwVHlwZUlkOiB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlPy5pZCBhcyBzdHJpbmcsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5zaG93R3JvdXBGaWx0ZXIoKTtcclxuICAgIHRoaXMudHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkZJTFRFUik7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyBhbGwgdGhlIHBhcmVudCBncm91cHMgaW5mb3JtYXRpb24uXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEdyb3Vwcyhncm91cD86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgIHRoaXMuZ2V0R3JvdXBzUGF5bG9hZCA9IHtcclxuICAgICAgICBncm91cElkOiBncm91cD8uZ3JvdXBJZCA/PyAnJyxcclxuICAgICAgICBncm91cFR5cGVJZDogJycsXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0R3JvdXBzUGF5bG9hZC5ncm91cFR5cGVJZCA9PT0gJycpIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICAgIGdyb3VwSWQ6ICcnLFxyXG4gICAgICAgIGdyb3VwVHlwZUlkOiAnJyxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBzKHRoaXMuZ2V0R3JvdXBzUGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIGlmIChncm91cCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuY2hpbGRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyBncm91cFR5cGUgaW5mbyB3aXRoIGdyb3VwIHJlc3BvbnNlIGZyb20gZ3JvdXBUeXBlIHJlc3BvbnNlXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHsqfSAge0dyb3VwSW5mb1tdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICB2aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZTogR3JvdXBJbmZvW10pOiBHcm91cEluZm9bXSB7XHJcbiAgICByZXNwb25zZT8uZm9yRWFjaCgobm9kZSkgPT4ge1xyXG4gICAgICBjb25zdCBncm91cFR5cGVJbmZvOiBHcm91cFR5cGUgPSB0aGlzLmdyb3VwVHlwZXNbbm9kZS5ncm91cFR5cGVdO1xyXG4gICAgICBub2RlLmdyb3VwVHlwZUluZm8gPSBncm91cFR5cGVJbmZvO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSBncm91cCB0eXBlcy5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBUeXBlcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZT8uZ2V0Rm9ybWF0dGVkR3JvdXBUeXBlcyhcclxuICAgICAgICAgICAgICByZXM/LmJvZHlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RHcm91cE9wdGlvbnMgPSB0aGlzLmdldEdyb3VwVHlwZU9wdGlvbnMoKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zWzBdO1xyXG4gICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBzdWNjZXNzLCBlcnJvciBhbmQgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLXN1Y2Nlc3Mgb3IgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2hvd0FsZXJ0TWVzc2FnZShhbGVydFR5cGU6IEFsZXJ0VHlwZSwgbWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgIGFsZXJ0VHlwZTogYWxlcnRUeXBlLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENhcHR1cmVzIHRoZSBzZXJ2ZXIgc2lkZSBlcnJvcnMgYW5kIGhhbmRsZXMgaXQgYmFzZWQgb24gdGhlIGN1c3RvbSBvciBIdHRwIGVycm9ycy5cclxuICAgKiBAcGFyYW0ge0h0dHBFcnJvclJlc3BvbnNlfSBlcnJvclxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVFcnJvcnMoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcnJvckNvZGVzOiBzdHJpbmdbXSA9IGVycm9yPy5lcnJvcj8uYm9keT8uZXJyb3JDb2RlcztcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGVycm9yQ29kZXMpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZTogc3RyaW5nW10gPVxyXG4gICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ucGFyc2VFcnJvck1lc3NhZ2UoZXJyb3JDb2Rlcyk7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAwOCcpKSB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlWzBdID0gdGhpcy5kZWxldGVHcm91cE5hbWUgKyBlcnJvck1lc3NhZ2U/LlswXTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoQWxlcnRUeXBlLkVSUk9SLCBlcnJvck1lc3NhZ2UpO1xyXG4gICAgICBpZiAoZXJyb3JDb2Rlcz8uaW5jbHVkZXMoJzEwMTAnKSkgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gW107XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yICYmIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgICAgdGhpcy5nbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlPy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzIHB4LTRcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2luZm8gZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBiLTNcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgID8gJ2llZWVzYS1ncm91cHNfX2luZm8tLXdoaXRlLWJnJ1xyXG4gICAgICAgIDogJ2llZWVzYS1ncm91cHNfX2luZm8tLWJsdWUtYmcnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxwXHJcbiAgICAgIGNsYXNzPVwibWItMFwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgICAgPyAnaWVlZXNhLXRpdGxlLWxnLTI0IHAtMCdcclxuICAgICAgICAgIDogJ2llZWVzYS1oZWFkbGluZS1sZy0zMiBpZWVlc2EtZ3JvdXBzX19pbmZvX19oZWFkaW5nJ1xyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICB7eyBncm91cHNQYWdlSW5mby5ncm91cHNUaXRsZSB9fVxyXG4gICAgPC9wPlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJpc01vYmlsZVZpZXcgPyAncC0wJyA6ICdpZWVlc2EtZ3JvdXBzX19pbmZvX19hY3Rpb24nXCI+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzKHBlcm1pc3Npb25UeXBlLkNSRUFURV9ST09UX0dST1VQKSB8fFxyXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3ModGhpcy5wZXJtaXNzaW9uVHlwZS5NQU5BR0VfQUxMX0dST1VQUylcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19fY3JlYXRlLXN1Ymdyb3VwIG1hdC10ZXJ0aWFyeS1idXR0b24gZC1ub25lIGQtc20tbm9uZSBkLW1kLWJsb2NrIGQtbGctYmxvY2sgZC14bC1ibG9ja1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5DcmVhdGVHcm91cEZvcm0oKVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LnZpZXdHcm91cHM/LmFyaWFMYWJlbD8uYWRkR3JvdXBcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgY29uc3RhbnRzPy52aWV3R3JvdXBzPy5hZGRHcm91cCB9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImQtZmxleCBkLXNtLWZsZXggZC1tZC1ub25lIGQtbGctbm9uZSBkLXhsLW5vbmUgaWVlZXNhLWdyb3Vwc19fbW9iaWxlLWljb25zIGdhcC0yXCJcclxuICAgID5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImNyZWF0ZUdyb3VwSWNvblwiXHJcbiAgICAgICAgKm5nSWY9XCIodmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApIHx8ICB2YWxpZGF0ZUFjY2Vzcyh0aGlzLnBlcm1pc3Npb25UeXBlLk1BTkFHRV9BTExfR1JPVVBTKSlcIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cImZpbHRlckdyb3VwSWNvblwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJzaG93R3JvdXBGaWx0ZXIoKVwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxidXR0b25cclxuICAgICAgICBtYXQtYnV0dG9uXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjb25zdGFudHM/LnZpZXdHcm91cHM/LmFyaWFMYWJlbD8uc2VhcmNoXCJcclxuICAgICAgICAoY2xpY2spPVwib25Hcm91cFNlYXJjaCgpXCJcclxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtbWFnbmlmeWluZy1nbGFzcyBzZWFyY2gtZ3JvdXAtaWNvblwiPjwvaT5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImllZWVzYS1ncm91cHNfX2FjdGlvbnNcIlxyXG4gICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgIGlzTW9iaWxlVmlld1xyXG4gICAgICAgID8gJ2llZWVzYS1ncm91cHNfX2FjdGlvbnMtLXdoaXRlLWJnJ1xyXG4gICAgICAgIDogJ2llZWVzYS1ncm91cHNfX2FjdGlvbnMtLWJsdWUtYmcnXHJcbiAgICBcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19hY3Rpb25zLS1zZWFyY2ggcm93XCI+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1tZC0xNiBvcmRlci0yIG9yZGVyLXNtLTEgY29sLTEyIGNvbC1tZC03IGNvbC1sZy03IGNvbC14bC03XCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IGdyb3Vwc1BhZ2VJbmZvLmdyb3Vwc0Rlc2NyaXB0aW9uIH19XHJcbiAgICAgIDwvcD5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAoKGlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgaXNHcm91cEZpbHRlckFjdGl2ZSkgJiYgaXNNb2JpbGVWaWV3KSB8fFxyXG4gICAgICAgICAgIWlzTW9iaWxlVmlld1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJvcmRlci0xIG9yZGVyLXNtLTIgY29sLTEyIGNvbC1tZC01IGNvbC1sZy01IGNvbC14bC01IGQtZmxleCBmbGV4LWNvbHVtblwiXHJcbiAgICAgID5cclxuICAgICAgICA8aWVlZXNhLXNlYXJjaFxyXG4gICAgICAgICAgKm5nSWY9XCJpc0dyb3VwU2VhcmNoQWN0aXZlIHx8ICFpc01vYmlsZVZpZXdcIlxyXG4gICAgICAgICAgKHNlYXJjaFZhbHVlKT1cIm9uR3JvdXBTZWFyY2hDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgIFtzZWFyY2hUZXJtXT1cInRyaW1tZWRTZWFyY2hUZXJtXCJcclxuICAgICAgICAgIFtzZWFyY2hUeXBlXT1cInNlYXJjaFR5cGVcIlxyXG4gICAgICAgICAgW3BsYWNlaG9sZGVyTGFiZWxdPVwic2VhcmNoUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgICAgIFttaW5DaGFyYWN0ZXJUb1NlYXJjaF09XCJtaW5DaGFyYWN0ZXJUb1NlYXJjaFwiXHJcbiAgICAgICAgICBbc3VwcG9ydE1lc3NhZ2VdPVwic3VwcG9ydE1lc3NhZ2VcIlxyXG4gICAgICAgID48L2llZWVzYS1zZWFyY2g+XHJcblxyXG4gICAgICAgIDxpZWVlc2Etc2VsZWN0XHJcbiAgICAgICAgICAqbmdJZj1cImlzR3JvdXBGaWx0ZXJBY3RpdmUgfHwgIWlzTW9iaWxlVmlld1wiXHJcbiAgICAgICAgICBjbGFzcz1cImFsaWduLXNlbGYtZW5kIHB0LWxnLTQgcHQtbWQtNCBwdC14bC00XCJcclxuICAgICAgICAgIFtpc1NvcnROZWVkZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Ryb3Bkb3duT3B0aW9uc109XCJzZWxlY3RHcm91cE9wdGlvbnNcIlxyXG4gICAgICAgICAgW2lzTGFiZWxBbGlnbmVkTGVmdF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtzZWxlY3RMYWJlbF09XCJjb25zdGFudHM/LnZpZXdHcm91cHM/LmZpbHRlckJ5TGFiZWxcIlxyXG4gICAgICAgICAgKG9wdGlvblNlbGVjdGVkKT1cIm9uR3JvdXBUeXBlRmlsdGVyZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJUZXh0XT1cImZpbHRlclBsYWNlSG9sZGVyVGV4dFwiXHJcbiAgICAgICAgICBbc2VsZWN0ZWRPcHRpb25zXT1cInNlbGVjdGVkR3JvdXBUeXBlXCJcclxuICAgICAgICA+PC9pZWVlc2Etc2VsZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGllZWVzYS10cmVlXHJcbiAgICAgICpuZ0lmPVwicGFyZW50R3JvdXBzSW5mbyAmJiBwYXJlbnRHcm91cHNJbmZvLmxlbmd0aCA+IDBcIlxyXG4gICAgICBbcGFyZW50R3JvdXBzSW5mb109XCJwYXJlbnRHcm91cHNJbmZvXCJcclxuICAgICAgW2NoaWxkR3JvdXBzSW5mb109XCJjaGlsZEdyb3Vwc0luZm9cIlxyXG4gICAgICBbZGVsZXRlZEdyb3VwSWRJbmZvXT1cImRlbGV0ZWRHcm91cElkXCJcclxuICAgICAgW2lzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZV09XCJpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmVcIlxyXG4gICAgICBbdXNlckdyb3VwUGVybWlzc2lvbnNdPVwidXNlckdyb3VwUGVybWlzc2lvbnNcIlxyXG4gICAgICAodG9nZ2xlR3JvdXBDbGljayk9XCJnZXRHcm91cHMoJGV2ZW50KVwiXHJcbiAgICAgIChjcmVhdGVHcm91cENsaWNrKT1cIm9wZW5DcmVhdGVHcm91cEZvcm0oJGV2ZW50KVwiXHJcbiAgICAgIChkZWxldGVHcm91cENsaWNrKT1cIm9wZW5EZWxldGVDb25maXJtYXRpb25Nb2RhbCgkZXZlbnQpXCJcclxuICAgICAgKHZpZXdSb3N0ZXJDbGljayk9XCJ2aWV3Um9zdGVyKCRldmVudClcIlxyXG4gICAgICAoZWRpdEdyb3VwQ2xpY2spPVwib3BlbkVkaXRHcm91cEZvcm0oJGV2ZW50KVwiXHJcbiAgICA+PC9pZWVlc2EtdHJlZT5cclxuICAgIDxkaXZcclxuICAgICAgKm5nSWY9XCJwYXJlbnRHcm91cHNJbmZvICYmIHBhcmVudEdyb3Vwc0luZm8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc20tcm93IGZsZXgtbWQtcm93IG10LTQganVzdGlmeS1jb250ZW50LXN0YXJ0IGp1c3RpZnktY29udGVudC1zbS1lbmRcIlxyXG4gICAgPlxyXG4gICAgICA8cCBjbGFzcz1cInB4LXNtLTMgZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGllZWVzYS1sYWJlbC1sZy1ib2xkLTE2XCI+XHJcbiAgICAgICAge3sgY29uc3RhbnRzPy52aWV3R3JvdXBzPy5sZWdlbmQgfX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8aWVlZXNhLWxlZ2VuZFxyXG4gICAgICAgIFtsZWdlbmRzXT1cImdyb3Vwc0xlZ2VuZHNcIlxyXG4gICAgICAgIFtpc1NvcnRpbmddPVwiaXNTb3J0aW5nXCJcclxuICAgICAgPjwvaWVlZXNhLWxlZ2VuZD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL21vZGVscy9ncm91cC1pbmZvLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcm91cFR5cGUgfSBmcm9tICcuL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBJbmZvIHtcclxuICBncm91cElkOiBzdHJpbmc7XHJcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XHJcbiAgZ3JvdXBBY3JvbnltOiBzdHJpbmc7XHJcbiAgZ3JvdXBEZXNjPzogc3RyaW5nO1xyXG4gIGdyb3VwVHlwZTogc3RyaW5nO1xyXG4gIGdyb3VwU2hvcnROYW1lOiBzdHJpbmc7XHJcbiAgZ3JvdXBQYXJlbnRJZDogc3RyaW5nIHwgbnVsbDtcclxuICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcclxuICBncm91cExldmVsOiBudW1iZXI7XHJcbiAgZ3JvdXBUeXBlSW5mbz86IEdyb3VwVHlwZTtcclxuICBjaGlsZHJlbj86IEdyb3VwSW5mb1tdO1xyXG4gIG5vT2ZDaGlsZHJlbj86IG51bWJlcjtcclxufVxyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtaW5mby5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL21vZGVscy9ncm91cC1pbmZvLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyUGVybWlzc2lvbiB9IGZyb20gJy4vZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBHcm91cFR5cGUgfSBmcm9tICcuL2dyb3VwLXR5cGVzLm1vZGVsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBJbmZvIHtcclxuICBncm91cElkOiBzdHJpbmc7XHJcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XHJcbiAgZ3JvdXBBY3JvbnltOiBzdHJpbmc7XHJcbiAgZ3JvdXBEZXNjPzogc3RyaW5nO1xyXG4gIGdyb3VwVHlwZTogc3RyaW5nO1xyXG4gIGdyb3VwU2hvcnROYW1lOiBzdHJpbmc7XHJcbiAgZ3JvdXBQYXJlbnRJZDogc3RyaW5nIHwgbnVsbDtcclxuICBoYXNDaGlsZHJlbjogYm9vbGVhbjtcclxuICBncm91cExldmVsOiBudW1iZXI7XHJcbiAgZ3JvdXBUeXBlSW5mbz86IEdyb3VwVHlwZTtcclxuICBjaGlsZHJlbj86IEdyb3VwSW5mb1tdO1xyXG4gIG5vT2ZDaGlsZHJlbj86IG51bWJlcjtcclxuICBwZXJtaXNzaW9uczogVXNlclBlcm1pc3Npb25bXSB8IG51bGw7XHJcbn1cclxuIl19
@@ -6,10 +6,14 @@ export var PermissionType;
6
6
  PermissionType["CREATE_SUBGROUP"] = "CREATE_SUBGROUP";
7
7
  PermissionType["EDIT_GROUP"] = "EDIT_GROUP";
8
8
  PermissionType["DELETE_GROUP"] = "DELETE_GROUP";
9
- PermissionType["MANAGE_SYSTEM_USERS"] = "MANAGE_SYSTEM_USERS";
10
9
  PermissionType["VIEW_GROUP_OFFICERS"] = "VIEW_GROUP_OFFICERS";
11
10
  PermissionType["MANAGE_GROUP_OFFICERS"] = "MANAGE_GROUP_OFFICERS";
12
11
  PermissionType["VIEW_GROUP_MEMBERS"] = "VIEW_GROUP_MEMBERS";
13
12
  PermissionType["MANAGE_GROUP_MEMBERS"] = "MANAGE_GROUP_MEMBERS";
13
+ PermissionType["MANAGE_SYSTEM_USERS"] = "MANAGE_SYSTEM_USERS";
14
+ PermissionType["VIEW_ALL_GROUPS"] = "VIEW_ALL_GROUPS";
15
+ PermissionType["MANAGE_ALL_GROUPS"] = "MANAGE_ALL_GROUPS";
16
+ PermissionType["VIEW_ALL_ROSTERS"] = "VIEW_ALL_ROSTERS";
17
+ PermissionType["MANAGE_ALL_ROSTERS"] = "MANAGE_ALL_ROSTERS";
14
18
  })(PermissionType || (PermissionType = {}));
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10eXBlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFOLElBQVksY0FXWDtBQVhELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQix5REFBdUMsQ0FBQTtJQUN2QyxxREFBbUMsQ0FBQTtJQUNuQywyQ0FBeUIsQ0FBQTtJQUN6QiwrQ0FBNkIsQ0FBQTtJQUM3Qiw2REFBMkMsQ0FBQTtJQUMzQyw2REFBMkMsQ0FBQTtJQUMzQyxpRUFBK0MsQ0FBQTtJQUMvQywyREFBeUMsQ0FBQTtJQUN6QywrREFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBWFcsY0FBYyxLQUFkLGNBQWMsUUFXekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xyXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uVHlwZSB7XHJcbiAgVklFV19HUk9VUFMgPSAnVklFV19HUk9VUFMnLFxyXG4gIENSRUFURV9ST09UX0dST1VQID0gJ0NSRUFURV9ST09UX0dST1VQJyxcclxuICBDUkVBVEVfU1VCR1JPVVAgPSAnQ1JFQVRFX1NVQkdST1VQJyxcclxuICBFRElUX0dST1VQID0gJ0VESVRfR1JPVVAnLFxyXG4gIERFTEVURV9HUk9VUCA9ICdERUxFVEVfR1JPVVAnLFxyXG4gIE1BTkFHRV9TWVNURU1fVVNFUlMgPSAnTUFOQUdFX1NZU1RFTV9VU0VSUycsXHJcbiAgVklFV19HUk9VUF9PRkZJQ0VSUyA9ICdWSUVXX0dST1VQX09GRklDRVJTJyxcclxuICBNQU5BR0VfR1JPVVBfT0ZGSUNFUlMgPSAnTUFOQUdFX0dST1VQX09GRklDRVJTJyxcclxuICBWSUVXX0dST1VQX01FTUJFUlMgPSAnVklFV19HUk9VUF9NRU1CRVJTJyxcclxuICBNQU5BR0VfR1JPVVBfTUVNQkVSUyA9ICdNQU5BR0VfR1JPVVBfTUVNQkVSUycsXHJcbn1cclxuIl19
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi10eXBlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtQ0FBbUM7QUFDbkMsTUFBTSxDQUFOLElBQVksY0FlWDtBQWZELFdBQVksY0FBYztJQUN4Qiw2Q0FBMkIsQ0FBQTtJQUMzQix5REFBdUMsQ0FBQTtJQUN2QyxxREFBbUMsQ0FBQTtJQUNuQywyQ0FBeUIsQ0FBQTtJQUN6QiwrQ0FBNkIsQ0FBQTtJQUM3Qiw2REFBMkMsQ0FBQTtJQUMzQyxpRUFBK0MsQ0FBQTtJQUMvQywyREFBeUMsQ0FBQTtJQUN6QywrREFBNkMsQ0FBQTtJQUM3Qyw2REFBMkMsQ0FBQTtJQUMzQyxxREFBbUMsQ0FBQTtJQUNuQyx5REFBdUMsQ0FBQTtJQUN2Qyx1REFBcUMsQ0FBQTtJQUNyQywyREFBeUMsQ0FBQTtBQUMzQyxDQUFDLEVBZlcsY0FBYyxLQUFkLGNBQWMsUUFlekIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xyXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uVHlwZSB7XHJcbiAgVklFV19HUk9VUFMgPSAnVklFV19HUk9VUFMnLFxyXG4gIENSRUFURV9ST09UX0dST1VQID0gJ0NSRUFURV9ST09UX0dST1VQJyxcclxuICBDUkVBVEVfU1VCR1JPVVAgPSAnQ1JFQVRFX1NVQkdST1VQJyxcclxuICBFRElUX0dST1VQID0gJ0VESVRfR1JPVVAnLFxyXG4gIERFTEVURV9HUk9VUCA9ICdERUxFVEVfR1JPVVAnLFxyXG4gIFZJRVdfR1JPVVBfT0ZGSUNFUlMgPSAnVklFV19HUk9VUF9PRkZJQ0VSUycsXHJcbiAgTUFOQUdFX0dST1VQX09GRklDRVJTID0gJ01BTkFHRV9HUk9VUF9PRkZJQ0VSUycsXHJcbiAgVklFV19HUk9VUF9NRU1CRVJTID0gJ1ZJRVdfR1JPVVBfTUVNQkVSUycsXHJcbiAgTUFOQUdFX0dST1VQX01FTUJFUlMgPSAnTUFOQUdFX0dST1VQX01FTUJFUlMnLFxyXG4gIE1BTkFHRV9TWVNURU1fVVNFUlMgPSAnTUFOQUdFX1NZU1RFTV9VU0VSUycsXHJcbiAgVklFV19BTExfR1JPVVBTID0gJ1ZJRVdfQUxMX0dST1VQUycsXHJcbiAgTUFOQUdFX0FMTF9HUk9VUFMgPSAnTUFOQUdFX0FMTF9HUk9VUFMnLFxyXG4gIFZJRVdfQUxMX1JPU1RFUlMgPSAnVklFV19BTExfUk9TVEVSUycsXHJcbiAgTUFOQUdFX0FMTF9ST1NURVJTID0gJ01BTkFHRV9BTExfUk9TVEVSUycsXHJcbn1cclxuIl19