@ieeesa-npm/groups 0.10.7 → 0.10.8

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.
@@ -103,6 +103,7 @@ export class GroupsComponent {
103
103
  * @memberof GroupsComponent
104
104
  */
105
105
  ngOnInit() {
106
+ this.groupsService?.setUserInfo(this.userInfo);
106
107
  this.supportMessage =
107
108
  this.viewGroupTexts?.minCharRequiredToSearch1 +
108
109
  ' ' +
@@ -604,7 +605,7 @@ export class GroupsComponent {
604
605
  this.destroy$.unsubscribe();
605
606
  }
606
607
  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 }); }
607
- 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 }); }
608
+ 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", userInfo: "userInfo" }, 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 }); }
608
609
  }
609
610
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: GroupsComponent, decorators: [{
610
611
  type: Component,
@@ -626,5 +627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
626
627
  type: Input
627
628
  }], userPermissions: [{
628
629
  type: Input
630
+ }], userInfo: [{
631
+ type: Input
629
632
  }] } });
630
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFFZixVQUFVLEVBQ1YsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7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QyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7K0dBdm1CVSxlQUFlO21HQUFmLGVBQWUsd01BRmYsQ0FBQyxhQUFhLENBQUMsMEJDM0U1QiwyMEpBZ0lBLGc3U0RqRUksWUFBWSxnT0FDWixlQUFlLDhCQUNmLGVBQWUsNFFBQ2YsZUFBZSwyTUFDZixlQUFlLCtTQUNmLGlCQUFpQixrU0FDakIsZUFBZSw0RkFDZixtQkFBbUI7OzRGQU9WLGVBQWU7a0JBbkIzQixTQUFTOytCQUVFLGVBQWUsY0FDYixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsZUFBZTt3QkFDZixtQkFBbUI7cUJBQ3BCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyxhQUFhLENBQUM7c1RBd0NqQixjQUFjO3NCQUF0QixLQUFLO2dCQU9HLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ3JlYXRlR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHtcclxuICBNb2RhbENvbXBvbmVudCxcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uLFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBTZWxlY3RDb21wb25lbnQsXHJcbiAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIExlZ2VuZCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIFNlYXJjaENvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZSwgR3JvdXBUeXBlQ29uZmlnVmFsdWUgfSBmcm9tICcuL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgTW9kYWxUeXBlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9yb3N0ZXItZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdldEdyb3Vwc1BheWxvYWQgfSBmcm9tICcuL21vZGVscy92aWV3LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRGVsZXRlR3JvdXBQYXlsb2FkIH0gZnJvbSAnLi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgQWRkVXNlclJvc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hZGQtdXNlci1yb3N0ZXIvYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdSb3N0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdmlldy1yb3N0ZXIvdmlldy1yb3N0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdEdyb3VwQW5kUGFyZW50SW5mbyB9IGZyb20gJy4vbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0VXNlclJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHcm91cFBlcm1pc3Npb24sXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIGNvbXBvbmVudCBpcyBhIHdyYXBwZXIgb3IgY29udGFpbmVyIGNvbXBvbmVudCBmb3IgZ3JvdXBzIG1hbmFnZW1lbnQgcmV1c2FibGUgY29tcG9uZW50IGFuZCBpbiB0aGlzIGNvbXBvbmVudCBpbnRlZ3JhdGVzIGFsbCBncm91cCBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdGllcyBhbmQgdGhpcyB3aWxsIGJlIGVudHJ5IGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgZ3JvdXBzIHdoZW4gaXQgaXMgY29uc3VtZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zLlxyXG4gKiBAY2xhc3MgR3JvdXBzQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWdyb3VwcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBTZWFyY2hDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcclxuICAgIExlZ2VuZENvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncm91cHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0FsZXJ0c1NlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICB2aWV3R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBzO1xyXG4gIGNyZWF0ZUdyb3VwVGV4dCA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVHcm91cDtcclxuICBlZGl0R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5lZGl0R3JvdXA7XHJcbiAgZWRpdFVzZXJSb2xlc1RleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRVc2VyUm9sZXM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcbiAgaXNHcm91cFNlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBjaGlsZEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RlZEdyb3VwVHlwZSE6IFNlbGVjdE9wdGlvbjtcclxuICBwYXJlbnRHcm91cHNJbmZvITogR3JvdXBJbmZvW107XHJcbiAgc2VsZWN0R3JvdXBPcHRpb25zITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVsZXRlZEdyb3VwSWQhOiBzdHJpbmc7XHJcbiAgZGVsZXRlR3JvdXBOYW1lITogc3RyaW5nO1xyXG4gIGdyb3VwVHlwZXMhOiBHcm91cFR5cGVDb25maWdWYWx1ZTtcclxuICBzZWFyY2hQbGFjZUhvbGRlclRleHQ6IHN0cmluZyA9IHRoaXMudmlld0dyb3VwVGV4dHM/LnBsYWNlaG9sZGVyVGV4dD8uc2VhcmNoO1xyXG4gIGZpbHRlclBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5maWx0ZXI7XHJcbiAgY3JlYXRlR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5jcmVhdGVHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuYWRkLFxyXG4gIH07XHJcbiAgZmlsdGVyR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDIsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5maWx0ZXJHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuZmlsdGVyLFxyXG4gIH07XHJcbiAgZ3JvdXBzTGVnZW5kczogTGVnZW5kW10gPSBbXTtcclxuICBnZXRHcm91cHNQYXlsb2FkOiBHZXRHcm91cHNQYXlsb2FkID0geyBncm91cElkOiAnJywgZ3JvdXBUeXBlSWQ6ICcnIH07XHJcbiAgQElucHV0KCkgZ3JvdXBzUGFnZUluZm86IHtcclxuICAgIGdyb3Vwc1RpdGxlOiBzdHJpbmc7XHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIH0gPSB7XHJcbiAgICBncm91cHNUaXRsZTogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzVGl0bGUsXHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzRGVzY3JpcHRpb24sXHJcbiAgfTtcclxuICBASW5wdXQoKSBhcHBsaWNhdGlvbklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBwZXJtaXNzaW9uVHlwZSA9IFBlcm1pc3Npb25UeXBlO1xyXG4gIGZ1bmN0aW9uVHlwZSE6IEdyb3VwRnVuY3Rpb25UeXBlO1xyXG4gIGFsaWdubWVudFR5cGUgPSBBbGlnblR5cGU7XHJcbiAgaXNTb3J0aW5nID0gdHJ1ZTtcclxuICBjYW5SZW9wZW5WaWV3Um9zdGVyTW9kYWwgPSBmYWxzZTtcclxuICBzZWFyY2hUeXBlOiBTZWFyY2hUeXBlID0gU2VhcmNoVHlwZS5PTl9DTElDSztcclxuICBtaW5DaGFyYWN0ZXJUb1NlYXJjaCA9IDM7XHJcbiAgdHJpbW1lZFNlYXJjaFRlcm0gPSAnJztcclxuICB1c2VyR3JvdXBQZXJtaXNzaW9ucyE6IEdyb3VwUGVybWlzc2lvbltdO1xyXG4gIHN1cHBvcnRNZXNzYWdlITogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGFsZXJ0U2VydmljZTogQWxlcnRzU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZ2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZTogR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSB1c2VyUGVybWlzc2lvbnNTZXJ2aWNlOiBVc2VyUGVybWlzc2lvbnNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGdyb3VwUGVybWlzc2lvbnNTZXJ2aWNlOiBHcm91cFBlcm1pc3Npb25zTWFwU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IHsgbWF0Y2hlczogYm9vbGVhbiB9KSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc01vYmlsZVZpZXcgPSByZXN1bHQ/Lm1hdGNoZXM7XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5vcGVuTW9kYWxOb3RpZmllcj8ubmV4dChHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUik7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgdGhlIGdyb3VwcyBjb21wb25lbnQuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMudmlld0dyb3VwVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMubWluQ2hhcmFjdGVyVG9TZWFyY2ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDI7XHJcbiAgICB0aGlzLnVzZXJHcm91cFBlcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLmZpbHRlclVzZXJHcm91cFBlcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U/LmdldEdsb2JhbEdyb3VwUGVybWlzc2lvbnMoKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFVzZXJHcm91cFBlcm1pc3Npb25zKHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmdldEdyb3VwVHlwZXMoKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ub3Blbk1vZGFsTm90aWZpZXJcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUpIHtcclxuICAgICAgICAgIHRoaXMub3BlbkVkaXRVc2VyUm9sZXNNb2RhbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuQWRkVXNlclJvc3Rlck1vZGFsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgcGVybWlzc2lvblR5cGUsXHJcbiAgICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBjcmVhdGUgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IFtwYXJlbnRHcm91cEluZm9dIC1BbiBvcHRpb25hbCBwYXJhbWV0ZXIuIFBhcmVudCBncm91cCBpbmZvIHRvIGJlIHBhc3NlZCBmb3IgY3JlYXRlIGNoaWxkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQ3JlYXRlR3JvdXBGb3JtKHBhcmVudEdyb3VwSW5mbz86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZS5nZXRMb2FkZWRHcm91cFR5cGVzKCk7XHJcbiAgICBpZiAoZ3JvdXBUeXBlcyAmJiBncm91cFR5cGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8ocGFyZW50R3JvdXBJbmZvID8/IHVuZGVmaW5lZCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURSk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmhlYWRpbmcsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZUdyb3VwQ29tcG9uZW50LFxyXG4gICAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURTtcclxuICAgICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1jcmVhdGUtZ3JvdXAnLCBwYXJlbnRHcm91cEluZm8pO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShBbGVydFR5cGUuRVJST1IsIHRoaXMuY29uc3RhbnRzPy5lcnJvcnM/LlsnMTAxMCddKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtFZGl0R3JvdXBBbmRQYXJlbnRJbmZvfSBlZGl0R3JvdXBJbmZvIC1lZGl0aW5nIGdyb3VwIGFuZCBpdHMgcGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBwb3B1bGF0aW5nIGVkaXQgZ3JvdXAgZm9ybSBmaWVsZHMuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0R3JvdXBGb3JtKGVkaXRHcm91cEluZm86IEVkaXRHcm91cEFuZFBhcmVudEluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8oXHJcbiAgICAgIGVkaXRHcm91cEluZm8/Lmdyb3VwSW5mbyxcclxuICAgICAgZWRpdEdyb3VwSW5mbz8ucGFyZW50R3JvdXBJbmZvXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBlZGl0R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVHcm91cENvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LWdyb3VwJywgZWRpdEdyb3VwSW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IHVzZXIgcm9sZXMgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0VXNlclJvbGVzTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBzZWxlY3RlZFVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEVkaXRVc2VyUm9sZXNDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKHRoaXMuZnVuY3Rpb25UeXBlKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtZWRpdC11c2VyLXJvbGVzJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBhZGQgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uaGVhZGluZyxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZSh0aGlzLmZ1bmN0aW9uVHlwZSk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWFkZC11c2VyLXJvc3RlcicpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdSb3N0ZXIoZ3JvdXA6IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogZ3JvdXA/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBWaWV3Um9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNX0FORF9DT05URU5ULFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRTZWxlY3RlZEdyb3VwSW5mbyhncm91cCk7XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLXZpZXctcm9zdGVyJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIG1vZGFsIGNvbXBvbmVudCB3aXRoIGZvciByZWNlaXZlZCBwYXJhbXMgYW5kIGhhbmRsZXMgZm9ybSBzdWJtaXNzaW9uIHN1Y2Nlc3MgYW5kIGVycm9ycy5cclxuICAgKiBAcGFyYW0geyp9IGRpYWxvZ09wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXNzTmFtZV1cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbmZlcnJhYmxlLXR5cGVzLCBuby11bnVzZWQtdmFyc1xyXG4gIG9wZW5Nb2RhbChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBkaWFsb2dPcHRpb25zOiBhbnksXHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmcsXHJcbiAgICBncm91cEluZm8/OiBHcm91cEluZm8gfCBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUgPz8gJyc7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxvZ09wdGlvbnMsXHJcbiAgICAgIHdpZHRoOlxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUiB8fFxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUgfHxcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6ICdhdXRvJyxcclxuICAgICAgcGFuZWxDbGFzczogWydpZWVlc2EtbW9kYWwtZGlhbG9nJywgY2xhc3NOYW1lXSxcclxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LnN1Ym1pdEZvcm1SZXNwb25zZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIG5vLXVudXNlZC12YXJzXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmZ1bmN0aW9uVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFOiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlR3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEdyb3VwSW5mbztcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY3JlYXRlR3JvdXBJbmZvKSB0aGlzLmdldEdyb3VwcyhjcmVhdGVHcm91cEluZm8pO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVDoge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdEdyb3VwVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgaXNQYXJlbnRHcm91cENoYW5nZWQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5nZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cygpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0R3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEVkaXRHcm91cEFuZFBhcmVudEluZm87XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVkaXRHcm91cEluZm8/LnBhcmVudEdyb3VwSW5mbz8uZ3JvdXBJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRHcm91cEZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICAgIEdyb3VwRnVuY3Rpb25UeXBlLlJFQVNTSUdOX1BBUkVOVF9HUk9VUFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFBhcmVudEdyb3VwQ2hhbmdlU3RhdHVzKGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICB9IGVsc2UgdGhpcy5nZXRHcm91cHMoZWRpdEdyb3VwSW5mby5wYXJlbnRHcm91cEluZm8pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkVESVRfUk9TVEVSX1VTRVJfUk9MRToge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0Um9zdGVyRnVuY3Rpb25UeXBlKFxyXG4gICAgICAgICAgICAgIFJvc3RlckZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5BRERfVVNFUl9UT19ST1NURVI6IHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmNhblNob3dNZXNzYWdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFJvc3RlckZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uZm9ybUNhbmNlbFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVIgfHxcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdSb3N0ZXIodGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgID8uYWZ0ZXJPcGVuZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVIgfHxcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgPy5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3Um9zdGVyKHRoaXMuZ3JvdXBzU2VydmljZS5zZWxlY3RlZEdyb3VwSW5mbyBhcyBHcm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gZ2V0IHVzZXIgY29uZmlybWF0aW9uIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQG1lbWJlcm9mIEdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvcGVuRGVsZXRlQ29uZmlybWF0aW9uTW9kYWwoZ3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSBzY3JlZW5UZXh0cz8uZGVsZXRlR3JvdXA/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVHcm91cE1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6XHJcbiAgICAgICAgY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZSArIGdyb3VwSW5mbz8uZ3JvdXBOYW1lICsgJz8nLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogdGhpcy5hbGlnbm1lbnRUeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkZWxldGVHcm91cE1vZGFsT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiB0aGlzLmNvbnN0YW50cz8uYXJpYUxhYmVsPy5hbGVydCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZUdyb3VwKGdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgc2VuZHMgQVBJIFJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgaGFuZGxlcyB0aGUgc3VjY2VzcyBhbmQgZXJyb3IgcmVzcG9uc2Ugb2YgdGhlIGh0dHAgcmVxdWVzdC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVHcm91cChncm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBUZXh0ID0gc2NyZWVuVGV4dHM/LmRlbGV0ZUdyb3VwO1xyXG4gICAgdGhpcy5kZWxldGVHcm91cE5hbWUgPSBncm91cEluZm8/Lmdyb3VwTmFtZTtcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwUGF5bG9hZDogRGVsZXRlR3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogZ3JvdXBJbmZvPy5ncm91cElkLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZGVsZXRlR3JvdXAoZGVsZXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZS5pZCAhPT0gJycpXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZGVsZXRlZEdyb3VwSWQgPSBncm91cEluZm8/Lmdyb3VwSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgZ3JvdXBJbmZvPy5ncm91cE5hbWUgKyBkZWxldGVHcm91cFRleHQ/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LmRlbGV0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgc2VhcmNoIGZpZWxkIG9uIGNsaWNrIG9mIHNlYXJjaCBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cFNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIEZpbHRlciBieSBkcm9wZG93biBvcHRpb25zIG9uIGNsaWNrIG9mIGZpbHRlciBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2hvd0dyb3VwRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgZ3JvdXBzIHRob3NlIGFyZSBjb25maWd1cmVkIHdpdGggc2VsZWN0ZWQgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuXHJcbiAgb25Hcm91cFNlYXJjaENsaWNrKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9IHNlYXJjaFRlcm0udHJpbSgpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlLlNFQVJDSCk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnRyaW1tZWRTZWFyY2hUZXJtICYmXHJcbiAgICAgICh0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdEdyb3VwT3B0aW9uc1swXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy50cmltbWVkU2VhcmNoVGVybSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zWzBdO1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSAhIXRoaXMudHJpbW1lZFNlYXJjaFRlcm07XHJcbiAgICB0aGlzLm9uR3JvdXBTZWFyY2goKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ3JvdXBzQnlOYW1lQWNyb255bSh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gW107XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0IGdyb3VwIHR5cGUgb3B0aW9ucyBmcm9tIGdyb3VwVHlwZXMgcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHsqfSAge1NlbGVjdE9wdGlvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVPcHRpb25zKCk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIHRoaXMubGVnZW5kQ29sb3IoKTtcclxuICAgIGNvbnN0IGdyb3VwVHlwZU9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgICBncm91cFR5cGVPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogJycsXHJcbiAgICAgIG5hbWU6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFsbEdyb3VwVHlwZXNPcHRpb24sXHJcbiAgICB9KTtcclxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ3JvdXBUeXBlcyk/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgZ3JvdXBUeXBlT3B0aW9ucy5wdXNoKHsgaWQ6IG5vZGVbMF0sIG5hbWU6IG5vZGVbMV0/Lm5hbWUgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncm91cFR5cGVPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGxlZ2VuZCBjb2xvciBmcm9tIGdyb3VwVHlwZXMgcmVzcG9uc2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbGVnZW5kQ29sb3IoKTogdm9pZCB7XHJcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmdyb3VwVHlwZXMpPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGVnZW5kcz8ucHVzaCh7XHJcbiAgICAgICAgY29sb3I6IG5vZGVbMV0/LmxlZ2VuZENvbG9yLFxyXG4gICAgICAgIGxhYmVsOiBub2RlWzFdPy5uYW1lLFxyXG4gICAgICAgIGhpZXJhcmNoeTogbm9kZVsxXT8uaGllcmFyY2h5LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgZmxhZyBhbmQgbG9hZHMgcGFyZW50IGdyb3VwIGluZm8gYXMgcGVyIHNlbGVjdGVkIGZpbHRlciBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBUeXBlRmlsdGVyZWQoZXZlbnQ6IFNlbGVjdE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSAhIXRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkO1xyXG4gICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICBncm91cElkOiAnJyxcclxuICAgICAgZ3JvdXBUeXBlSWQ6IHRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkIGFzIHN0cmluZyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dHcm91cEZpbHRlcigpO1xyXG4gICAgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRklMVEVSKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCB0aGUgcGFyZW50IGdyb3VwcyBpbmZvcm1hdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKGdyb3VwPzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICAgIGdyb3VwSWQ6IGdyb3VwPy5ncm91cElkID8/ICcnLFxyXG4gICAgICAgIGdyb3VwVHlwZUlkOiAnJyxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5nZXRHcm91cHNQYXlsb2FkLmdyb3VwVHlwZUlkID09PSAnJykge1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgICAgZ3JvdXBJZDogJycsXHJcbiAgICAgICAgZ3JvdXBUeXBlSWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cHModGhpcy5nZXRHcm91cHNQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGlsZEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGdyb3VwVHlwZSBpbmZvIHdpdGggZ3JvdXAgcmVzcG9uc2UgZnJvbSBncm91cFR5cGUgcmVzcG9uc2VcclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb1tdfSByZXNwb25zZVxyXG4gICAqIEByZXR1cm4geyp9ICB7R3JvdXBJbmZvW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlOiBHcm91cEluZm9bXSk6IEdyb3VwSW5mb1tdIHtcclxuICAgIHJlc3BvbnNlPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGdyb3VwVHlwZUluZm86IEdyb3VwVHlwZSA9IHRoaXMuZ3JvdXBUeXBlc1tub2RlLmdyb3VwVHlwZV07XHJcbiAgICAgIG5vZGUuZ3JvdXBUeXBlSW5mbyA9IGdyb3VwVHlwZUluZm87XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGdyb3VwIHR5cGVzLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRGb3JtYXR0ZWRHcm91cFR5cGVzKFxyXG4gICAgICAgICAgICAgIHJlcz8uYm9keVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEdyb3VwT3B0aW9ucyA9IHRoaXMuZ2V0R3JvdXBUeXBlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlID0gdGhpcy5zZWxlY3RHcm91cE9wdGlvbnNbMF07XHJcbiAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhbGVydHMgZm9yIHN1Y2Nlc3MsIGVycm9yIGFuZCB3YXJuaW5nLlxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IHN0cmluZ1tdKX0gbWVzc2FnZSAtc3VjY2VzcyBvciBlcnJvciBvciB3YXJuaW5nIG1lc3NhZ2UuXHJcbiAgICogQHBhcmFtIHtBbGVydFR5cGV9IGFsZXJ0VHlwZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyBpdCBiYXNlZCBvbiB0aGUgY3VzdG9tIG9yIEh0dHAgZXJyb3JzLlxyXG4gICAqIEBwYXJhbSB7SHR0cEVycm9yUmVzcG9uc2V9IGVycm9yXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXM6IHN0cmluZ1tdID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykpIHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5wYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzKTtcclxuICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDA4JykpIHtcclxuICAgICAgICBlcnJvck1lc3NhZ2VbMF0gPSB0aGlzLmRlbGV0ZUdyb3VwTmFtZSArIGVycm9yTWVzc2FnZT8uWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShBbGVydFR5cGUuRVJST1IsIGVycm9yTWVzc2FnZSk7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAxMCcpKSB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U/LmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1ncm91cHMgcHgtNFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19faW5mbyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnaWVlZXNhLWdyb3Vwc19faW5mby0td2hpdGUtYmcnXHJcbiAgICAgICAgOiAnaWVlZXNhLWdyb3Vwc19faW5mby0tYmx1ZS1iZydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgY2xhc3M9XCJtYi0wXCJcclxuICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgICA/ICdpZWVlc2EtdGl0bGUtbGctMjQgcC0wJ1xyXG4gICAgICAgICAgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTMyIGllZWVzYS1ncm91cHNfX2luZm9fX2hlYWRpbmcnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGdyb3Vwc1BhZ2VJbmZvLmdyb3Vwc1RpdGxlIH19XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJ2llZWVzYS1ncm91cHNfX2luZm9fX2FjdGlvbidcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApIHx8XHJcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzcyh0aGlzLnBlcm1pc3Npb25UeXBlLk1BTkFHRV9BTExfR1JPVVBTKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19jcmVhdGUtc3ViZ3JvdXAgbWF0LXRlcnRpYXJ5LWJ1dHRvbiBkLW5vbmUgZC1zbS1ub25lIGQtbWQtYmxvY2sgZC1sZy1ibG9jayBkLXhsLWJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgpXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uYXJpYUxhYmVsPy5hZGRHcm91cFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHM/LnZpZXdHcm91cHM/LmFkZEdyb3VwIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZ3JvdXBzX19tb2JpbGUtaWNvbnMgZ2FwLTJcIlxyXG4gICAgPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiY3JlYXRlR3JvdXBJY29uXCJcclxuICAgICAgICAqbmdJZj1cIih2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5DUkVBVEVfUk9PVF9HUk9VUCkgfHwgIHZhbGlkYXRlQWNjZXNzKHRoaXMucGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9HUk9VUFMpKVwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiZmlsdGVyR3JvdXBJY29uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cInNob3dHcm91cEZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uYXJpYUxhYmVsPy5zZWFyY2hcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkdyb3VwU2VhcmNoKClcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzIHNlYXJjaC1ncm91cC1pY29uXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19fYWN0aW9uc1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0td2hpdGUtYmcnXHJcbiAgICAgICAgOiAnaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0tYmx1ZS1iZydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1ncm91cHNfX2FjdGlvbnMtLXNlYXJjaCByb3dcIj5cclxuICAgICAgPHBcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2IG9yZGVyLTIgb3JkZXItc20tMSBjb2wtMTIgY29sLW1kLTcgY29sLWxnLTcgY29sLXhsLTdcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ3JvdXBzUGFnZUluZm8uZ3JvdXBzRGVzY3JpcHRpb24gfX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICgoaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCBpc0dyb3VwRmlsdGVyQWN0aXZlKSAmJiBpc01vYmlsZVZpZXcpIHx8XHJcbiAgICAgICAgICAhaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm9yZGVyLTEgb3JkZXItc20tMiBjb2wtMTIgY29sLW1kLTUgY29sLWxnLTUgY29sLXhsLTUgZC1mbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgICAgICAqbmdJZj1cImlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgIWlzTW9iaWxlVmlld1wiXHJcbiAgICAgICAgICAoc2VhcmNoVmFsdWUpPVwib25Hcm91cFNlYXJjaENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwidHJpbW1lZFNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzZWFyY2hQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgW21pbkNoYXJhY3RlclRvU2VhcmNoXT1cIm1pbkNoYXJhY3RlclRvU2VhcmNoXCJcclxuICAgICAgICAgIFtzdXBwb3J0TWVzc2FnZV09XCJzdXBwb3J0TWVzc2FnZVwiXHJcbiAgICAgICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuXHJcbiAgICAgICAgPGllZWVzYS1zZWxlY3RcclxuICAgICAgICAgICpuZ0lmPVwiaXNHcm91cEZpbHRlckFjdGl2ZSB8fCAhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1lbmQgcHQtbGctNCBwdC1tZC00IHB0LXhsLTRcIlxyXG4gICAgICAgICAgW2lzU29ydE5lZWRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZHJvcGRvd25PcHRpb25zXT1cInNlbGVjdEdyb3VwT3B0aW9uc1wiXHJcbiAgICAgICAgICBbaXNMYWJlbEFsaWduZWRMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NlbGVjdExhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uZmlsdGVyQnlMYWJlbFwiXHJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25Hcm91cFR5cGVGaWx0ZXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiZmlsdGVyUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgICAgIFtzZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRHcm91cFR5cGVcIlxyXG4gICAgICAgID48L2llZWVzYS1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aWVlZXNhLXRyZWVcclxuICAgICAgKm5nSWY9XCJwYXJlbnRHcm91cHNJbmZvICYmIHBhcmVudEdyb3Vwc0luZm8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIFtwYXJlbnRHcm91cHNJbmZvXT1cInBhcmVudEdyb3Vwc0luZm9cIlxyXG4gICAgICBbY2hpbGRHcm91cHNJbmZvXT1cImNoaWxkR3JvdXBzSW5mb1wiXHJcbiAgICAgIFtkZWxldGVkR3JvdXBJZEluZm9dPVwiZGVsZXRlZEdyb3VwSWRcIlxyXG4gICAgICBbaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXT1cImlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZVwiXHJcbiAgICAgIFt1c2VyR3JvdXBQZXJtaXNzaW9uc109XCJ1c2VyR3JvdXBQZXJtaXNzaW9uc1wiXHJcbiAgICAgICh0b2dnbGVHcm91cENsaWNrKT1cImdldEdyb3VwcygkZXZlbnQpXCJcclxuICAgICAgKGNyZWF0ZUdyb3VwQ2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgICAgKGRlbGV0ZUdyb3VwQ2xpY2spPVwib3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gICAgICAodmlld1Jvc3RlckNsaWNrKT1cInZpZXdSb3N0ZXIoJGV2ZW50KVwiXHJcbiAgICAgIChlZGl0R3JvdXBDbGljayk9XCJvcGVuRWRpdEdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgID48L2llZWVzYS10cmVlPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInBhcmVudEdyb3Vwc0luZm8gJiYgcGFyZW50R3JvdXBzSW5mby5sZW5ndGggPiAwXCJcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1zbS1yb3cgZmxleC1tZC1yb3cgbXQtNCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQganVzdGlmeS1jb250ZW50LXNtLWVuZFwiXHJcbiAgICA+XHJcbiAgICAgIDxwIGNsYXNzPVwicHgtc20tMyBkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgaWVlZXNhLWxhYmVsLWxnLWJvbGQtMTZcIj5cclxuICAgICAgICB7eyBjb25zdGFudHM/LnZpZXdHcm91cHM/LmxlZ2VuZCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxpZWVlc2EtbGVnZW5kXHJcbiAgICAgICAgW2xlZ2VuZHNdPVwiZ3JvdXBzTGVnZW5kc1wiXHJcbiAgICAgICAgW2lzU29ydGluZ109XCJpc1NvcnRpbmdcIlxyXG4gICAgICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
633
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2dyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9ncm91cHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFFeEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFDTCxjQUFjLEVBRWQsbUJBQW1CLEVBRW5CLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsZUFBZSxFQUNmLGVBQWUsRUFFZixVQUFVLEVBQ1YsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRS9FLE9BQU8sRUFDTCxTQUFTLEVBQ1QsU0FBUyxFQUVULGFBQWEsR0FFZCxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7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LENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQXptQlUsZUFBZTttR0FBZixlQUFlLDhOQUZmLENBQUMsYUFBYSxDQUFDLDBCQzVFNUIsMjBKQWdJQSxnN1NEaEVJLFlBQVksZ09BQ1osZUFBZSw4QkFDZixlQUFlLDRRQUNmLGVBQWUsMk1BQ2YsZUFBZSwrU0FDZixpQkFBaUIsa1NBQ2pCLGVBQWUsNEZBQ2YsbUJBQW1COzs0RkFPVixlQUFlO2tCQW5CM0IsU0FBUzsrQkFFRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsbUJBQW1CO3FCQUNwQixpQkFHYyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsYUFBYSxDQUFDO3NUQXdDakIsY0FBYztzQkFBdEIsS0FBSztnQkFPRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgQ3JlYXRlR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLWdyb3VwL2NyZWF0ZS1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cHMuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcm91cEluZm8gfSBmcm9tICcuL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHtcclxuICBNb2RhbENvbXBvbmVudCxcclxuICBTZWxlY3RPcHRpb24sXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uLFxyXG4gIEFsaWduVHlwZSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBTZWxlY3RDb21wb25lbnQsXHJcbiAgTGVnZW5kQ29tcG9uZW50LFxyXG4gIExlZ2VuZCxcclxuICBTZWFyY2hUeXBlLFxyXG4gIFNlYXJjaENvbXBvbmVudCxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEdyb3VwVHlwZSwgR3JvdXBUeXBlQ29uZmlnVmFsdWUgfSBmcm9tICcuL21vZGVscy9ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgTW9kYWxUeXBlLFxyXG4gIEFsZXJ0VHlwZSxcclxuICBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgR2xvYmFsRXJyb3JIYW5kbGVyU2VydmljZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2dyb3VwLWZ1bmN0aW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3N0ZXJGdW5jdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9yb3N0ZXItZnVuY3Rpb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdldEdyb3Vwc1BheWxvYWQgfSBmcm9tICcuL21vZGVscy92aWV3LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgRGVsZXRlR3JvdXBQYXlsb2FkIH0gZnJvbSAnLi9tb2RlbHMvZGVsZXRlLWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgQWRkVXNlclJvc3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hZGQtdXNlci1yb3N0ZXIvYWRkLXVzZXItcm9zdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZpZXdSb3N0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdmlldy1yb3N0ZXIvdmlldy1yb3N0ZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRWRpdEdyb3VwQW5kUGFyZW50SW5mbyB9IGZyb20gJy4vbW9kZWxzL2VkaXQtZ3JvdXAubW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0VXNlclJvbGVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VkaXQtdXNlci1yb2xlcy9lZGl0LXVzZXItcm9sZXMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXNlclBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdXNlci1wZXJtaXNzaW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBHcm91cFBlcm1pc3Npb24sXHJcbiAgVXNlclBlcm1pc3Npb24sXHJcbn0gZnJvbSAnLi9tb2RlbHMvZ3JvdXAtcGVybWlzc2lvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL3Blcm1pc3Npb24tdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ncm91cC1wZXJtaXNzaW9ucy1tYXAtc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJEZXRhaWxzIH0gZnJvbSAnLi9tb2RlbHMvdXNlci5tb2RlbCc7XHJcblxyXG4vKipcclxuICogR3JvdXBzIGNvbXBvbmVudCBpcyBhIHdyYXBwZXIgb3IgY29udGFpbmVyIGNvbXBvbmVudCBmb3IgZ3JvdXBzIG1hbmFnZW1lbnQgcmV1c2FibGUgY29tcG9uZW50IGFuZCBpbiB0aGlzIGNvbXBvbmVudCBpbnRlZ3JhdGVzIGFsbCBncm91cCBtYW5hZ2VtZW50IGZ1bmN0aW9uYWxpdGllcyBhbmQgdGhpcyB3aWxsIGJlIGVudHJ5IGNvbXBvbmVudCBmb3IgbWFuYWdpbmcgZ3JvdXBzIHdoZW4gaXQgaXMgY29uc3VtZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zLlxyXG4gKiBAY2xhc3MgR3JvdXBzQ29tcG9uZW50XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWdyb3VwcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBTZWFyY2hDb21wb25lbnQsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcclxuICAgIExlZ2VuZENvbXBvbmVudCxcclxuICAgIEljb25CdXR0b25Db21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JvdXBzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ncm91cHMuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW0FsZXJ0c1NlcnZpY2VdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgR3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICB2aWV3R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBzO1xyXG4gIGNyZWF0ZUdyb3VwVGV4dCA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVHcm91cDtcclxuICBlZGl0R3JvdXBUZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5lZGl0R3JvdXA7XHJcbiAgZWRpdFVzZXJSb2xlc1RleHRzID0gdGhpcy5jb25zdGFudHM/LmVkaXRVc2VyUm9sZXM7XHJcbiAgYWRkVXNlclJvc3RlclRleHRzID0gdGhpcy5jb25zdGFudHM/LmFkZFVzZXJSb3N0ZXI7XHJcbiAgaXNHcm91cFNlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIGlzR3JvdXBGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICBpc01vYmlsZVZpZXcgPSBmYWxzZTtcclxuICBjaGlsZEdyb3Vwc0luZm8hOiBHcm91cEluZm9bXTtcclxuICBzZWxlY3RlZEdyb3VwVHlwZSE6IFNlbGVjdE9wdGlvbjtcclxuICBwYXJlbnRHcm91cHNJbmZvITogR3JvdXBJbmZvW107XHJcbiAgc2VsZWN0R3JvdXBPcHRpb25zITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVsZXRlZEdyb3VwSWQhOiBzdHJpbmc7XHJcbiAgZGVsZXRlR3JvdXBOYW1lITogc3RyaW5nO1xyXG4gIGdyb3VwVHlwZXMhOiBHcm91cFR5cGVDb25maWdWYWx1ZTtcclxuICBzZWFyY2hQbGFjZUhvbGRlclRleHQ6IHN0cmluZyA9IHRoaXMudmlld0dyb3VwVGV4dHM/LnBsYWNlaG9sZGVyVGV4dD8uc2VhcmNoO1xyXG4gIGZpbHRlclBsYWNlSG9sZGVyVGV4dDogc3RyaW5nID0gdGhpcy52aWV3R3JvdXBUZXh0cz8ucGxhY2Vob2xkZXJUZXh0Py5maWx0ZXI7XHJcbiAgY3JlYXRlR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDEsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5hZGQsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5jcmVhdGVHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuYWRkLFxyXG4gIH07XHJcbiAgZmlsdGVyR3JvdXBJY29uOiBJY29uQnV0dG9uID0ge1xyXG4gICAgaWQ6IDIsXHJcbiAgICBhcmlhTGFiZWw6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFyaWFMYWJlbC5maWx0ZXIsXHJcbiAgICBpY29uVVJMOiB0aGlzLnZpZXdHcm91cFRleHRzPy5maWx0ZXJHcm91cEljb24sXHJcbiAgICB0b29sVGlwOiB0aGlzLnZpZXdHcm91cFRleHRzPy5hcmlhTGFiZWwuZmlsdGVyLFxyXG4gIH07XHJcbiAgZ3JvdXBzTGVnZW5kczogTGVnZW5kW10gPSBbXTtcclxuICBnZXRHcm91cHNQYXlsb2FkOiBHZXRHcm91cHNQYXlsb2FkID0geyBncm91cElkOiAnJywgZ3JvdXBUeXBlSWQ6ICcnIH07XHJcbiAgQElucHV0KCkgZ3JvdXBzUGFnZUluZm86IHtcclxuICAgIGdyb3Vwc1RpdGxlOiBzdHJpbmc7XHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gIH0gPSB7XHJcbiAgICBncm91cHNUaXRsZTogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzVGl0bGUsXHJcbiAgICBncm91cHNEZXNjcmlwdGlvbjogdGhpcy52aWV3R3JvdXBUZXh0cz8uZ3JvdXBzRGVzY3JpcHRpb24sXHJcbiAgfTtcclxuICBASW5wdXQoKSBhcHBsaWNhdGlvbklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFwaUJhc2VVUkwhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgdXNlclBlcm1pc3Npb25zITogVXNlclBlcm1pc3Npb25bXTtcclxuICBASW5wdXQoKSB1c2VySW5mbyE6IFVzZXJEZXRhaWxzO1xyXG4gIHBlcm1pc3Npb25UeXBlID0gUGVybWlzc2lvblR5cGU7XHJcbiAgZnVuY3Rpb25UeXBlITogR3JvdXBGdW5jdGlvblR5cGU7XHJcbiAgYWxpZ25tZW50VHlwZSA9IEFsaWduVHlwZTtcclxuICBpc1NvcnRpbmcgPSB0cnVlO1xyXG4gIGNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gIHNlYXJjaFR5cGU6IFNlYXJjaFR5cGUgPSBTZWFyY2hUeXBlLk9OX0NMSUNLO1xyXG4gIG1pbkNoYXJhY3RlclRvU2VhcmNoID0gMztcclxuICB0cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gIHVzZXJHcm91cFBlcm1pc3Npb25zITogR3JvdXBQZXJtaXNzaW9uW107XHJcbiAgc3VwcG9ydE1lc3NhZ2UhOiBzdHJpbmc7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2U6IEJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBnbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlOiBHbG9iYWxFcnJvckhhbmRsZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHVzZXJQZXJtaXNzaW9uc1NlcnZpY2U6IFVzZXJQZXJtaXNzaW9uc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U6IEdyb3VwUGVybWlzc2lvbnNNYXBTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlclNlcnZpY2VcclxuICAgICAgLmdldEJyZWFrcG9pbnQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogeyBtYXRjaGVzOiBib29sZWFuIH0pID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdD8ubWF0Y2hlcztcclxuICAgICAgfSk7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/Lm9wZW5Nb2RhbE5vdGlmaWVyPy5uZXh0KEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgZ3JvdXBzIGNvbXBvbmVudC5cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldFVzZXJJbmZvKHRoaXMudXNlckluZm8pO1xyXG4gICAgdGhpcy5zdXBwb3J0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMudmlld0dyb3VwVGV4dHM/Lm1pbkNoYXJSZXF1aXJlZFRvU2VhcmNoMSArXHJcbiAgICAgICcgJyArXHJcbiAgICAgIHRoaXMubWluQ2hhcmFjdGVyVG9TZWFyY2ggK1xyXG4gICAgICAnICcgK1xyXG4gICAgICB0aGlzLnZpZXdHcm91cFRleHRzPy5taW5DaGFyUmVxdWlyZWRUb1NlYXJjaDI7XHJcbiAgICB0aGlzLnVzZXJHcm91cFBlcm1pc3Npb25zID1cclxuICAgICAgdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLmZpbHRlclVzZXJHcm91cFBlcm1pc3Npb25zKFxyXG4gICAgICAgIHRoaXMudXNlclBlcm1pc3Npb25zLFxyXG4gICAgICAgIHRoaXMuZ3JvdXBQZXJtaXNzaW9uc1NlcnZpY2U/LmdldEdsb2JhbEdyb3VwUGVybWlzc2lvbnMoKVxyXG4gICAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFVzZXJHcm91cFBlcm1pc3Npb25zKHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnMpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRBcHBDb25maWcodGhpcy5hcGlCYXNlVVJMLCB0aGlzLnVzZXJQZXJtaXNzaW9ucyk7XHJcbiAgICB0aGlzLmdldEdyb3VwVHlwZXMoKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8ub3Blbk1vZGFsTm90aWZpZXJcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgPy5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUpIHtcclxuICAgICAgICAgIHRoaXMub3BlbkVkaXRVc2VyUm9sZXNNb2RhbCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2UgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkFERF9VU0VSX1RPX1JPU1RFUikge1xyXG4gICAgICAgICAgdGhpcy5vcGVuQWRkVXNlclJvc3Rlck1vZGFsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVmFsaWRhdGVzIHBlcm1pc3Npb24gYmFzZWQgYWNjZXNzIGZvciBwcm92aWRlZCBmZWF0dXJlLlxyXG4gICAqIEBwYXJhbSB7UGVybWlzc2lvblR5cGV9IHBlcm1pc3Npb25UeXBlXHJcbiAgICogQHJldHVybiB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGU6IFBlcm1pc3Npb25UeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyUGVybWlzc2lvbnNTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzUGVybWlzc2lvbihcclxuICAgICAgcGVybWlzc2lvblR5cGUsXHJcbiAgICAgIHRoaXMudXNlckdyb3VwUGVybWlzc2lvbnNcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBjcmVhdGUgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IFtwYXJlbnRHcm91cEluZm9dIC1BbiBvcHRpb25hbCBwYXJhbWV0ZXIuIFBhcmVudCBncm91cCBpbmZvIHRvIGJlIHBhc3NlZCBmb3IgY3JlYXRlIGNoaWxkIGdyb3VwLlxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBvcGVuQ3JlYXRlR3JvdXBGb3JtKHBhcmVudEdyb3VwSW5mbz86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZ3JvdXBUeXBlcyA9IHRoaXMuZ3JvdXBzU2VydmljZS5nZXRMb2FkZWRHcm91cFR5cGVzKCk7XHJcbiAgICBpZiAoZ3JvdXBUeXBlcyAmJiBncm91cFR5cGVzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8ocGFyZW50R3JvdXBJbmZvID8/IHVuZGVmaW5lZCk7XHJcbiAgICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0R3JvdXBGdW5jdGlvblR5cGUoR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURSk7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jcmVhdGVHcm91cFRleHQ/LmhlYWRpbmcsXHJcbiAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICBjb21wb25lbnRSZWZlcmVuY2U6IENyZWF0ZUdyb3VwQ29tcG9uZW50LFxyXG4gICAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGU/LkNSRUFURTtcclxuICAgICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1jcmVhdGUtZ3JvdXAnLCBwYXJlbnRHcm91cEluZm8pO1xyXG4gICAgfSBlbHNlXHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShBbGVydFR5cGUuRVJST1IsIHRoaXMuY29uc3RhbnRzPy5lcnJvcnM/LlsnMTAxMCddKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgZGlhbG9nIG9wdGlvbnMgZm9yIGVkaXQgZ3JvdXAgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtFZGl0R3JvdXBBbmRQYXJlbnRJbmZvfSBlZGl0R3JvdXBJbmZvIC1lZGl0aW5nIGdyb3VwIGFuZCBpdHMgcGFyZW50IGdyb3VwIGluZm8gdG8gYmUgcGFzc2VkIGZvciBwb3B1bGF0aW5nIGVkaXQgZ3JvdXAgZm9ybSBmaWVsZHMuXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0R3JvdXBGb3JtKGVkaXRHcm91cEluZm86IEVkaXRHcm91cEFuZFBhcmVudEluZm8pOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZT8uc2V0U2VsZWN0ZWRHcm91cEluZm8oXHJcbiAgICAgIGVkaXRHcm91cEluZm8/Lmdyb3VwSW5mbyxcclxuICAgICAgZWRpdEdyb3VwSW5mbz8ucGFyZW50R3JvdXBJbmZvXHJcbiAgICApO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBlZGl0R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBDcmVhdGVHcm91cENvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlPy5FRElUO1xyXG4gICAgdGhpcy5vcGVuTW9kYWwoZGlhbG9nT3B0aW9ucywgJ2llZWVzYS1lZGl0LWdyb3VwJywgZWRpdEdyb3VwSW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBlZGl0IHVzZXIgcm9sZXMgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5FZGl0VXNlclJvbGVzTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBzZWxlY3RlZFVzZXJJbmZvID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRTZWxlY3RlZFVzZXJJbmZvKCk7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiBzZWxlY3RlZFVzZXJJbmZvPy5uYW1lLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEVkaXRVc2VyUm9sZXNDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5mdW5jdGlvblR5cGUgPSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEU7XHJcbiAgICB0aGlzLmdyb3Vwc1NlcnZpY2U/LnNldEdyb3VwRnVuY3Rpb25UeXBlKHRoaXMuZnVuY3Rpb25UeXBlKTtcclxuICAgIHRoaXMub3Blbk1vZGFsKGRpYWxvZ09wdGlvbnMsICdpZWVlc2EtZWRpdC11c2VyLXJvbGVzJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRpYWxvZyBvcHRpb25zIGZvciBhZGQgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5BZGRVc2VyUm9zdGVyTW9kYWwoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLmFkZFVzZXJSb3N0ZXJUZXh0cz8uaGVhZGluZyxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBBZGRVc2VyUm9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZnVuY3Rpb25UeXBlID0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZSh0aGlzLmZ1bmN0aW9uVHlwZSk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLWFkZC11c2VyLXJvc3RlcicpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkaWFsb2cgb3B0aW9ucyBmb3IgdXNlcnMgbW9kYWwgYW5kIGNhbGxzIG9wZW5Nb2RhbCBtZXRob2QuXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdSb3N0ZXIoZ3JvdXA6IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGlhbG9nT3B0aW9ucyA9IHtcclxuICAgICAgaGVhZGluZzogZ3JvdXA/Lmdyb3VwTmFtZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgY29tcG9uZW50UmVmZXJlbmNlOiBWaWV3Um9zdGVyQ29tcG9uZW50LFxyXG4gICAgICBtb2RhbFR5cGU6IE1vZGFsVHlwZS5GT1JNX0FORF9DT05URU5ULFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRTZWxlY3RlZEdyb3VwSW5mbyhncm91cCk7XHJcbiAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9IEdyb3VwRnVuY3Rpb25UeXBlLlZJRVdfUk9TVEVSO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRURJVCk7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbChkaWFsb2dPcHRpb25zLCAnaWVlZXNhLXZpZXctcm9zdGVyJyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIG1vZGFsIGNvbXBvbmVudCB3aXRoIGZvciByZWNlaXZlZCBwYXJhbXMgYW5kIGhhbmRsZXMgZm9ybSBzdWJtaXNzaW9uIHN1Y2Nlc3MgYW5kIGVycm9ycy5cclxuICAgKiBAcGFyYW0geyp9IGRpYWxvZ09wdGlvbnNcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2NsYXNzTmFtZV1cclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbmZlcnJhYmxlLXR5cGVzLCBuby11bnVzZWQtdmFyc1xyXG4gIG9wZW5Nb2RhbChcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICBkaWFsb2dPcHRpb25zOiBhbnksXHJcbiAgICBjbGFzc05hbWU/OiBzdHJpbmcsXHJcbiAgICBncm91cEluZm8/OiBHcm91cEluZm8gfCBFZGl0R3JvdXBBbmRQYXJlbnRJbmZvXHJcbiAgKTogdm9pZCB7XHJcbiAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUgPz8gJyc7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxvZ09wdGlvbnMsXHJcbiAgICAgIHdpZHRoOlxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5WSUVXX1JPU1RFUiB8fFxyXG4gICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEUgfHxcclxuICAgICAgICB0aGlzLmZ1bmN0aW9uVHlwZSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICAgICAgICA/ICcnXHJcbiAgICAgICAgICA6ICdhdXRvJyxcclxuICAgICAgcGFuZWxDbGFzczogWydpZWVlc2EtbW9kYWwtZGlhbG9nJywgY2xhc3NOYW1lXSxcclxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZj8uY29tcG9uZW50SW5zdGFuY2U/LnN1Ym1pdEZvcm1SZXNwb25zZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnksIG5vLXVudXNlZC12YXJzXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLmZ1bmN0aW9uVHlwZSkge1xyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uQ1JFQVRFOiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgdGhpcy5jcmVhdGVHcm91cFRleHQ/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgY3JlYXRlR3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEdyb3VwSW5mbztcclxuICAgICAgICAgICAgaWYgKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwU2VhcmNoQ2xpY2sodGhpcy50cmltbWVkU2VhcmNoVGVybSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUuaWQgIT09ICcnKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoY3JlYXRlR3JvdXBJbmZvKSB0aGlzLmdldEdyb3VwcyhjcmVhdGVHcm91cEluZm8pO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY2FzZSBHcm91cEZ1bmN0aW9uVHlwZT8uRURJVDoge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIHRoaXMuZWRpdEdyb3VwVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnN1Ym1pc3Npb25cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc3QgaXNQYXJlbnRHcm91cENoYW5nZWQgPVxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5nZXRQYXJlbnRHcm91cENoYW5nZVN0YXR1cygpO1xyXG4gICAgICAgICAgICBjb25zdCBlZGl0R3JvdXBJbmZvID0gZ3JvdXBJbmZvIGFzIEVkaXRHcm91cEFuZFBhcmVudEluZm87XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAgICAgICAgIHRoaXMub25Hcm91cFNlYXJjaENsaWNrKHRoaXMudHJpbW1lZFNlYXJjaFRlcm0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlLmlkICE9PSAnJylcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBUeXBlRmlsdGVyZWQodGhpcy5zZWxlY3RlZEdyb3VwVHlwZSk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGVkaXRHcm91cEluZm8/LnBhcmVudEdyb3VwSW5mbz8uZ3JvdXBJZCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1BhcmVudEdyb3VwQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzU2VydmljZS5zZXRHcm91cEZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICAgIEdyb3VwRnVuY3Rpb25UeXBlLlJFQVNTSUdOX1BBUkVOVF9HUk9VUFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFBhcmVudEdyb3VwQ2hhbmdlU3RhdHVzKGZhbHNlKTtcclxuICAgICAgICAgICAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgICAgICAgICB9IGVsc2UgdGhpcy5nZXRHcm91cHMoZWRpdEdyb3VwSW5mby5wYXJlbnRHcm91cEluZm8pO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNhc2UgR3JvdXBGdW5jdGlvblR5cGU/LkVESVRfUk9TVEVSX1VTRVJfUk9MRToge1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuY2FuU2hvd01lc3NhZ2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1NlcnZpY2Uuc2V0Um9zdGVyRnVuY3Rpb25UeXBlKFxyXG4gICAgICAgICAgICAgIFJvc3RlckZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjYXNlIEdyb3VwRnVuY3Rpb25UeXBlPy5BRERfVVNFUl9UT19ST1NURVI6IHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmNhblNob3dNZXNzYWdlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldFJvc3RlckZ1bmN0aW9uVHlwZShcclxuICAgICAgICAgICAgICBSb3N0ZXJGdW5jdGlvblR5cGUuQUREX1VTRVJfVE9fUk9TVEVSXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmPy5jb21wb25lbnRJbnN0YW5jZT8uZm9ybUNhbmNlbFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVIgfHxcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnZpZXdSb3N0ZXIodGhpcy5ncm91cHNTZXJ2aWNlLnNlbGVjdGVkR3JvdXBJbmZvIGFzIEdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgID8uYWZ0ZXJPcGVuZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5BRERfVVNFUl9UT19ST1NURVIgfHxcclxuICAgICAgICAgIHRoaXMuZnVuY3Rpb25UeXBlID09PSBHcm91cEZ1bmN0aW9uVHlwZS5FRElUX1JPU1RFUl9VU0VSX1JPTEVcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgPy5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY2FuUmVvcGVuVmlld1Jvc3Rlck1vZGFsKSB7XHJcbiAgICAgICAgICB0aGlzLmNhblJlb3BlblZpZXdSb3N0ZXJNb2RhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy52aWV3Um9zdGVyKHRoaXMuZ3JvdXBzU2VydmljZS5zZWxlY3RlZEdyb3VwSW5mbyBhcyBHcm91cEluZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gZ2V0IHVzZXIgY29uZmlybWF0aW9uIHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgZ3JvdXAuXHJcbiAgICogQG1lbWJlcm9mIEdyb3VwQ29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvcGVuRGVsZXRlQ29uZmlybWF0aW9uTW9kYWwoZ3JvdXBJbmZvOiBHcm91cEluZm8pOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSBzY3JlZW5UZXh0cz8uZGVsZXRlR3JvdXA/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVHcm91cE1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6XHJcbiAgICAgICAgY29uZmlybWF0aW9uSW5mbz8ucHJvbXB0TWVzc2FnZSArIGdyb3VwSW5mbz8uZ3JvdXBOYW1lICsgJz8nLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogdGhpcy5hbGlnbm1lbnRUeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkZWxldGVHcm91cE1vZGFsT3B0aW9ucyxcclxuICAgICAgd2lkdGg6ICdhdXRvJyxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiB0aGlzLmNvbnN0YW50cz8uYXJpYUxhYmVsPy5hbGVydCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICB0aGlzLmRlbGV0ZUdyb3VwKGdyb3VwSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhpcyBtZXRob2Qgc2VuZHMgQVBJIFJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBncm91cCBhbmQgaGFuZGxlcyB0aGUgc3VjY2VzcyBhbmQgZXJyb3IgcmVzcG9uc2Ugb2YgdGhlIGh0dHAgcmVxdWVzdC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVHcm91cChncm91cEluZm86IEdyb3VwSW5mbyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGVsZXRlR3JvdXBUZXh0ID0gc2NyZWVuVGV4dHM/LmRlbGV0ZUdyb3VwO1xyXG4gICAgdGhpcy5kZWxldGVHcm91cE5hbWUgPSBncm91cEluZm8/Lmdyb3VwTmFtZTtcclxuICAgIGNvbnN0IGRlbGV0ZUdyb3VwUGF5bG9hZDogRGVsZXRlR3JvdXBQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZ3JvdXBJZDogZ3JvdXBJbmZvPy5ncm91cElkLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZGVsZXRlR3JvdXAoZGVsZXRlR3JvdXBQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50cmltbWVkU2VhcmNoVGVybSlcclxuICAgICAgICAgICAgICB0aGlzLm9uR3JvdXBTZWFyY2hDbGljayh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3RlZEdyb3VwVHlwZS5pZCAhPT0gJycpXHJcbiAgICAgICAgICAgICAgdGhpcy5vbkdyb3VwVHlwZUZpbHRlcmVkKHRoaXMuc2VsZWN0ZWRHcm91cFR5cGUpO1xyXG4gICAgICAgICAgICBlbHNlIHRoaXMuZGVsZXRlZEdyb3VwSWQgPSBncm91cEluZm8/Lmdyb3VwSWQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgZ3JvdXBJbmZvPy5ncm91cE5hbWUgKyBkZWxldGVHcm91cFRleHQ/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LmRlbGV0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTaG93cyB0aGUgc2VhcmNoIGZpZWxkIG9uIGNsaWNrIG9mIHNlYXJjaCBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Hcm91cFNlYXJjaCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSA9IHRydWU7XHJcbiAgICB0aGlzLmlzR3JvdXBGaWx0ZXJBY3RpdmUgPSBmYWxzZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2hvd3MgdGhlIEZpbHRlciBieSBkcm9wZG93biBvcHRpb25zIG9uIGNsaWNrIG9mIGZpbHRlciBpY29uIGluIGNhc2Ugb2YgbW9iaWxlIHZpZXdcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2hvd0dyb3VwRmlsdGVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlID0gdHJ1ZTtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaEFjdGl2ZSA9IGZhbHNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSB0byB0cnVlIGFuZCBsb2FkcyB0aGUgZ3JvdXBzIHRob3NlIGFyZSBjb25maWd1cmVkIHdpdGggc2VsZWN0ZWQgZ3JvdXAgdHlwZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGVybVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuXHJcbiAgb25Hcm91cFNlYXJjaENsaWNrKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9IHNlYXJjaFRlcm0udHJpbSgpO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlLlNFQVJDSCk7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnRyaW1tZWRTZWFyY2hUZXJtICYmXHJcbiAgICAgICh0aGlzLmlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgdGhpcy5pc0dyb3VwRmlsdGVyQWN0aXZlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdEdyb3VwT3B0aW9uc1swXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy50cmltbWVkU2VhcmNoVGVybSkgcmV0dXJuO1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IHRoaXMuc2VsZWN0R3JvdXBPcHRpb25zWzBdO1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSAhIXRoaXMudHJpbW1lZFNlYXJjaFRlcm07XHJcbiAgICB0aGlzLm9uR3JvdXBTZWFyY2goKTtcclxuICAgIHRoaXMuZ3JvdXBzU2VydmljZVxyXG4gICAgICAuZ3JvdXBzQnlOYW1lQWNyb255bSh0aGlzLnRyaW1tZWRTZWFyY2hUZXJtKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gdGhpcy52aWV3R3JvdXBSZXNwb25zZShyZXNwb25zZT8uYm9keSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvID0gW107XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgc2VsZWN0IGdyb3VwIHR5cGUgb3B0aW9ucyBmcm9tIGdyb3VwVHlwZXMgcmVzcG9uc2VcclxuICAgKiBAcmV0dXJuIHsqfSAge1NlbGVjdE9wdGlvbltdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVPcHRpb25zKCk6IFNlbGVjdE9wdGlvbltdIHtcclxuICAgIHRoaXMubGVnZW5kQ29sb3IoKTtcclxuICAgIGNvbnN0IGdyb3VwVHlwZU9wdGlvbnM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgICBncm91cFR5cGVPcHRpb25zLnB1c2goe1xyXG4gICAgICBpZDogJycsXHJcbiAgICAgIG5hbWU6IHRoaXMudmlld0dyb3VwVGV4dHM/LmFsbEdyb3VwVHlwZXNPcHRpb24sXHJcbiAgICB9KTtcclxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuZ3JvdXBUeXBlcyk/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgZ3JvdXBUeXBlT3B0aW9ucy5wdXNoKHsgaWQ6IG5vZGVbMF0sIG5hbWU6IG5vZGVbMV0/Lm5hbWUgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBncm91cFR5cGVPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGxlZ2VuZCBjb2xvciBmcm9tIGdyb3VwVHlwZXMgcmVzcG9uc2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbGVnZW5kQ29sb3IoKTogdm9pZCB7XHJcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLmdyb3VwVHlwZXMpPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JvdXBzTGVnZW5kcz8ucHVzaCh7XHJcbiAgICAgICAgY29sb3I6IG5vZGVbMV0/LmxlZ2VuZENvbG9yLFxyXG4gICAgICAgIGxhYmVsOiBub2RlWzFdPy5uYW1lLFxyXG4gICAgICAgIGhpZXJhcmNoeTogbm9kZVsxXT8uaGllcmFyY2h5LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgZmxhZyBhbmQgbG9hZHMgcGFyZW50IGdyb3VwIGluZm8gYXMgcGVyIHNlbGVjdGVkIGZpbHRlciBvcHRpb24uXHJcbiAgICogQHBhcmFtIHtTZWxlY3RPcHRpb259IGV2ZW50XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBUeXBlRmlsdGVyZWQoZXZlbnQ6IFNlbGVjdE9wdGlvbik6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZEdyb3VwVHlwZSA9IGV2ZW50O1xyXG4gICAgdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPSAhIXRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkO1xyXG4gICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICBncm91cElkOiAnJyxcclxuICAgICAgZ3JvdXBUeXBlSWQ6IHRoaXMuc2VsZWN0ZWRHcm91cFR5cGU/LmlkIGFzIHN0cmluZyxcclxuICAgIH07XHJcbiAgICB0aGlzLnNob3dHcm91cEZpbHRlcigpO1xyXG4gICAgdGhpcy50cmltbWVkU2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5zZXRHcm91cEZ1bmN0aW9uVHlwZShHcm91cEZ1bmN0aW9uVHlwZT8uRklMVEVSKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGFsbCB0aGUgcGFyZW50IGdyb3VwcyBpbmZvcm1hdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKGdyb3VwPzogR3JvdXBJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgdGhpcy5nZXRHcm91cHNQYXlsb2FkID0ge1xyXG4gICAgICAgIGdyb3VwSWQ6IGdyb3VwPy5ncm91cElkID8/ICcnLFxyXG4gICAgICAgIGdyb3VwVHlwZUlkOiAnJyxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5nZXRHcm91cHNQYXlsb2FkLmdyb3VwVHlwZUlkID09PSAnJykge1xyXG4gICAgICB0aGlzLmdldEdyb3Vwc1BheWxvYWQgPSB7XHJcbiAgICAgICAgZ3JvdXBJZDogJycsXHJcbiAgICAgICAgZ3JvdXBUeXBlSWQ6ICcnLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cHModGhpcy5nZXRHcm91cHNQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGlsZEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSB0aGlzLnZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlPy5ib2R5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIGdyb3VwVHlwZSBpbmZvIHdpdGggZ3JvdXAgcmVzcG9uc2UgZnJvbSBncm91cFR5cGUgcmVzcG9uc2VcclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb1tdfSByZXNwb25zZVxyXG4gICAqIEByZXR1cm4geyp9ICB7R3JvdXBJbmZvW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdHcm91cFJlc3BvbnNlKHJlc3BvbnNlOiBHcm91cEluZm9bXSk6IEdyb3VwSW5mb1tdIHtcclxuICAgIHJlc3BvbnNlPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGdyb3VwVHlwZUluZm86IEdyb3VwVHlwZSA9IHRoaXMuZ3JvdXBUeXBlc1tub2RlLmdyb3VwVHlwZV07XHJcbiAgICAgIG5vZGUuZ3JvdXBUeXBlSW5mbyA9IGdyb3VwVHlwZUluZm87XHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGdyb3VwIHR5cGVzLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cFR5cGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncm91cHNTZXJ2aWNlXHJcbiAgICAgIC5nZXRHcm91cFR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cFR5cGVzID0gdGhpcy5ncm91cHNTZXJ2aWNlPy5nZXRGb3JtYXR0ZWRHcm91cFR5cGVzKFxyXG4gICAgICAgICAgICAgIHJlcz8uYm9keVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEdyb3VwT3B0aW9ucyA9IHRoaXMuZ2V0R3JvdXBUeXBlT3B0aW9ucygpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXBUeXBlID0gdGhpcy5zZWxlY3RHcm91cE9wdGlvbnNbMF07XHJcbiAgICAgICAgICAgIHRoaXMub25Hcm91cFR5cGVGaWx0ZXJlZCh0aGlzLnNlbGVjdGVkR3JvdXBUeXBlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhbGVydHMgZm9yIHN1Y2Nlc3MsIGVycm9yIGFuZCB3YXJuaW5nLlxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IHN0cmluZ1tdKX0gbWVzc2FnZSAtc3VjY2VzcyBvciBlcnJvciBvciB3YXJuaW5nIG1lc3NhZ2UuXHJcbiAgICogQHBhcmFtIHtBbGVydFR5cGV9IGFsZXJ0VHlwZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2FwdHVyZXMgdGhlIHNlcnZlciBzaWRlIGVycm9ycyBhbmQgaGFuZGxlcyBpdCBiYXNlZCBvbiB0aGUgY3VzdG9tIG9yIEh0dHAgZXJyb3JzLlxyXG4gICAqIEBwYXJhbSB7SHR0cEVycm9yUmVzcG9uc2V9IGVycm9yXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZUVycm9ycyhlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVycm9yQ29kZXM6IHN0cmluZ1tdID0gZXJyb3I/LmVycm9yPy5ib2R5Py5lcnJvckNvZGVzO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXJyb3JDb2RlcykpIHtcclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlOiBzdHJpbmdbXSA9XHJcbiAgICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlPy5wYXJzZUVycm9yTWVzc2FnZShlcnJvckNvZGVzKTtcclxuICAgICAgaWYgKGVycm9yQ29kZXM/LmluY2x1ZGVzKCcxMDA4JykpIHtcclxuICAgICAgICBlcnJvck1lc3NhZ2VbMF0gPSB0aGlzLmRlbGV0ZUdyb3VwTmFtZSArIGVycm9yTWVzc2FnZT8uWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShBbGVydFR5cGUuRVJST1IsIGVycm9yTWVzc2FnZSk7XHJcbiAgICAgIGlmIChlcnJvckNvZGVzPy5pbmNsdWRlcygnMTAxMCcpKSB0aGlzLnBhcmVudEdyb3Vwc0luZm8gPSBbXTtcclxuICAgIH0gZWxzZSBpZiAoZXJyb3IgJiYgZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICB0aGlzLmdsb2JhbEVycm9ySGFuZGxlclNlcnZpY2U/LmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1ncm91cHMgcHgtNFwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19faW5mbyBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gcGItM1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnaWVlZXNhLWdyb3Vwc19faW5mby0td2hpdGUtYmcnXHJcbiAgICAgICAgOiAnaWVlZXNhLWdyb3Vwc19faW5mby0tYmx1ZS1iZydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPHBcclxuICAgICAgY2xhc3M9XCJtYi0wXCJcclxuICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgICA/ICdpZWVlc2EtdGl0bGUtbGctMjQgcC0wJ1xyXG4gICAgICAgICAgOiAnaWVlZXNhLWhlYWRsaW5lLWxnLTMyIGllZWVzYS1ncm91cHNfX2luZm9fX2hlYWRpbmcnXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGdyb3Vwc1BhZ2VJbmZvLmdyb3Vwc1RpdGxlIH19XHJcbiAgICA8L3A+XHJcbiAgICA8ZGl2IFtuZ0NsYXNzXT1cImlzTW9iaWxlVmlldyA/ICdwLTAnIDogJ2llZWVzYS1ncm91cHNfX2luZm9fX2FjdGlvbidcIj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3MocGVybWlzc2lvblR5cGUuQ1JFQVRFX1JPT1RfR1JPVVApIHx8XHJcbiAgICAgICAgICB2YWxpZGF0ZUFjY2Vzcyh0aGlzLnBlcm1pc3Npb25UeXBlLk1BTkFHRV9BTExfR1JPVVBTKVxyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtZ3JvdXBzX19jcmVhdGUtc3ViZ3JvdXAgbWF0LXRlcnRpYXJ5LWJ1dHRvbiBkLW5vbmUgZC1zbS1ub25lIGQtbWQtYmxvY2sgZC1sZy1ibG9jayBkLXhsLWJsb2NrXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgpXCJcclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uYXJpYUxhYmVsPy5hZGRHcm91cFwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHM/LnZpZXdHcm91cHM/LmFkZEdyb3VwIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiZC1mbGV4IGQtc20tZmxleCBkLW1kLW5vbmUgZC1sZy1ub25lIGQteGwtbm9uZSBpZWVlc2EtZ3JvdXBzX19tb2JpbGUtaWNvbnMgZ2FwLTJcIlxyXG4gICAgPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiY3JlYXRlR3JvdXBJY29uXCJcclxuICAgICAgICAqbmdJZj1cIih2YWxpZGF0ZUFjY2VzcyhwZXJtaXNzaW9uVHlwZS5DUkVBVEVfUk9PVF9HUk9VUCkgfHwgIHZhbGlkYXRlQWNjZXNzKHRoaXMucGVybWlzc2lvblR5cGUuTUFOQUdFX0FMTF9HUk9VUFMpKVwiXHJcbiAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJvcGVuQ3JlYXRlR3JvdXBGb3JtKClcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICA8aWVlZXNhLWljb24tYnV0dG9uXHJcbiAgICAgICAgW2ljb25CdXR0b25dPVwiZmlsdGVyR3JvdXBJY29uXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cInNob3dHcm91cEZpbHRlcigpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgPGJ1dHRvblxyXG4gICAgICAgIG1hdC1idXR0b25cclxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uYXJpYUxhYmVsPy5zZWFyY2hcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkdyb3VwU2VhcmNoKClcIlxyXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1tYWduaWZ5aW5nLWdsYXNzIHNlYXJjaC1ncm91cC1pY29uXCI+PC9pPlxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiaWVlZXNhLWdyb3Vwc19fYWN0aW9uc1wiXHJcbiAgICBbbmdDbGFzc109XCJcclxuICAgICAgaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgPyAnaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0td2hpdGUtYmcnXHJcbiAgICAgICAgOiAnaWVlZXNhLWdyb3Vwc19fYWN0aW9ucy0tYmx1ZS1iZydcclxuICAgIFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cImllZWVzYS1ncm91cHNfX2FjdGlvbnMtLXNlYXJjaCByb3dcIj5cclxuICAgICAgPHBcclxuICAgICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2IG9yZGVyLTIgb3JkZXItc20tMSBjb2wtMTIgY29sLW1kLTcgY29sLWxnLTcgY29sLXhsLTdcIlxyXG4gICAgICA+XHJcbiAgICAgICAge3sgZ3JvdXBzUGFnZUluZm8uZ3JvdXBzRGVzY3JpcHRpb24gfX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICgoaXNHcm91cFNlYXJjaEFjdGl2ZSB8fCBpc0dyb3VwRmlsdGVyQWN0aXZlKSAmJiBpc01vYmlsZVZpZXcpIHx8XHJcbiAgICAgICAgICAhaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgXCJcclxuICAgICAgICBjbGFzcz1cIm9yZGVyLTEgb3JkZXItc20tMiBjb2wtMTIgY29sLW1kLTUgY29sLWxnLTUgY29sLXhsLTUgZC1mbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxpZWVlc2Etc2VhcmNoXHJcbiAgICAgICAgICAqbmdJZj1cImlzR3JvdXBTZWFyY2hBY3RpdmUgfHwgIWlzTW9iaWxlVmlld1wiXHJcbiAgICAgICAgICAoc2VhcmNoVmFsdWUpPVwib25Hcm91cFNlYXJjaENsaWNrKCRldmVudClcIlxyXG4gICAgICAgICAgW3NlYXJjaFRlcm1dPVwidHJpbW1lZFNlYXJjaFRlcm1cIlxyXG4gICAgICAgICAgW3NlYXJjaFR5cGVdPVwic2VhcmNoVHlwZVwiXHJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJMYWJlbF09XCJzZWFyY2hQbGFjZUhvbGRlclRleHRcIlxyXG4gICAgICAgICAgW21pbkNoYXJhY3RlclRvU2VhcmNoXT1cIm1pbkNoYXJhY3RlclRvU2VhcmNoXCJcclxuICAgICAgICAgIFtzdXBwb3J0TWVzc2FnZV09XCJzdXBwb3J0TWVzc2FnZVwiXHJcbiAgICAgICAgPjwvaWVlZXNhLXNlYXJjaD5cclxuXHJcbiAgICAgICAgPGllZWVzYS1zZWxlY3RcclxuICAgICAgICAgICpuZ0lmPVwiaXNHcm91cEZpbHRlckFjdGl2ZSB8fCAhaXNNb2JpbGVWaWV3XCJcclxuICAgICAgICAgIGNsYXNzPVwiYWxpZ24tc2VsZi1lbmQgcHQtbGctNCBwdC1tZC00IHB0LXhsLTRcIlxyXG4gICAgICAgICAgW2lzU29ydE5lZWRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZHJvcGRvd25PcHRpb25zXT1cInNlbGVjdEdyb3VwT3B0aW9uc1wiXHJcbiAgICAgICAgICBbaXNMYWJlbEFsaWduZWRMZWZ0XT1cInRydWVcIlxyXG4gICAgICAgICAgW3NlbGVjdExhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uZmlsdGVyQnlMYWJlbFwiXHJcbiAgICAgICAgICAob3B0aW9uU2VsZWN0ZWQpPVwib25Hcm91cFR5cGVGaWx0ZXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgIFtwbGFjZWhvbGRlclRleHRdPVwiZmlsdGVyUGxhY2VIb2xkZXJUZXh0XCJcclxuICAgICAgICAgIFtzZWxlY3RlZE9wdGlvbnNdPVwic2VsZWN0ZWRHcm91cFR5cGVcIlxyXG4gICAgICAgID48L2llZWVzYS1zZWxlY3Q+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8aWVlZXNhLXRyZWVcclxuICAgICAgKm5nSWY9XCJwYXJlbnRHcm91cHNJbmZvICYmIHBhcmVudEdyb3Vwc0luZm8ubGVuZ3RoID4gMFwiXHJcbiAgICAgIFtwYXJlbnRHcm91cHNJbmZvXT1cInBhcmVudEdyb3Vwc0luZm9cIlxyXG4gICAgICBbY2hpbGRHcm91cHNJbmZvXT1cImNoaWxkR3JvdXBzSW5mb1wiXHJcbiAgICAgIFtkZWxldGVkR3JvdXBJZEluZm9dPVwiZGVsZXRlZEdyb3VwSWRcIlxyXG4gICAgICBbaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXT1cImlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZVwiXHJcbiAgICAgIFt1c2VyR3JvdXBQZXJtaXNzaW9uc109XCJ1c2VyR3JvdXBQZXJtaXNzaW9uc1wiXHJcbiAgICAgICh0b2dnbGVHcm91cENsaWNrKT1cImdldEdyb3VwcygkZXZlbnQpXCJcclxuICAgICAgKGNyZWF0ZUdyb3VwQ2xpY2spPVwib3BlbkNyZWF0ZUdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgICAgKGRlbGV0ZUdyb3VwQ2xpY2spPVwib3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gICAgICAodmlld1Jvc3RlckNsaWNrKT1cInZpZXdSb3N0ZXIoJGV2ZW50KVwiXHJcbiAgICAgIChlZGl0R3JvdXBDbGljayk9XCJvcGVuRWRpdEdyb3VwRm9ybSgkZXZlbnQpXCJcclxuICAgID48L2llZWVzYS10cmVlPlxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInBhcmVudEdyb3Vwc0luZm8gJiYgcGFyZW50R3JvdXBzSW5mby5sZW5ndGggPiAwXCJcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1zbS1yb3cgZmxleC1tZC1yb3cgbXQtNCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQganVzdGlmeS1jb250ZW50LXNtLWVuZFwiXHJcbiAgICA+XHJcbiAgICAgIDxwIGNsYXNzPVwicHgtc20tMyBkLWZsZXggYWxpZ24taXRlbXMtc3RhcnQgaWVlZXNhLWxhYmVsLWxnLWJvbGQtMTZcIj5cclxuICAgICAgICB7eyBjb25zdGFudHM/LnZpZXdHcm91cHM/LmxlZ2VuZCB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxpZWVlc2EtbGVnZW5kXHJcbiAgICAgICAgW2xlZ2VuZHNdPVwiZ3JvdXBzTGVnZW5kc1wiXHJcbiAgICAgICAgW2lzU29ydGluZ109XCJpc1NvcnRpbmdcIlxyXG4gICAgICA+PC9pZWVlc2EtbGVnZW5kPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtdXNlci1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHcm91cFVzZXJJbmZvIHtcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICByb2xlOiBzdHJpbmc7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgY2xhc3NpZmljYXRpb24/OiBzdHJpbmc7XHJcbiAgb3JnYW5pemF0aW9uPzogc3RyaW5nO1xyXG4gIG1lbWJlclN0YXR1cz86IHN0cmluZztcclxufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtdXNlci1pbmZvLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3JvdXBzL3NyYy9saWIvbW9kZWxzL2dyb3VwLXVzZXItaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBHcm91cFVzZXJJbmZvIHtcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICByb2xlOiBzdHJpbmc7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgY2xhc3NpZmljYXRpb24/OiBzdHJpbmc7XHJcbiAgb3JnYW5pemF0aW9uPzogc3RyaW5nO1xyXG4gIG1lbWJlclN0YXR1cz86IHN0cmluZztcclxuICBjYW5EZWxldGU/OiBib29sZWFuO1xyXG59Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL21vZGVscy91c2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc2lmaWNhdGlvbiB9IGZyb20gJy4vY2xhc3NpZmljYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW1iZXJUeXBlIH0gZnJvbSAnLi9tZW1iZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4vcm9sZS5tb2RlbCc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGVtYWlsOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nIHwgbnVsbDtcclxuICBjbGFzc2lmaWNhdGlvbjogc3RyaW5nIHwgbnVsbDtcclxuICBtZW1iZXJTdGF0dXM6IHN0cmluZyB8IG51bGw7XHJcbiAgb3JnYW5pemF0aW9uOiBzdHJpbmcgfCBudWxsO1xyXG4gIGVtcGxveWVyOiBzdHJpbmcgfCBudWxsO1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgRW1wbG95ZXIge1xyXG4gIG9yZ0lkOiBzdHJpbmcgfCBudWxsO1xyXG4gIG9yZ05hbWU6IHN0cmluZyB8IG51bGw7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBHZXRHcm91cFVzZXJzUmVzcG9uc2Uge1xyXG4gIHN0YXR1czogYm9vbGVhbjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgYm9keToge1xyXG4gICAgdXNlcklkOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBlbWFpbDogc3RyaW5nO1xyXG4gICAgcm9sZXNMaXN0OiBSb2xlW107XHJcbiAgICBjbGFzc2lmaWNhdGlvbjogQ2xhc3NpZmljYXRpb24gfCBudWxsO1xyXG4gICAgbWVtYmVyU3RhdHVzOiBNZW1iZXJUeXBlIHwgbnVsbDtcclxuICAgIG9yZ2FuaXphdGlvbjogT3JnYW5pemF0aW9uIHwgbnVsbDtcclxuICAgIGVtcGxveWVyOiBFbXBsb3llciB8IG51bGw7XHJcbiAgfVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclVzZXJzUGF5bG9hZCB7XHJcbiAgcGF5bG9hZDoge1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgZmlsdGVyQnlSb2xlQ2xhc3NpZmljYXRpb25NZW1iZXJTdGF0dXNJZHM6IHN0cmluZ1tdO1xyXG4gICAgc29ydENvbHVtbjogc3RyaW5nO1xyXG4gICAgYXNjZW5kaW5nT3JkZXI6IGJvb2xlYW47XHJcbiAgfTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFVzZXJzUGF5bG9hZCB7XHJcbiAgcGF5bG9hZDoge1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgc2VhcmNoQnlOYW1lT3JFbWFpbE9yUmVwT3JnOiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJCeVJvbGVDbGFzc2lmaWNhdGlvbk1lbWJlclN0YXR1c0lkczogc3RyaW5nW107XHJcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmc7XHJcbiAgICBhc2NlbmRpbmdPcmRlcjogYm9vbGVhbjtcclxuICB9O1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL21vZGVscy91c2VyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGFzc2lmaWNhdGlvbiB9IGZyb20gJy4vY2xhc3NpZmljYXRpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBNZW1iZXJUeXBlIH0gZnJvbSAnLi9tZW1iZXItdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4vb3JnYW5pemF0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUm9sZSB9IGZyb20gJy4vcm9sZS5tb2RlbCc7XHJcbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XHJcbiAgdXNlcklkOiBzdHJpbmc7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGVtYWlsOiBzdHJpbmc7XHJcbiAgcm9sZTogc3RyaW5nIHwgbnVsbDtcclxuICBjbGFzc2lmaWNhdGlvbjogc3RyaW5nIHwgbnVsbDtcclxuICBtZW1iZXJTdGF0dXM6IHN0cmluZyB8IG51bGw7XHJcbiAgb3JnYW5pemF0aW9uOiBzdHJpbmcgfCBudWxsO1xyXG4gIGVtcGxveWVyOiBzdHJpbmcgfCBudWxsO1xyXG4gIGNoZWNrZWQ/OiBib29sZWFuO1xyXG4gIGNhbkRlbGV0ZT86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBFbXBsb3llciB7XHJcbiAgb3JnSWQ6IHN0cmluZyB8IG51bGw7XHJcbiAgb3JnTmFtZTogc3RyaW5nIHwgbnVsbDtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEdldEdyb3VwVXNlcnNSZXNwb25zZSB7XHJcbiAgc3RhdHVzOiBib29sZWFuO1xyXG4gIG1lc3NhZ2U6IHN0cmluZztcclxuICBib2R5OiB7XHJcbiAgICB1c2VySWQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGVtYWlsOiBzdHJpbmc7XHJcbiAgICByb2xlc0xpc3Q6IFJvbGVbXTtcclxuICAgIGNsYXNzaWZpY2F0aW9uOiBDbGFzc2lmaWNhdGlvbiB8IG51bGw7XHJcbiAgICBtZW1iZXJTdGF0dXM6IE1lbWJlclR5cGUgfCBudWxsO1xyXG4gICAgb3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb24gfCBudWxsO1xyXG4gICAgZW1wbG95ZXI6IEVtcGxveWVyIHwgbnVsbDtcclxuICAgIGNhbkRlbGV0ZT86IGJvb2xlYW47XHJcbiAgfVtdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclVzZXJzUGF5bG9hZCB7XHJcbiAgcGF5bG9hZDoge1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgZmlsdGVyQnlSb2xlQ2xhc3NpZmljYXRpb25NZW1iZXJTdGF0dXNJZHM6IHN0cmluZ1tdO1xyXG4gICAgc29ydENvbHVtbjogc3RyaW5nO1xyXG4gICAgYXNjZW5kaW5nT3JkZXI6IGJvb2xlYW47XHJcbiAgfTtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFVzZXJzUGF5bG9hZCB7XHJcbiAgcGF5bG9hZDoge1xyXG4gICAgZ3JvdXBJZDogc3RyaW5nO1xyXG4gICAgc2VhcmNoQnlOYW1lT3JFbWFpbE9yUmVwT3JnOiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJCeVJvbGVDbGFzc2lmaWNhdGlvbk1lbWJlclN0YXR1c0lkczogc3RyaW5nW107XHJcbiAgICBzb3J0Q29sdW1uOiBzdHJpbmc7XHJcbiAgICBhc2NlbmRpbmdPcmRlcjogYm9vbGVhbjtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJEZXRhaWxzIHtcclxuICBhcHBJZDogc3RyaW5nO1xyXG4gIHVzZXJJZDogc3RyaW5nO1xyXG4gIHNzb0lkOiBzdHJpbmc7XHJcbiAgZmlyc3ROYW1lOiBzdHJpbmc7XHJcbiAgbGFzdE5hbWU6IHN0cmluZztcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIGNhbkRlbGV0ZT86IGJvb2xlYW47XHJcbn0iXX0=