@sunbird-cb/tree-hierarchy 0.0.5-cbrelease-4.8.26 → 0.0.5-cbrelease-4.8.29

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.
Files changed (52) hide show
  1. package/esm2022/lib/components/action-bar/action-bar.component.mjs +3 -2
  2. package/esm2022/lib/components/approval/approval.component.mjs +3 -2
  3. package/esm2022/lib/components/approve-view/approve-view.component.mjs +4 -3
  4. package/esm2022/lib/components/categories-preview/categories-preview.component.mjs +3 -2
  5. package/esm2022/lib/components/category-edit/category-edit-module/category-edit-module.component.mjs +9 -10
  6. package/esm2022/lib/components/conforamtion-popup/conforamtion-popup.component.mjs +3 -2
  7. package/esm2022/lib/components/connector/connector.component.mjs +3 -2
  8. package/esm2022/lib/components/create-categories/create-categories.component.mjs +3 -2
  9. package/esm2022/lib/components/create-term/create-term.component.mjs +3 -2
  10. package/esm2022/lib/components/create-term-from-framework/create-term-from-framework.component.mjs +6 -4
  11. package/esm2022/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.mjs +102 -46
  12. package/esm2022/lib/components/pending-approval/pending-approval.component.mjs +3 -2
  13. package/esm2022/lib/components/term-card/term-card.component.mjs +32 -6
  14. package/esm2022/lib/components/tree-column-view/tree-column-view.component.mjs +35 -6
  15. package/esm2022/lib/components/tree-view/tree-view.component.mjs +127 -24
  16. package/esm2022/lib/containers/config-framework/config-framework.component.mjs +3 -2
  17. package/esm2022/lib/containers/dashboard/dashboard.component.mjs +3 -2
  18. package/esm2022/lib/models/framework.model.mjs +1 -1
  19. package/esm2022/lib/pipes/order-by.pipe.mjs +3 -2
  20. package/esm2022/lib/services/approval.service.mjs +3 -2
  21. package/esm2022/lib/services/connector.service.mjs +53 -6
  22. package/esm2022/lib/services/framework.service.mjs +153 -13
  23. package/esm2022/lib/services/local-connection.service.mjs +3 -2
  24. package/esm2022/lib/services/odcs.service.mjs +3 -2
  25. package/esm2022/lib/tree-hierarchy-routing.module.mjs +3 -2
  26. package/esm2022/lib/tree-hierarchy.component.mjs +3 -2
  27. package/esm2022/lib/tree-hierarchy.module.mjs +9 -4
  28. package/esm2022/lib/tree-hierarchy.service.mjs +12 -3
  29. package/esm2022/material.module.mjs +4 -3
  30. package/fesm2022/sunbird-cb-tree-hierarchy.mjs +535 -131
  31. package/fesm2022/sunbird-cb-tree-hierarchy.mjs.map +1 -1
  32. package/lib/components/category-edit/category-edit-module/category-edit-module.component.d.ts.map +1 -1
  33. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts +16 -3
  34. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts.map +1 -1
  35. package/lib/components/term-card/term-card.component.d.ts +8 -2
  36. package/lib/components/term-card/term-card.component.d.ts.map +1 -1
  37. package/lib/components/tree-column-view/tree-column-view.component.d.ts +4 -1
  38. package/lib/components/tree-column-view/tree-column-view.component.d.ts.map +1 -1
  39. package/lib/components/tree-view/tree-view.component.d.ts +8 -2
  40. package/lib/components/tree-view/tree-view.component.d.ts.map +1 -1
  41. package/lib/models/framework.model.d.ts +1 -0
  42. package/lib/models/framework.model.d.ts.map +1 -1
  43. package/lib/services/connector.service.d.ts +1 -0
  44. package/lib/services/connector.service.d.ts.map +1 -1
  45. package/lib/services/framework.service.d.ts +9 -3
  46. package/lib/services/framework.service.d.ts.map +1 -1
  47. package/lib/tree-hierarchy.module.d.ts +2 -1
  48. package/lib/tree-hierarchy.module.d.ts.map +1 -1
  49. package/lib/tree-hierarchy.service.d.ts +2 -0
  50. package/lib/tree-hierarchy.service.d.ts.map +1 -1
  51. package/material.module.d.ts +2 -2
  52. package/package.json +1 -1
@@ -6,34 +6,48 @@ import { takeUntil } from 'rxjs/operators';
6
6
  import _ from 'lodash';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/material/legacy-dialog";
9
- import * as i2 from "../../tree-hierarchy.service";
10
- import * as i3 from "../../services/framework.service";
9
+ import * as i2 from "../../services/framework.service";
10
+ import * as i3 from "@angular/material/legacy-snack-bar";
11
11
  import * as i4 from "@angular/common";
12
12
  import * as i5 from "@angular/material/core";
13
13
  import * as i6 from "@angular/material/button";
14
- import * as i7 from "@angular/material/icon";
15
- import * as i8 from "@angular/material/form-field";
16
- import * as i9 from "@angular/material/select";
17
- import * as i10 from "@angular/forms";
18
- export class OrgHierarchyAddModalComponent {
19
- constructor(dialogRef, data, treeHierarchySvc, frameworkService) {
14
+ import * as i7 from "@angular/material/legacy-chips";
15
+ import * as i8 from "@angular/material/icon";
16
+ import * as i9 from "@angular/material/form-field";
17
+ import * as i10 from "@angular/material/select";
18
+ import * as i11 from "@angular/forms";
19
+ import * as i12 from "@angular/material/chips";
20
+ class OrgHierarchyAddModalComponent {
21
+ constructor(dialogRef, data, frameworkService, snackbar) {
20
22
  this.dialogRef = dialogRef;
21
23
  this.data = data;
22
- this.treeHierarchySvc = treeHierarchySvc;
23
24
  this.frameworkService = frameworkService;
25
+ this.snackbar = snackbar;
24
26
  this.searchControl = new FormControl('');
27
+ this.parentSearchControl = new FormControl('');
25
28
  this.selectedOrgsControl = new FormControl([]);
29
+ this.parentSelectedOrgControl = new FormControl('');
26
30
  this.orgOptions = [];
27
31
  this.filteredOptions = [];
32
+ this.parentFilteredOptions = [];
28
33
  this.destroy$ = new Subject();
29
34
  }
30
35
  ngOnInit() {
31
36
  this.getSelectedStateOrg();
37
+ if (this.data && this.data.type === 'update') {
38
+ this.frameworkData = _.cloneDeep(this.frameworkService.completeResponse);
39
+ this.getParentTerms(this.data.previous[this.data.previous.length - 2]);
40
+ }
32
41
  this.searchControl.valueChanges
33
42
  .pipe(takeUntil(this.destroy$))
34
43
  .subscribe((value) => {
35
44
  this.filterOptions(value);
36
45
  });
46
+ this.parentSearchControl.valueChanges
47
+ .pipe(takeUntil(this.destroy$))
48
+ .subscribe((value) => {
49
+ this.filterParentOptions(value);
50
+ });
37
51
  }
38
52
  ngOnDestroy() {
39
53
  this.destroy$.next();
@@ -74,6 +88,15 @@ export class OrgHierarchyAddModalComponent {
74
88
  event.stopPropagation();
75
89
  this.searchControl.setValue('');
76
90
  }
91
+ filterParentOptions(searchValue) {
92
+ const originalOptions = this.frameworkData?.categories?.find((v) => v.code === this.data?.previous[this.data.previous.length - 2]?.category)?.terms || [];
93
+ if (!searchValue) {
94
+ this.parentFilteredOptions = [...originalOptions];
95
+ return;
96
+ }
97
+ const filterValue = searchValue.toLowerCase();
98
+ this.parentFilteredOptions = originalOptions.filter((option) => option.name.toLowerCase().includes(filterValue));
99
+ }
77
100
  toggleSelectAll(event) {
78
101
  event.stopPropagation();
79
102
  if (this.isAllSelected()) {
@@ -93,6 +116,10 @@ export class OrgHierarchyAddModalComponent {
93
116
  const selectedIds = this.selectedOrgsControl.value || [];
94
117
  return this.orgOptions.filter((option) => selectedIds.includes(option.identifier));
95
118
  }
119
+ getParentSelectedOptions() {
120
+ const selectedId = this.parentSelectedOrgControl.value;
121
+ return this.parentFilteredOptions.find((option) => option.code === selectedId);
122
+ }
96
123
  removeSelected(id) {
97
124
  const currentSelection = this.selectedOrgsControl.value || [];
98
125
  this.selectedOrgsControl.setValue(currentSelection.filter((value) => value !== id));
@@ -101,40 +128,30 @@ export class OrgHierarchyAddModalComponent {
101
128
  this.dialogRef.close();
102
129
  }
103
130
  onSave() {
131
+ if (this.data && this.data.type === 'update' && this.selectedOrgsControl?.value?.find((v) => v === this.parentSelectedOrgControl.value)) {
132
+ this.snackbar.open('You cannot select the parent organization as a child organization');
133
+ return;
134
+ }
135
+ if (this.data && this.data.type === 'update' && this.selectedOrgsControl?.value?.length === 0 && !this.parentSelectedOrgControl.value) {
136
+ this.snackbar.open('Please select at least one organization or parent organization');
137
+ return;
138
+ }
139
+ if (this.data && this.data.type === 'add' && this.selectedOrgsControl?.value?.length === 0) {
140
+ this.snackbar.open('Please select at least one organization');
141
+ return;
142
+ }
104
143
  const selectedOrgs = this.getSelectedOptions();
105
- this.dialogRef.close(selectedOrgs);
144
+ const parentSelectedOrg = this.getParentSelectedOptions();
145
+ this.dialogRef.close({
146
+ selectedOrg: selectedOrgs,
147
+ paparentSelectedOrg: parentSelectedOrg,
148
+ currentTerm: this.data?.previous[this.data.previous.length - 1],
149
+ type: this.data.type,
150
+ });
106
151
  }
107
152
  async getSelectedStateOrg() {
108
- const requestBody = {
109
- request: {
110
- filters: {
111
- status: 1,
112
- ministryOrStateType: (this.data && this.data.selectedOrgData) ?
113
- this.data.selectedOrgData.sbOrgType : '',
114
- ministryOrStateId: (this.data && this.data.selectedOrgData) ?
115
- this.data.selectedOrgData.identifier : ''
116
- },
117
- sort_by: {
118
- createdDate: "desc"
119
- },
120
- limit: 100,
121
- offset: 0,
122
- fields: [
123
- 'identifier',
124
- 'orgName',
125
- 'description',
126
- 'parentOrgName',
127
- 'ministryOrStateId',
128
- 'ministryOrStateType',
129
- 'ministryOrStateName'
130
- ]
131
- }
132
- };
133
- const orgListData = await this.treeHierarchySvc.orgSerachApi(requestBody).toPromise().catch(err => {
134
- console.error('Error fetching organization data:', err);
135
- });
136
- if (orgListData && orgListData.result &&
137
- orgListData.result.response && orgListData.result.response.content) {
153
+ const orgListData = this.frameworkService.additionalData || [];
154
+ if (orgListData && orgListData.length > 0) {
138
155
  const framworkData = _.cloneDeep(this.frameworkService.completeResponse);
139
156
  let orgIdsAdded = [];
140
157
  if (framworkData && framworkData.categories && framworkData.categories.length > 0) {
@@ -150,19 +167,58 @@ export class OrgHierarchyAddModalComponent {
150
167
  }
151
168
  });
152
169
  }
153
- const filteredOrgList = orgListData.result.response.content.filter((org) => !orgIdsAdded.includes(org.identifier));
170
+ const filteredOrgList = orgListData.filter((org) => !orgIdsAdded.includes(org.identifier));
154
171
  this.orgOptions = filteredOrgList || [];
155
172
  this.filteredOptions = [...this.orgOptions];
156
173
  }
157
174
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrgHierarchyAddModalComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.TreeHierarchyService }, { token: i3.FrameworkService }], target: i0.ɵɵFactoryTarget.Component }); }
159
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrgHierarchyAddModalComponent, selector: "sb-cb-tree-org-hierarchy-add-modal", ngImport: i0, template: "<div class=\"org-hierarchy-modal\">\n <!-- Modal Header -->\n <div class=\"modal-header\">\n <div class=\"header-title\">\n <h2 class=\"m-0\">Update Organisation Hierarchy</h2>\n </div>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Modal Content -->\n <div class=\"modal-content\">\n <div class=\"content-container\">\n <div class=\"flex flex-col org-container\">\n <label class=\"orgTypeName\">{{data?.selectedOrgData?.sbOrgType}}</label>\n <label class=\"orgTypeSelected\">{{data?.selectedOrgData?.orgName?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n <ng-container *ngIf=\"data?.previous?.length > 0\">\n <div class=\"flex flex-col org-container\" *ngFor=\"let item of data?.previous;let i = index\"\n [ngStyle]=\"{'margin-left': 30 * (i+1) + 'px'}\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"orgTypeSelected\">{{item?.name?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data?.currentData\">\n <div class=\"flex flex-col org-container\" \n [ngStyle]=\"{'margin-left': 30 * (data?.previous?.length + 1) + 'px'}\">\n <label class=\"orgTypeName\">{{data?.currentData?.code?.toLowerCase()}}</label>\n \n <!-- Searchable multi-select -->\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"selectedOrgsControl\" placeholder=\"Select\" #singleSelect\n [panelClass]=\"'mat-select-panel-below'\" disableOptionCentering [disableOptionCentering]=\"true\"\n multiple> <!-- Added the multiple attribute here -->\n <!-- Search container -->\n <div class=\"search-container\">\n <input type=\"text\" [formControl]=\"searchControl\" placeholder=\"Search...\"\n (keydown)=\"$event.key === ' ' ? $event.stopPropagation() : null\" (click)=\"$event.stopPropagation()\"\n class=\"search-input\" #searchInput>\n </div>\n <mat-option *ngFor=\"let organization of filteredOptions\" [value]=\"organization.identifier\">\n {{organization.orgName}}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n \n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Modal Footer -->\n <div class=\"modal-footer\">\n <button mat-stroked-button class=\"btn-common btn-secondary\" (click)=\"onClose()\" type=\"button\">\n Cancel\n </button>\n <button \n mat-stroked-button \n class=\"btn-common btn-primary\" \n [disabled]=\"!selectedOrgsControl.value?.length\" \n (click)=\"onSave()\" \n type=\"button\">\n Save\n </button>\n </div>\n</div>", styles: [":host{display:block;height:100%}.custom-height-select{width:100%;margin-top:5px}.custom-height-select ::ng-deep .mat-mdc-select{height:35px;line-height:35px}.custom-height-select ::ng-deep .mat-form-field-flex{height:35px!important;min-height:35px!important}.custom-height-select ::ng-deep .mat-form-field-infix{min-height:35px!important;height:35px!important;display:flex;align-items:center;border:0;position:relative;padding:4px 8px 0}.custom-height-select ::ng-deep .mat-form-field-wrapper{height:35px;padding:0;margin:0}.custom-height-select ::ng-deep .mdc-notched-outline{border-radius:20px!important}.custom-height-select ::ng-deep .mdc-notched-outline__leading{display:none}.custom-height-select ::ng-deep .mdc-notched-outline__notch{border-color:#00000029!important}.custom-height-select ::ng-deep .mdc-notched-outline__trailing{border-color:#00000029!important;border-radius:20px!important;border-left:1px solid rgba(0,0,0,.1607843137)!important;border-right:1px solid rgba(0,0,0,.1607843137)!important}.custom-height-select ::ng-deep .mat-select-arrow-wrapper{padding-top:15px;transform:translateY(-4px)}.custom-height-select ::ng-deep .mat-select-value{line-height:35px}::ng-deep .right-side-modal.cdk-global-overlay-wrapper{justify-content:flex-end}::ng-deep .right-side-modal .mat-dialog-container{border-radius:0!important;padding:0!important;overflow-x:hidden;display:flex!important;flex-direction:column!important;height:100vh!important}::ng-deep .right-side-modal .cdk-overlay-pane{margin-right:0!important;max-width:90vw!important}::ng-deep .mat-pseudo-checkbox-checked{background-color:#1b4ca1!important;border-color:#1b4ca1!important}.org-hierarchy-modal{display:flex;flex-direction:column;height:100%}.org-hierarchy-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.org-hierarchy-modal .modal-header .header-title h2{font-size:16px;font-weight:600;color:#000000de}.org-hierarchy-modal .modal-header .close-button{color:#666}.org-hierarchy-modal .modal-content{flex:1;overflow-y:auto;padding:12px 24px;min-height:0}.org-hierarchy-modal .modal-content .content-container{max-width:800px;margin:0 auto}.org-hierarchy-modal .modal-content .form-field{margin-bottom:16px}.org-hierarchy-modal .modal-content .form-field .w-full{width:100%}.org-hierarchy-modal .modal-footer{display:flex;justify-content:flex-end;padding:12px 24px;border-top:1px solid rgba(0,0,0,.08);gap:16px;flex-shrink:0}.org-hierarchy-modal .modal-footer .cancel-btn,.org-hierarchy-modal .modal-footer .save-btn{min-width:100px}.searchable-select-container{margin-top:16px;margin-bottom:24px}.selected-items-container{margin-top:8px;margin-bottom:16px}.selected-items-container .selected-chips{display:flex;flex-wrap:wrap;gap:8px}::ng-deep .searchable-select-panel .mat-select-panel{max-height:350px}::ng-deep .searchable-select-panel .search-box{position:relative;padding:8px}::ng-deep .searchable-select-panel .search-box input{width:100%;height:36px;border:1px solid #ddd;border-radius:4px;padding:8px 36px 8px 12px;outline:none;font-size:14px}::ng-deep .searchable-select-panel .search-box input:focus{border-color:#1b4ca1}::ng-deep .searchable-select-panel .search-box .clear-search{position:absolute;right:8px;top:8px;width:24px;height:24px;line-height:24px}::ng-deep .searchable-select-panel .search-box .clear-search .mat-icon{font-size:16px;width:16px;height:16px;line-height:16px}::ng-deep .mat-chip{font-size:12px;min-height:26px}::ng-deep .mat-chip .mat-icon{font-size:16px;width:16px;height:16px}::ng-deep .mat-mdc-chip{font-size:12px;min-height:26px}::ng-deep .mat-mdc-chip .mat-icon{font-size:16px;width:16px!important;height:16px!important}::ng-deep .mat-mdc-chip-option[disabled]{opacity:1}::ng-deep .mat-mdc-chip-option[disabled] .mdc-evolution-chip__text-label{opacity:1}.m-0{margin:0}.w-full{width:100%}.orgTypeName{font-weight:700;font-size:14px;text-transform:capitalize}.orgTypeSelected{padding:5px 15px;border:1px solid rgba(0,0,0,.1607843137);background:#e8e9eb;border-radius:20px;margin-top:5px;font-size:14px;font-weight:400;text-transform:capitalize}.search-container{position:relative;width:100%;padding:8px;box-sizing:border-box}.search-container:before{content:\"\";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" fill=\"%23757575\"/></svg>');background-repeat:no-repeat;background-size:contain;z-index:1}.search-container .search-input{width:calc(100% - 8px);height:28px;border:1px solid rgba(0,0,0,.1607843137);border-radius:20px;padding:4px 12px 4px 36px;outline:none;font-size:14px;box-sizing:border-box}.search-container .search-input:focus{border-color:#1b4ca1}.dashed-line{height:25px;border-left:2px dashed #1B4CA1;margin-left:10px}.org-container{position:relative}.org-container:not(:first-child){margin-top:0}.org-container:not(:first-child):before{content:\"\";position:absolute;left:-20px;top:4px;height:8px;border-left:2px dashed #1B4CA1;z-index:0;border-bottom:2px dashed #1B4CA1;width:10px}.org-container:not(:first-child):after{content:\"\";position:absolute;left:-15px;top:8px;width:8px;height:8px;border-right:2px solid #1B4CA1;border-bottom:2px solid #1B4CA1;transform:rotate(-45deg);z-index:1;background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
175
+ handleKeydown(event) {
176
+ if (event.key === 'Enter') {
177
+ event.preventDefault();
178
+ event.stopPropagation();
179
+ return false;
180
+ }
181
+ return true;
182
+ }
183
+ handleSearchKeydown(event) {
184
+ if (event.key === 'Enter') {
185
+ event.preventDefault();
186
+ event.stopPropagation();
187
+ return false;
188
+ }
189
+ if (event.key === ' ' && event.target instanceof HTMLInputElement) {
190
+ event.stopPropagation();
191
+ }
192
+ return true;
193
+ }
194
+ checkAndClose(selectElement) {
195
+ if (!this.selectedOrgsControl.value || this.selectedOrgsControl.value.length === 0) {
196
+ this.snackbar.open('Please select at least one organization');
197
+ }
198
+ else {
199
+ selectElement.close();
200
+ }
201
+ }
202
+ getNameOfOrg(id) {
203
+ return this.filteredOptions.find((option) => option.identifier === id)?.orgName || '';
204
+ }
205
+ removeOrg(itemToRemove) {
206
+ const currentValues = this.selectedOrgsControl.value || [];
207
+ const updatedValues = currentValues.filter(item => item !== itemToRemove);
208
+ this.selectedOrgsControl.setValue(updatedValues);
209
+ }
210
+ getParentTerms(item) {
211
+ this.parentFilteredOptions = this.frameworkData.categories.find((v) => v.code === item.category).terms;
212
+ }
213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrgHierarchyAddModalComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FrameworkService }, { token: i3.MatLegacySnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OrgHierarchyAddModalComponent, selector: "sb-cb-tree-org-hierarchy-add-modal", ngImport: i0, template: "<div class=\"org-hierarchy-modal\">\n <!-- Modal Header -->\n <div class=\"modal-header\">\n <div class=\"header-title\">\n <h2 class=\"m-0\">Update Organisation Hierarchy</h2>\n </div>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Modal Content -->\n <div class=\"modal-content\">\n <div class=\"content-container\">\n <div class=\"flex flex-col org-container\">\n <label class=\"orgTypeName\">{{data?.selectedOrgData?.sbOrgType}}</label>\n <label class=\"orgTypeSelected\">{{data?.selectedOrgData?.orgName?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n <ng-container *ngIf=\"data?.previous?.length > 0\">\n <div class=\"flex flex-col org-container\" *ngFor=\"let item of data?.previous;let i = index\"\n [ngStyle]=\"{'margin-left': 30 * (i+1) + 'px'}\">\n <ng-container *ngIf=\"data?.type === 'update' && i === (data?.previous?.length - 2)\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"sub-label\">Only the imported organisation will be listed.</label>\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"parentSelectedOrgControl\" placeholder=\"Select\" #parentSelect\n [panelClass]=\"'mat-select-panel-below'\" \n disableOptionCentering \n [disableOptionCentering]=\"true\"\n (keydown)=\"handleKeydown($event)\">\n <!-- Search container -->\n <div class=\"search-container flex gap-5 flex-middle\" (click)=\"$event.stopPropagation()\">\n <input type=\"text\" [formControl]=\"parentSearchControl\" placeholder=\"Search...\"\n (keydown)=\"handleSearchKeydown($event)\"\n class=\"search-input\" #searchInput>\n </div>\n <mat-option class=\"no-checkbox\" *ngFor=\"let organization of parentFilteredOptions\" [value]=\"organization.code\">\n {{organization.name}}\n </mat-option>\n <mat-option *ngIf=\"parentFilteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"dashed-line\"></div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!(data?.type === 'update' && i === (data?.previous?.length - 2))\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"orgTypeSelected\">{{item?.name?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data?.currentData\">\n <div class=\"flex flex-col org-container\" \n [ngStyle]=\"{'margin-left': 30 * (data?.previous?.length + 1) + 'px'}\">\n <label class=\"orgTypeName\">{{data?.currentData?.code?.toLowerCase()}}</label>\n <label class=\"sub-label\">Organisations which are already in the hierarchy will not listed to add or in searchable dropdown</label>\n <!-- Searchable multi-select -->\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"selectedOrgsControl\" placeholder=\"Select\" #singleSelect\n [panelClass]=\"'mat-select-panel-below'\" \n disableOptionCentering \n [disableOptionCentering]=\"true\"\n (keydown)=\"handleKeydown($event)\"\n multiple>\n <!-- Search container -->\n <div class=\"search-container flex gap-5 flex-middle\" (click)=\"$event.stopPropagation()\">\n <input type=\"text\" [formControl]=\"searchControl\" placeholder=\"Search...\"\n (keydown)=\"handleSearchKeydown($event)\"\n class=\"search-input\" #searchInput>\n <button mat-button class=\"add-btn\" (click)=\"checkAndClose(singleSelect); $event.stopPropagation()\" type=\"button\">\n <span>Add</span>\n <mat-icon class=\"margin-remove\">add</mat-icon>\n </button>\n </div>\n <mat-option *ngFor=\"let organization of filteredOptions\" [value]=\"organization.identifier\">\n {{organization.orgName}}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container *ngIf=\"selectedOrgsControl?.value?.length > 0\">\n <mat-chip-list class=\"org-clip\" aria-label=\"orgSelection\">\n <mat-chip class=\"clip-option flex flex-middle\" *ngFor=\"let item of selectedOrgsControl.value\" [removable]=\"true\" (removed)=\"removeOrg(item)\">\n {{getNameOfOrg(item)}}\n <mat-icon matChipRemove class=\"margin-remove\">close</mat-icon>\n </mat-chip>\n </mat-chip-list>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Modal Footer -->\n <div class=\"modal-footer\">\n <button mat-stroked-button class=\"btn-common btn-secondary\" (click)=\"onClose()\" type=\"button\">\n Cancel\n </button>\n <button \n mat-stroked-button \n class=\"btn-common btn-primary\" \n (click)=\"onSave()\" \n type=\"button\">\n Save\n </button>\n </div>\n</div>", styles: [":host{display:block;height:100%}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .no-checkbox .mat-pseudo-checkbox{display:none!important}.custom-height-select{width:100%;margin-top:5px}.custom-height-select ::ng-deep .mat-mdc-select{height:35px;line-height:35px}.custom-height-select ::ng-deep .mat-form-field-flex{height:35px!important;min-height:35px!important}.custom-height-select ::ng-deep .mat-form-field-infix{min-height:35px!important;height:35px!important;display:flex;align-items:center;border:0;position:relative;padding:4px 8px 0}.custom-height-select ::ng-deep .mat-form-field-wrapper{height:35px;padding:0;margin:0}.custom-height-select ::ng-deep .mdc-notched-outline{border-radius:20px!important}.custom-height-select ::ng-deep .mdc-notched-outline__leading{display:none}.custom-height-select ::ng-deep .mdc-notched-outline__notch{border-color:#00000029!important}.custom-height-select ::ng-deep .mdc-notched-outline__trailing{border-color:#00000029!important;border-radius:20px!important;border-left:1px solid rgba(0,0,0,.1607843137)!important;border-right:1px solid rgba(0,0,0,.1607843137)!important}.custom-height-select ::ng-deep .mat-select-arrow-wrapper{padding-top:15px;transform:translateY(-4px)}.custom-height-select ::ng-deep .mat-select-value{line-height:35px}::ng-deep .right-side-modal.cdk-global-overlay-wrapper{justify-content:flex-end}::ng-deep .right-side-modal .mat-dialog-container{border-radius:0!important;padding:0!important;overflow-x:hidden;display:flex!important;flex-direction:column!important;height:100vh!important}::ng-deep .right-side-modal .cdk-overlay-pane{margin-right:0!important;max-width:90vw!important}::ng-deep .mat-pseudo-checkbox-checked{background-color:#1b4ca1!important;border-color:#1b4ca1!important}.org-hierarchy-modal{display:flex;flex-direction:column;height:100%}.org-hierarchy-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.org-hierarchy-modal .modal-header .header-title h2{font-size:16px;font-weight:600;color:#000000de}.org-hierarchy-modal .modal-header .close-button{color:#666}.org-hierarchy-modal .modal-content{flex:1;overflow-y:auto;padding:12px 24px;min-height:0}.org-hierarchy-modal .modal-content .content-container{max-width:800px;margin:0 auto}.org-hierarchy-modal .modal-content .form-field{margin-bottom:16px}.org-hierarchy-modal .modal-content .form-field .w-full{width:100%}.org-hierarchy-modal .modal-footer{display:flex;justify-content:flex-end;padding:12px 24px;border-top:1px solid rgba(0,0,0,.08);gap:16px;flex-shrink:0}.org-hierarchy-modal .modal-footer .cancel-btn,.org-hierarchy-modal .modal-footer .save-btn{min-width:100px}.searchable-select-container{margin-top:16px;margin-bottom:24px}.selected-items-container{margin-top:8px;margin-bottom:16px}.selected-items-container .selected-chips{display:flex;flex-wrap:wrap;gap:8px}::ng-deep .searchable-select-panel .mat-select-panel{max-height:350px}::ng-deep .searchable-select-panel .search-box{position:relative;padding:8px}::ng-deep .searchable-select-panel .search-box input{width:100%;height:36px;border:1px solid #ddd;border-radius:4px;padding:8px 36px 8px 12px;outline:none;font-size:14px}::ng-deep .searchable-select-panel .search-box input:focus{border-color:#1b4ca1}::ng-deep .searchable-select-panel .search-box .clear-search{position:absolute;right:8px;top:8px;width:24px;height:24px;line-height:24px}::ng-deep .searchable-select-panel .search-box .clear-search .mat-icon{font-size:16px;width:16px;height:16px;line-height:16px}::ng-deep .mat-chip{font-size:12px;min-height:26px}::ng-deep .mat-chip .mat-icon{font-size:16px;width:16px;height:16px}::ng-deep .mat-mdc-chip{font-size:12px;min-height:26px}::ng-deep .mat-mdc-chip .mat-icon{font-size:16px;width:16px!important;height:16px!important}::ng-deep .mat-mdc-chip-option[disabled]{opacity:1}::ng-deep .mat-mdc-chip-option[disabled] .mdc-evolution-chip__text-label{opacity:1}.m-0{margin:0}.w-full{width:100%}.orgTypeName{font-weight:700;font-size:14px;text-transform:capitalize}.sub-label{font-weight:400;font-size:12px;color:#0009}.orgTypeSelected{padding:5px 15px;border:1px solid rgba(0,0,0,.1607843137);background:#e8e9eb;border-radius:20px;margin-top:5px;font-size:14px;font-weight:400;text-transform:capitalize}.search-container{position:relative;width:100%;padding:8px;box-sizing:border-box;top:0}.search-container:before{content:\"\";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" fill=\"%23757575\"/></svg>');background-repeat:no-repeat;background-size:contain;z-index:1}.search-container .search-input{width:calc(100% - 8px);height:28px;border:1px solid rgba(0,0,0,.1607843137);border-radius:20px;padding:4px 12px 4px 36px;outline:none;font-size:14px;box-sizing:border-box}.search-container .search-input:focus{border-color:#1b4ca1}.dashed-line{height:25px;border-left:2px dashed #1B4CA1;margin-left:10px}.org-container{position:relative}.org-container:not(:first-child){margin-top:0}.org-container:not(:first-child):before{content:\"\";position:absolute;left:-20px;top:4px;height:8px;border-left:2px dashed #1B4CA1;z-index:0;border-bottom:2px dashed #1B4CA1;width:10px}.org-container:not(:first-child):after{content:\"\";position:absolute;left:-15px;top:8px;width:8px;height:8px;border-right:2px solid #1B4CA1;border-bottom:2px solid #1B4CA1;transform:rotate(-45deg);z-index:1;background-color:transparent}.add-btn{height:24px;background:#1b4ca1;color:#fff!important;display:flex;flex-direction:row-reverse;justify-content:space-between;border-radius:12px}.clip-option{margin:2px!important;border:1px solid #D6D6D6;border-radius:4px;font-size:14px;background:#fff!important;color:#000!important;padding:0!important}.select-search-container{position:relative}.org-clip{position:absolute;top:50px;left:0}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatLegacyChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i7.MatLegacyChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i7.MatLegacyChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i10.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex", "panelWidth", "hideSingleSelectionIndicator"], exportAs: ["matSelect"] }, { kind: "directive", type: i11.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i12.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i12.MatChipRemove, selector: "[matChipRemove]" }] }); }
160
215
  }
216
+ export { OrgHierarchyAddModalComponent };
161
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OrgHierarchyAddModalComponent, decorators: [{
162
218
  type: Component,
163
- args: [{ selector: 'sb-cb-tree-org-hierarchy-add-modal', template: "<div class=\"org-hierarchy-modal\">\n <!-- Modal Header -->\n <div class=\"modal-header\">\n <div class=\"header-title\">\n <h2 class=\"m-0\">Update Organisation Hierarchy</h2>\n </div>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Modal Content -->\n <div class=\"modal-content\">\n <div class=\"content-container\">\n <div class=\"flex flex-col org-container\">\n <label class=\"orgTypeName\">{{data?.selectedOrgData?.sbOrgType}}</label>\n <label class=\"orgTypeSelected\">{{data?.selectedOrgData?.orgName?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n <ng-container *ngIf=\"data?.previous?.length > 0\">\n <div class=\"flex flex-col org-container\" *ngFor=\"let item of data?.previous;let i = index\"\n [ngStyle]=\"{'margin-left': 30 * (i+1) + 'px'}\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"orgTypeSelected\">{{item?.name?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data?.currentData\">\n <div class=\"flex flex-col org-container\" \n [ngStyle]=\"{'margin-left': 30 * (data?.previous?.length + 1) + 'px'}\">\n <label class=\"orgTypeName\">{{data?.currentData?.code?.toLowerCase()}}</label>\n \n <!-- Searchable multi-select -->\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"selectedOrgsControl\" placeholder=\"Select\" #singleSelect\n [panelClass]=\"'mat-select-panel-below'\" disableOptionCentering [disableOptionCentering]=\"true\"\n multiple> <!-- Added the multiple attribute here -->\n <!-- Search container -->\n <div class=\"search-container\">\n <input type=\"text\" [formControl]=\"searchControl\" placeholder=\"Search...\"\n (keydown)=\"$event.key === ' ' ? $event.stopPropagation() : null\" (click)=\"$event.stopPropagation()\"\n class=\"search-input\" #searchInput>\n </div>\n <mat-option *ngFor=\"let organization of filteredOptions\" [value]=\"organization.identifier\">\n {{organization.orgName}}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n \n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Modal Footer -->\n <div class=\"modal-footer\">\n <button mat-stroked-button class=\"btn-common btn-secondary\" (click)=\"onClose()\" type=\"button\">\n Cancel\n </button>\n <button \n mat-stroked-button \n class=\"btn-common btn-primary\" \n [disabled]=\"!selectedOrgsControl.value?.length\" \n (click)=\"onSave()\" \n type=\"button\">\n Save\n </button>\n </div>\n</div>", styles: [":host{display:block;height:100%}.custom-height-select{width:100%;margin-top:5px}.custom-height-select ::ng-deep .mat-mdc-select{height:35px;line-height:35px}.custom-height-select ::ng-deep .mat-form-field-flex{height:35px!important;min-height:35px!important}.custom-height-select ::ng-deep .mat-form-field-infix{min-height:35px!important;height:35px!important;display:flex;align-items:center;border:0;position:relative;padding:4px 8px 0}.custom-height-select ::ng-deep .mat-form-field-wrapper{height:35px;padding:0;margin:0}.custom-height-select ::ng-deep .mdc-notched-outline{border-radius:20px!important}.custom-height-select ::ng-deep .mdc-notched-outline__leading{display:none}.custom-height-select ::ng-deep .mdc-notched-outline__notch{border-color:#00000029!important}.custom-height-select ::ng-deep .mdc-notched-outline__trailing{border-color:#00000029!important;border-radius:20px!important;border-left:1px solid rgba(0,0,0,.1607843137)!important;border-right:1px solid rgba(0,0,0,.1607843137)!important}.custom-height-select ::ng-deep .mat-select-arrow-wrapper{padding-top:15px;transform:translateY(-4px)}.custom-height-select ::ng-deep .mat-select-value{line-height:35px}::ng-deep .right-side-modal.cdk-global-overlay-wrapper{justify-content:flex-end}::ng-deep .right-side-modal .mat-dialog-container{border-radius:0!important;padding:0!important;overflow-x:hidden;display:flex!important;flex-direction:column!important;height:100vh!important}::ng-deep .right-side-modal .cdk-overlay-pane{margin-right:0!important;max-width:90vw!important}::ng-deep .mat-pseudo-checkbox-checked{background-color:#1b4ca1!important;border-color:#1b4ca1!important}.org-hierarchy-modal{display:flex;flex-direction:column;height:100%}.org-hierarchy-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.org-hierarchy-modal .modal-header .header-title h2{font-size:16px;font-weight:600;color:#000000de}.org-hierarchy-modal .modal-header .close-button{color:#666}.org-hierarchy-modal .modal-content{flex:1;overflow-y:auto;padding:12px 24px;min-height:0}.org-hierarchy-modal .modal-content .content-container{max-width:800px;margin:0 auto}.org-hierarchy-modal .modal-content .form-field{margin-bottom:16px}.org-hierarchy-modal .modal-content .form-field .w-full{width:100%}.org-hierarchy-modal .modal-footer{display:flex;justify-content:flex-end;padding:12px 24px;border-top:1px solid rgba(0,0,0,.08);gap:16px;flex-shrink:0}.org-hierarchy-modal .modal-footer .cancel-btn,.org-hierarchy-modal .modal-footer .save-btn{min-width:100px}.searchable-select-container{margin-top:16px;margin-bottom:24px}.selected-items-container{margin-top:8px;margin-bottom:16px}.selected-items-container .selected-chips{display:flex;flex-wrap:wrap;gap:8px}::ng-deep .searchable-select-panel .mat-select-panel{max-height:350px}::ng-deep .searchable-select-panel .search-box{position:relative;padding:8px}::ng-deep .searchable-select-panel .search-box input{width:100%;height:36px;border:1px solid #ddd;border-radius:4px;padding:8px 36px 8px 12px;outline:none;font-size:14px}::ng-deep .searchable-select-panel .search-box input:focus{border-color:#1b4ca1}::ng-deep .searchable-select-panel .search-box .clear-search{position:absolute;right:8px;top:8px;width:24px;height:24px;line-height:24px}::ng-deep .searchable-select-panel .search-box .clear-search .mat-icon{font-size:16px;width:16px;height:16px;line-height:16px}::ng-deep .mat-chip{font-size:12px;min-height:26px}::ng-deep .mat-chip .mat-icon{font-size:16px;width:16px;height:16px}::ng-deep .mat-mdc-chip{font-size:12px;min-height:26px}::ng-deep .mat-mdc-chip .mat-icon{font-size:16px;width:16px!important;height:16px!important}::ng-deep .mat-mdc-chip-option[disabled]{opacity:1}::ng-deep .mat-mdc-chip-option[disabled] .mdc-evolution-chip__text-label{opacity:1}.m-0{margin:0}.w-full{width:100%}.orgTypeName{font-weight:700;font-size:14px;text-transform:capitalize}.orgTypeSelected{padding:5px 15px;border:1px solid rgba(0,0,0,.1607843137);background:#e8e9eb;border-radius:20px;margin-top:5px;font-size:14px;font-weight:400;text-transform:capitalize}.search-container{position:relative;width:100%;padding:8px;box-sizing:border-box}.search-container:before{content:\"\";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" fill=\"%23757575\"/></svg>');background-repeat:no-repeat;background-size:contain;z-index:1}.search-container .search-input{width:calc(100% - 8px);height:28px;border:1px solid rgba(0,0,0,.1607843137);border-radius:20px;padding:4px 12px 4px 36px;outline:none;font-size:14px;box-sizing:border-box}.search-container .search-input:focus{border-color:#1b4ca1}.dashed-line{height:25px;border-left:2px dashed #1B4CA1;margin-left:10px}.org-container{position:relative}.org-container:not(:first-child){margin-top:0}.org-container:not(:first-child):before{content:\"\";position:absolute;left:-20px;top:4px;height:8px;border-left:2px dashed #1B4CA1;z-index:0;border-bottom:2px dashed #1B4CA1;width:10px}.org-container:not(:first-child):after{content:\"\";position:absolute;left:-15px;top:8px;width:8px;height:8px;border-right:2px solid #1B4CA1;border-bottom:2px solid #1B4CA1;transform:rotate(-45deg);z-index:1;background-color:transparent}\n"] }]
219
+ args: [{ selector: 'sb-cb-tree-org-hierarchy-add-modal', template: "<div class=\"org-hierarchy-modal\">\n <!-- Modal Header -->\n <div class=\"modal-header\">\n <div class=\"header-title\">\n <h2 class=\"m-0\">Update Organisation Hierarchy</h2>\n </div>\n <button mat-icon-button class=\"close-button\" (click)=\"onClose()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Modal Content -->\n <div class=\"modal-content\">\n <div class=\"content-container\">\n <div class=\"flex flex-col org-container\">\n <label class=\"orgTypeName\">{{data?.selectedOrgData?.sbOrgType}}</label>\n <label class=\"orgTypeSelected\">{{data?.selectedOrgData?.orgName?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </div>\n <ng-container *ngIf=\"data?.previous?.length > 0\">\n <div class=\"flex flex-col org-container\" *ngFor=\"let item of data?.previous;let i = index\"\n [ngStyle]=\"{'margin-left': 30 * (i+1) + 'px'}\">\n <ng-container *ngIf=\"data?.type === 'update' && i === (data?.previous?.length - 2)\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"sub-label\">Only the imported organisation will be listed.</label>\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"parentSelectedOrgControl\" placeholder=\"Select\" #parentSelect\n [panelClass]=\"'mat-select-panel-below'\" \n disableOptionCentering \n [disableOptionCentering]=\"true\"\n (keydown)=\"handleKeydown($event)\">\n <!-- Search container -->\n <div class=\"search-container flex gap-5 flex-middle\" (click)=\"$event.stopPropagation()\">\n <input type=\"text\" [formControl]=\"parentSearchControl\" placeholder=\"Search...\"\n (keydown)=\"handleSearchKeydown($event)\"\n class=\"search-input\" #searchInput>\n </div>\n <mat-option class=\"no-checkbox\" *ngFor=\"let organization of parentFilteredOptions\" [value]=\"organization.code\">\n {{organization.name}}\n </mat-option>\n <mat-option *ngIf=\"parentFilteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n <div class=\"dashed-line\"></div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!(data?.type === 'update' && i === (data?.previous?.length - 2))\">\n <label class=\"orgTypeName\">{{item?.category?.toLowerCase()}}</label>\n <label class=\"orgTypeSelected\">{{item?.name?.toLowerCase()}}</label>\n <div class=\"dashed-line\"></div>\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"data?.currentData\">\n <div class=\"flex flex-col org-container\" \n [ngStyle]=\"{'margin-left': 30 * (data?.previous?.length + 1) + 'px'}\">\n <label class=\"orgTypeName\">{{data?.currentData?.code?.toLowerCase()}}</label>\n <label class=\"sub-label\">Organisations which are already in the hierarchy will not listed to add or in searchable dropdown</label>\n <!-- Searchable multi-select -->\n <div class=\"select-search-container\">\n <mat-form-field appearance=\"outline\" class=\"w-full custom-height-select\">\n <mat-select [formControl]=\"selectedOrgsControl\" placeholder=\"Select\" #singleSelect\n [panelClass]=\"'mat-select-panel-below'\" \n disableOptionCentering \n [disableOptionCentering]=\"true\"\n (keydown)=\"handleKeydown($event)\"\n multiple>\n <!-- Search container -->\n <div class=\"search-container flex gap-5 flex-middle\" (click)=\"$event.stopPropagation()\">\n <input type=\"text\" [formControl]=\"searchControl\" placeholder=\"Search...\"\n (keydown)=\"handleSearchKeydown($event)\"\n class=\"search-input\" #searchInput>\n <button mat-button class=\"add-btn\" (click)=\"checkAndClose(singleSelect); $event.stopPropagation()\" type=\"button\">\n <span>Add</span>\n <mat-icon class=\"margin-remove\">add</mat-icon>\n </button>\n </div>\n <mat-option *ngFor=\"let organization of filteredOptions\" [value]=\"organization.identifier\">\n {{organization.orgName}}\n </mat-option>\n <mat-option *ngIf=\"filteredOptions.length === 0\" disabled>\n No data found\n </mat-option>\n </mat-select>\n </mat-form-field>\n <ng-container *ngIf=\"selectedOrgsControl?.value?.length > 0\">\n <mat-chip-list class=\"org-clip\" aria-label=\"orgSelection\">\n <mat-chip class=\"clip-option flex flex-middle\" *ngFor=\"let item of selectedOrgsControl.value\" [removable]=\"true\" (removed)=\"removeOrg(item)\">\n {{getNameOfOrg(item)}}\n <mat-icon matChipRemove class=\"margin-remove\">close</mat-icon>\n </mat-chip>\n </mat-chip-list>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n\n <!-- Modal Footer -->\n <div class=\"modal-footer\">\n <button mat-stroked-button class=\"btn-common btn-secondary\" (click)=\"onClose()\" type=\"button\">\n Cancel\n </button>\n <button \n mat-stroked-button \n class=\"btn-common btn-primary\" \n (click)=\"onSave()\" \n type=\"button\">\n Save\n </button>\n </div>\n</div>", styles: [":host{display:block;height:100%}:host ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}::ng-deep .no-checkbox .mat-pseudo-checkbox{display:none!important}.custom-height-select{width:100%;margin-top:5px}.custom-height-select ::ng-deep .mat-mdc-select{height:35px;line-height:35px}.custom-height-select ::ng-deep .mat-form-field-flex{height:35px!important;min-height:35px!important}.custom-height-select ::ng-deep .mat-form-field-infix{min-height:35px!important;height:35px!important;display:flex;align-items:center;border:0;position:relative;padding:4px 8px 0}.custom-height-select ::ng-deep .mat-form-field-wrapper{height:35px;padding:0;margin:0}.custom-height-select ::ng-deep .mdc-notched-outline{border-radius:20px!important}.custom-height-select ::ng-deep .mdc-notched-outline__leading{display:none}.custom-height-select ::ng-deep .mdc-notched-outline__notch{border-color:#00000029!important}.custom-height-select ::ng-deep .mdc-notched-outline__trailing{border-color:#00000029!important;border-radius:20px!important;border-left:1px solid rgba(0,0,0,.1607843137)!important;border-right:1px solid rgba(0,0,0,.1607843137)!important}.custom-height-select ::ng-deep .mat-select-arrow-wrapper{padding-top:15px;transform:translateY(-4px)}.custom-height-select ::ng-deep .mat-select-value{line-height:35px}::ng-deep .right-side-modal.cdk-global-overlay-wrapper{justify-content:flex-end}::ng-deep .right-side-modal .mat-dialog-container{border-radius:0!important;padding:0!important;overflow-x:hidden;display:flex!important;flex-direction:column!important;height:100vh!important}::ng-deep .right-side-modal .cdk-overlay-pane{margin-right:0!important;max-width:90vw!important}::ng-deep .mat-pseudo-checkbox-checked{background-color:#1b4ca1!important;border-color:#1b4ca1!important}.org-hierarchy-modal{display:flex;flex-direction:column;height:100%}.org-hierarchy-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:12px 24px;border-bottom:1px solid rgba(0,0,0,.08);flex-shrink:0}.org-hierarchy-modal .modal-header .header-title h2{font-size:16px;font-weight:600;color:#000000de}.org-hierarchy-modal .modal-header .close-button{color:#666}.org-hierarchy-modal .modal-content{flex:1;overflow-y:auto;padding:12px 24px;min-height:0}.org-hierarchy-modal .modal-content .content-container{max-width:800px;margin:0 auto}.org-hierarchy-modal .modal-content .form-field{margin-bottom:16px}.org-hierarchy-modal .modal-content .form-field .w-full{width:100%}.org-hierarchy-modal .modal-footer{display:flex;justify-content:flex-end;padding:12px 24px;border-top:1px solid rgba(0,0,0,.08);gap:16px;flex-shrink:0}.org-hierarchy-modal .modal-footer .cancel-btn,.org-hierarchy-modal .modal-footer .save-btn{min-width:100px}.searchable-select-container{margin-top:16px;margin-bottom:24px}.selected-items-container{margin-top:8px;margin-bottom:16px}.selected-items-container .selected-chips{display:flex;flex-wrap:wrap;gap:8px}::ng-deep .searchable-select-panel .mat-select-panel{max-height:350px}::ng-deep .searchable-select-panel .search-box{position:relative;padding:8px}::ng-deep .searchable-select-panel .search-box input{width:100%;height:36px;border:1px solid #ddd;border-radius:4px;padding:8px 36px 8px 12px;outline:none;font-size:14px}::ng-deep .searchable-select-panel .search-box input:focus{border-color:#1b4ca1}::ng-deep .searchable-select-panel .search-box .clear-search{position:absolute;right:8px;top:8px;width:24px;height:24px;line-height:24px}::ng-deep .searchable-select-panel .search-box .clear-search .mat-icon{font-size:16px;width:16px;height:16px;line-height:16px}::ng-deep .mat-chip{font-size:12px;min-height:26px}::ng-deep .mat-chip .mat-icon{font-size:16px;width:16px;height:16px}::ng-deep .mat-mdc-chip{font-size:12px;min-height:26px}::ng-deep .mat-mdc-chip .mat-icon{font-size:16px;width:16px!important;height:16px!important}::ng-deep .mat-mdc-chip-option[disabled]{opacity:1}::ng-deep .mat-mdc-chip-option[disabled] .mdc-evolution-chip__text-label{opacity:1}.m-0{margin:0}.w-full{width:100%}.orgTypeName{font-weight:700;font-size:14px;text-transform:capitalize}.sub-label{font-weight:400;font-size:12px;color:#0009}.orgTypeSelected{padding:5px 15px;border:1px solid rgba(0,0,0,.1607843137);background:#e8e9eb;border-radius:20px;margin-top:5px;font-size:14px;font-weight:400;text-transform:capitalize}.search-container{position:relative;width:100%;padding:8px;box-sizing:border-box;top:0}.search-container:before{content:\"\";position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\" fill=\"%23757575\"/></svg>');background-repeat:no-repeat;background-size:contain;z-index:1}.search-container .search-input{width:calc(100% - 8px);height:28px;border:1px solid rgba(0,0,0,.1607843137);border-radius:20px;padding:4px 12px 4px 36px;outline:none;font-size:14px;box-sizing:border-box}.search-container .search-input:focus{border-color:#1b4ca1}.dashed-line{height:25px;border-left:2px dashed #1B4CA1;margin-left:10px}.org-container{position:relative}.org-container:not(:first-child){margin-top:0}.org-container:not(:first-child):before{content:\"\";position:absolute;left:-20px;top:4px;height:8px;border-left:2px dashed #1B4CA1;z-index:0;border-bottom:2px dashed #1B4CA1;width:10px}.org-container:not(:first-child):after{content:\"\";position:absolute;left:-15px;top:8px;width:8px;height:8px;border-right:2px solid #1B4CA1;border-bottom:2px solid #1B4CA1;transform:rotate(-45deg);z-index:1;background-color:transparent}.add-btn{height:24px;background:#1b4ca1;color:#fff!important;display:flex;flex-direction:row-reverse;justify-content:space-between;border-radius:12px}.clip-option{margin:2px!important;border:1px solid #D6D6D6;border-radius:4px;font-size:14px;background:#fff!important;color:#000!important;padding:0!important}.select-search-container{position:relative}.org-clip{position:absolute;top:50px;left:0}\n"] }]
164
220
  }], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
165
221
  type: Inject,
166
222
  args: [MAT_DIALOG_DATA]
167
- }] }, { type: i2.TreeHierarchyService }, { type: i3.FrameworkService }]; } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWhpZXJhcmNoeS1hZGQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvY29tcG9uZW50cy9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBc0Msc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzNDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBT3ZCLE1BQU0sT0FBTyw2QkFBNkI7SUFVeEMsWUFDUyxTQUFzRCxFQUM3QixJQUFTLEVBQ2pDLGdCQUFzQyxFQUN0QyxnQkFBa0M7UUFIbkMsY0FBUyxHQUFULFNBQVMsQ0FBNkM7UUFDN0IsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXNCO1FBQ3RDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFiNUMsa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FB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LENBQUM7aUNBQ25EOzZCQUNGO3dCQUNILENBQUMsQ0FBQyxDQUFDO3FCQUNKO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7WUFDRCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDOUUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDdEMsQ0FBQTtZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDOytHQS9LVSw2QkFBNkIsb0RBWTlCLGVBQWU7bUdBWmQsNkJBQTZCLDBFQ2QxQyw4K0dBeUVNOzs0RkQzRE8sNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLG9DQUFvQzs7MEJBZ0IzQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdExlZ2FjeURpYWxvZ1JlZiBhcyBNYXREaWFsb2dSZWYsIE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEgYXMgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWRpYWxvZyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRyZWVIaWVyYXJjaHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJlZS1oaWVyYXJjaHkuc2VydmljZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJhbWV3b3JrLnNlcnZpY2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ItY2ItdHJlZS1vcmctaGllcmFyY2h5LWFkZC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgT3JnSGllcmFyY2h5QWRkTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBzZWxlY3RlZE9yZ3NDb250cm9sID0gbmV3IEZvcm1Db250cm9sPChzdHJpbmcgfCBudW1iZXIpW10+KFtdKTtcbiAgXG4gIC8vIEV4YW1wbGUgb3B0aW9ucyAtIHJlcGxhY2Ugd2l0aCB5b3VyIGFjdHVhbCBkYXRhXG4gIG9yZ09wdGlvbnM6IGFueVtdID0gW107XG4gIGZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcbiAgXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgcHJpdmF0ZSB0cmVlSGllcmFyY2h5U3ZjOiBUcmVlSGllcmFyY2h5U2VydmljZSwgXG4gICAgcHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldFNlbGVjdGVkU3RhdGVPcmcoKVxuICAgIFxuICAgIC8vIExpc3RlbiBmb3Igc2VhcmNoIGNoYW5nZXNcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh2YWx1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMoc2VhcmNoVmFsdWU6IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3JnT3B0aW9uc107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3JnT3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IFxuICAgICAgb3B0aW9uLm9yZ05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICApO1xuICAgIFxuICAgIC8vIEVuc3VyZSBzZWxlY3RlZCBpdGVtcyBhcmUgcHJlc2VydmVkIGluIHRoZSBmaWx0ZXJlZCBsaXN0XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWUgfHwgW107XG4gICAgaWYgKHNlbGVjdGVkSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgYW55IHNlbGVjdGVkIGl0ZW1zIHRoYXQgd2VyZSBmaWx0ZXJlZCBvdXRcbiAgICAgIGNvbnN0IG1pc3NpbmdTZWxlY3RlZE9wdGlvbnMgPSB0aGlzLm9yZ09wdGlvbnMuZmlsdGVyKChvcHRpb246YW55KSA9PiBcbiAgICAgICAgc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0aW9uLmlkZW50aWZpZXIpICYmIFxuICAgICAgICAhdGhpcy5maWx0ZXJlZE9wdGlvbnMuc29tZShmaWx0ZXJlZCA9PiBmaWx0ZXJlZC5pZGVudGlmaWVyID09PSBvcHRpb24uaWRlbnRpZmllcilcbiAgICAgICk7XG4gICAgICAvLyBBZGQgbWlzc2luZyBzZWxlY3RlZCBpdGVtcyBiYWNrIHRvIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgaWYgKG1pc3NpbmdTZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLmZpbHRlcmVkT3B0aW9ucywgLi4ubWlzc2luZ1NlbGVjdGVkT3B0aW9uc107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc29ydE9wdGlvbnNXaXRoU2VsZWN0ZWRGaXJzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9uc1dpdGhTZWxlY3RlZEZpcnN0KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sLnZhbHVlIHx8IFtdO1xuICAgIFxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFJc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYS5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGJJc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYi5pZGVudGlmaWVyKTtcbiAgICAgIFxuICAgICAgaWYgKGFJc1NlbGVjdGVkICYmICFiSXNTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gLTE7IC8vIGEgY29tZXMgZmlyc3QgKHNlbGVjdGVkIGl0ZW1zIGZpcnN0KVxuICAgICAgfVxuICAgICAgaWYgKCFhSXNTZWxlY3RlZCAmJiBiSXNTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gMTsgLy8gYiBjb21lcyBmaXJzdCAoc2VsZWN0ZWQgaXRlbXMgZmlyc3QpXG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIElmIGJvdGggYXJlIHNlbGVjdGVkIG9yIGJvdGggYXJlIG5vdCBzZWxlY3RlZCwgc29ydCBhbHBoYWJldGljYWxseVxuICAgICAgcmV0dXJuIGEub3JnTmFtZS5sb2NhbGVDb21wYXJlKGIub3JnTmFtZSk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhclNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgdG9nZ2xlU2VsZWN0QWxsKGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzQWxsU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYWxsVmFsdWVzOmFueSA9IHRoaXMuZmlsdGVyZWRPcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLmlkZW50aWZpZXIpO1xuICAgICAgdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sLnNldFZhbHVlKGFsbFZhbHVlcyk7XG4gICAgfVxuICB9XG5cbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBudW1TZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZT8ubGVuZ3RoIHx8IDA7XG4gICAgY29uc3QgbnVtRmlsdGVyZWQgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XG4gICAgcmV0dXJuIG51bVNlbGVjdGVkID4gMCAmJiBudW1TZWxlY3RlZCA9PT0gbnVtRmlsdGVyZWQ7XG4gIH1cblxuICBnZXRTZWxlY3RlZE9wdGlvbnMoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHM6IGFueSA9IHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZSB8fCBbXTtcbiAgICByZXR1cm4gdGhpcy5vcmdPcHRpb25zLmZpbHRlcigob3B0aW9uOiBhbnkpID0+IHNlbGVjdGVkSWRzLmluY2x1ZGVzKG9wdGlvbi5pZGVudGlmaWVyKSk7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZChpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wuc2V0VmFsdWUoXG4gICAgICBjdXJyZW50U2VsZWN0aW9uLmZpbHRlcigodmFsdWU6IGFueSkgPT4gdmFsdWUgIT09IGlkKVxuICAgICk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cblxuICBvblNhdmUoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRPcmdzID0gdGhpcy5nZXRTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZShzZWxlY3RlZE9yZ3MpO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VsZWN0ZWRTdGF0ZU9yZygpIHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgIHN0YXR1czogMSxcbiAgICAgICAgICBtaW5pc3RyeU9yU3RhdGVUeXBlOiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5zZWxlY3RlZE9yZ0RhdGEpID9cbiAgICAgICAgICAgIHRoaXMuZGF0YS5zZWxlY3RlZE9yZ0RhdGEuc2JPcmdUeXBlIDogJycsXG4gICAgICAgICAgbWluaXN0cnlPclN0YXRlSWQ6ICh0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLnNlbGVjdGVkT3JnRGF0YSkgPyBcbiAgICAgICAgICAgIHRoaXMuZGF0YS5zZWxlY3RlZE9yZ0RhdGEuaWRlbnRpZmllciA6ICcnXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnRfYnk6IHtcbiAgICAgICAgICBjcmVhdGVkRGF0ZTogXCJkZXNjXCJcbiAgICAgICAgfSxcbiAgICAgICAgbGltaXQ6IDEwMCxcbiAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAnaWRlbnRpZmllcicsXG4gICAgICAgICAgJ29yZ05hbWUnLFxuICAgICAgICAgICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgJ3BhcmVudE9yZ05hbWUnLFxuICAgICAgICAgICdtaW5pc3RyeU9yU3RhdGVJZCcsXG4gICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZVR5cGUnLFxuICAgICAgICAgICdtaW5pc3RyeU9yU3RhdGVOYW1lJ1xuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IG9yZ0xpc3REYXRhID0gYXdhaXQgdGhpcy50cmVlSGllcmFyY2h5U3ZjLm9yZ1NlcmFjaEFwaShyZXF1ZXN0Qm9keSkudG9Qcm9taXNlKCkuY2F0Y2goZXJyID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIG9yZ2FuaXphdGlvbiBkYXRhOicsIGVycik7XG4gICAgfSk7XG4gICAgXG4gICAgaWYgKG9yZ0xpc3REYXRhICYmIG9yZ0xpc3REYXRhLnJlc3VsdCAmJiBcbiAgICAgIG9yZ0xpc3REYXRhLnJlc3VsdC5yZXNwb25zZSAmJiBvcmdMaXN0RGF0YS5yZXN1bHQucmVzcG9uc2UuY29udGVudCkge1xuICAgICAgICBjb25zdCBmcmFtd29ya0RhdGEgPSBfLmNsb25lRGVlcCh0aGlzLmZyYW1ld29ya1NlcnZpY2UuY29tcGxldGVSZXNwb25zZSlcbiAgICAgICAgbGV0IG9yZ0lkc0FkZGVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAoZnJhbXdvcmtEYXRhICYmIGZyYW13b3JrRGF0YS5jYXRlZ29yaWVzICYmIGZyYW13b3JrRGF0YS5jYXRlZ29yaWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBmcmFtd29ya0RhdGEuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoY2F0ZWdvcnkudGVybXMgJiYgY2F0ZWdvcnkudGVybXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjYXRlZ29yeS50ZXJtcy5mb3JFYWNoKCh0ZXJtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGVybS5hZGRpdGlvbmFsUHJvcGVydGllcyAmJiB0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoIW9yZ0lkc0FkZGVkLmluY2x1ZGVzKHRlcm0uYWRkaXRpb25hbFByb3BlcnRpZXMub3JnSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9yZ0lkc0FkZGVkLnB1c2godGVybS5hZGRpdGlvbmFsUHJvcGVydGllcy5vcmdJZCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJlZE9yZ0xpc3QgPSBvcmdMaXN0RGF0YS5yZXN1bHQucmVzcG9uc2UuY29udGVudC5maWx0ZXIoKG9yZzogYW55KSA9PiBcbiAgICAgICAgICAhb3JnSWRzQWRkZWQuaW5jbHVkZXMob3JnLmlkZW50aWZpZXIpXG4gICAgICAgIClcbiAgICAgICAgdGhpcy5vcmdPcHRpb25zID0gZmlsdGVyZWRPcmdMaXN0IHx8IFtdO1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLm9yZ09wdGlvbnNdO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm9yZy1oaWVyYXJjaHktbW9kYWxcIj5cbiAgPCEtLSBNb2RhbCBIZWFkZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLXRpdGxlXCI+XG4gICAgICA8aDIgY2xhc3M9XCJtLTBcIj5VcGRhdGUgT3JnYW5pc2F0aW9uIEhpZXJhcmNoeTwvaDI+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIE1vZGFsIENvbnRlbnQgLS0+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG9yZy1jb250YWluZXJcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJvcmdUeXBlTmFtZVwiPnt7ZGF0YT8uc2VsZWN0ZWRPcmdEYXRhPy5zYk9yZ1R5cGV9fTwvbGFiZWw+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwib3JnVHlwZVNlbGVjdGVkXCI+e3tkYXRhPy5zZWxlY3RlZE9yZ0RhdGE/Lm9yZ05hbWU/LnRvTG93ZXJDYXNlKCl9fTwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hlZC1saW5lXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8ucHJldmlvdXM/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG9yZy1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5wcmV2aW91cztsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLWxlZnQnOiAzMCAqIChpKzEpICsgJ3B4J31cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJvcmdUeXBlTmFtZVwiPnt7aXRlbT8uY2F0ZWdvcnk/LnRvTG93ZXJDYXNlKCl9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwib3JnVHlwZVNlbGVjdGVkXCI+e3tpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXNoZWQtbGluZVwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YT8uY3VycmVudERhdGFcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG9yZy1jb250YWluZXJcIiBcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLWxlZnQnOiAzMCAqIChkYXRhPy5wcmV2aW91cz8ubGVuZ3RoICsgMSkgKyAncHgnfVwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm9yZ1R5cGVOYW1lXCI+e3tkYXRhPy5jdXJyZW50RGF0YT8uY29kZT8udG9Mb3dlckNhc2UoKX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaGFibGUgbXVsdGktc2VsZWN0IC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtc2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbCBjdXN0b20taGVpZ2h0LXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkT3Jnc0NvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiICNzaW5nbGVTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cIidtYXQtc2VsZWN0LXBhbmVsLWJlbG93J1wiIGRpc2FibGVPcHRpb25DZW50ZXJpbmcgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZT4gPCEtLSBBZGRlZCB0aGUgbXVsdGlwbGUgYXR0cmlidXRlIGhlcmUgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggY29udGFpbmVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQua2V5ID09PSAnICcgPyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgOiBudWxsXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VhcmNoLWlucHV0XCIgI3NlYXJjaElucHV0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcmdhbml6YXRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCIgW3ZhbHVlXT1cIm9yZ2FuaXphdGlvbi5pZGVudGlmaWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3JnYW5pemF0aW9uLm9yZ05hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDBcIiBkaXNhYmxlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gZGF0YSBmb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBNb2RhbCBGb290ZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImJ0bi1jb21tb24gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJvbkNsb3NlKClcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFxuICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uIFxuICAgICAgY2xhc3M9XCJidG4tY29tbW9uIGJ0bi1wcmltYXJ5XCIgXG4gICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWU/Lmxlbmd0aFwiIFxuICAgICAgKGNsaWNrKT1cIm9uU2F2ZSgpXCIgXG4gICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBTYXZlXG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+Il19
223
+ }] }, { type: i2.FrameworkService }, { type: i3.MatLegacySnackBar }]; } });
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWhpZXJhcmNoeS1hZGQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvY29tcG9uZW50cy9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3JFLE9BQU8sRUFBc0Msc0JBQXNCLElBQUksZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEksT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFJdkIsTUFLYSw2QkFBNkI7SUFleEMsWUFDUyxTQUFzRCxFQUM3QixJQUFTLEVBQ2pDLGdCQUFrQyxFQUNsQyxRQUFxQjtRQUh0QixjQUFTLEdBQVQsU0FBUyxDQUE2QztRQUM3QixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ2pDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQWxCL0Isa0JBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyx3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YUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVE7UUFDckIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQzVHLENBQUM7K0dBdFBVLDZCQUE2QixvREFpQjlCLGVBQWU7bUdBakJkLDZCQUE2QiwwRUNmMUMsbTlNQW1ITTs7U0RwR08sNkJBQTZCOzRGQUE3Qiw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0Usb0NBQW9DOzswQkFxQjNDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiwgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJztcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnJhbWV3b3JrU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZyYW1ld29yay5zZXJ2aWNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBNYXRTZWxlY3QgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0TGVnYWN5U25hY2tCYXIgYXMgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc25hY2stYmFyJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzYi1jYi10cmVlLW9yZy1oaWVyYXJjaHktYWRkLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3JnLWhpZXJhcmNoeS1hZGQtbW9kYWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG4gIHBhcmVudFNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBzZWxlY3RlZE9yZ3NDb250cm9sID0gbmV3IEZvcm1Db250cm9sPChzdHJpbmcgfCBudW1iZXIpW10+KFtdKTtcbiAgcGFyZW50U2VsZWN0ZWRPcmdDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgXG4gIC8vIEV4YW1wbGUgb3B0aW9ucyAtIHJlcGxhY2Ugd2l0aCB5b3VyIGFjdHVhbCBkYXRhXG4gIG9yZ09wdGlvbnM6IGFueVtdID0gW107XG4gIGZpbHRlcmVkT3B0aW9uczogYW55W10gPSBbXTtcblxuICBwYXJlbnRGaWx0ZXJlZE9wdGlvbnM6IGFueVtdID0gW107XG4gIFxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgZnJhbWV3b3JrRGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksIFxuICAgIHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrYmFyOiBNYXRTbmFja0JhcixcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0U2VsZWN0ZWRTdGF0ZU9yZygpXG4gICAgaWYodGhpcy5kYXRhICYmIHRoaXMuZGF0YS50eXBlID09PSAndXBkYXRlJykge1xuICAgICAgdGhpcy5mcmFtZXdvcmtEYXRhID0gXy5jbG9uZURlZXAodGhpcy5mcmFtZXdvcmtTZXJ2aWNlLmNvbXBsZXRlUmVzcG9uc2UpO1xuICAgICAgdGhpcy5nZXRQYXJlbnRUZXJtcyh0aGlzLmRhdGEucHJldmlvdXNbdGhpcy5kYXRhLnByZXZpb3VzLmxlbmd0aCAtIDJdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh2YWx1ZSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMucGFyZW50U2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJlbnRPcHRpb25zKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGZpbHRlck9wdGlvbnMoc2VhcmNoVmFsdWU6IHN0cmluZykge1xuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3JnT3B0aW9uc107XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IGZpbHRlclZhbHVlID0gc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3JnT3B0aW9ucy5maWx0ZXIob3B0aW9uID0+IFxuICAgICAgb3B0aW9uLm9yZ05hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICApO1xuICAgIFxuICAgIC8vIEVuc3VyZSBzZWxlY3RlZCBpdGVtcyBhcmUgcHJlc2VydmVkIGluIHRoZSBmaWx0ZXJlZCBsaXN0XG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWUgfHwgW107XG4gICAgaWYgKHNlbGVjdGVkSWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIEZpbmQgYW55IHNlbGVjdGVkIGl0ZW1zIHRoYXQgd2VyZSBmaWx0ZXJlZCBvdXRcbiAgICAgIGNvbnN0IG1pc3NpbmdTZWxlY3RlZE9wdGlvbnMgPSB0aGlzLm9yZ09wdGlvbnMuZmlsdGVyKChvcHRpb246YW55KSA9PiBcbiAgICAgICAgc2VsZWN0ZWRJZHMuaW5jbHVkZXMob3B0aW9uLmlkZW50aWZpZXIpICYmIFxuICAgICAgICAhdGhpcy5maWx0ZXJlZE9wdGlvbnMuc29tZShmaWx0ZXJlZCA9PiBmaWx0ZXJlZC5pZGVudGlmaWVyID09PSBvcHRpb24uaWRlbnRpZmllcilcbiAgICAgICk7XG4gICAgICAvLyBBZGQgbWlzc2luZyBzZWxlY3RlZCBpdGVtcyBiYWNrIHRvIGZpbHRlcmVkT3B0aW9uc1xuICAgICAgaWYgKG1pc3NpbmdTZWxlY3RlZE9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IFsuLi50aGlzLmZpbHRlcmVkT3B0aW9ucywgLi4ubWlzc2luZ1NlbGVjdGVkT3B0aW9uc107XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc29ydE9wdGlvbnNXaXRoU2VsZWN0ZWRGaXJzdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0T3B0aW9uc1dpdGhTZWxlY3RlZEZpcnN0KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzID0gdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sLnZhbHVlIHx8IFtdO1xuICAgIFxuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IGFJc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYS5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGJJc1NlbGVjdGVkID0gc2VsZWN0ZWRJZHMuaW5jbHVkZXMoYi5pZGVudGlmaWVyKTtcbiAgICAgIFxuICAgICAgaWYgKGFJc1NlbGVjdGVkICYmICFiSXNTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gLTE7IC8vIGEgY29tZXMgZmlyc3QgKHNlbGVjdGVkIGl0ZW1zIGZpcnN0KVxuICAgICAgfVxuICAgICAgaWYgKCFhSXNTZWxlY3RlZCAmJiBiSXNTZWxlY3RlZCkge1xuICAgICAgICByZXR1cm4gMTsgLy8gYiBjb21lcyBmaXJzdCAoc2VsZWN0ZWQgaXRlbXMgZmlyc3QpXG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIElmIGJvdGggYXJlIHNlbGVjdGVkIG9yIGJvdGggYXJlIG5vdCBzZWxlY3RlZCwgc29ydCBhbHBoYWJldGljYWxseVxuICAgICAgcmV0dXJuIGEub3JnTmFtZS5sb2NhbGVDb21wYXJlKGIub3JnTmFtZSk7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhclNlYXJjaChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICB9XG5cbiAgZmlsdGVyUGFyZW50T3B0aW9ucyhzZWFyY2hWYWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxPcHRpb25zID0gdGhpcy5mcmFtZXdvcmtEYXRhPy5jYXRlZ29yaWVzPy5maW5kKCh2OmFueSkgPT4gXG4gICAgICB2LmNvZGUgPT09IHRoaXMuZGF0YT8ucHJldmlvdXNbdGhpcy5kYXRhLnByZXZpb3VzLmxlbmd0aCAtIDJdPy5jYXRlZ29yeVxuICAgICk/LnRlcm1zIHx8IFtdO1xuICAgIFxuICAgIGlmICghc2VhcmNoVmFsdWUpIHtcbiAgICAgIC8vIFJlc2V0IHRvIGFsbCBvcmlnaW5hbCBvcHRpb25zIHdoZW4gc2VhcmNoIGlzIGVtcHR5XG4gICAgICB0aGlzLnBhcmVudEZpbHRlcmVkT3B0aW9ucyA9IFsuLi5vcmlnaW5hbE9wdGlvbnNdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5wYXJlbnRGaWx0ZXJlZE9wdGlvbnMgPSBvcmlnaW5hbE9wdGlvbnMuZmlsdGVyKChvcHRpb246YW55KSA9PiBcbiAgICAgIG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZVNlbGVjdEFsbChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC5zZXRWYWx1ZShbXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFsbFZhbHVlczphbnkgPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi5pZGVudGlmaWVyKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC5zZXRWYWx1ZShhbGxWYWx1ZXMpO1xuICAgIH1cbiAgfVxuXG4gIGlzQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWU/Lmxlbmd0aCB8fCAwO1xuICAgIGNvbnN0IG51bUZpbHRlcmVkID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgIHJldHVybiBudW1TZWxlY3RlZCA+IDAgJiYgbnVtU2VsZWN0ZWQgPT09IG51bUZpbHRlcmVkO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWRzOiBhbnkgPSB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWUgfHwgW107XG4gICAgcmV0dXJuIHRoaXMub3JnT3B0aW9ucy5maWx0ZXIoKG9wdGlvbjogYW55KSA9PiBzZWxlY3RlZElkcy5pbmNsdWRlcyhvcHRpb24uaWRlbnRpZmllcikpO1xuICB9XG5cbiAgZ2V0UGFyZW50U2VsZWN0ZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkSWQgPSB0aGlzLnBhcmVudFNlbGVjdGVkT3JnQ29udHJvbC52YWx1ZTtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRGaWx0ZXJlZE9wdGlvbnMuZmluZCgob3B0aW9uOiBhbnkpID0+IG9wdGlvbi5jb2RlID09PSBzZWxlY3RlZElkKTtcbiAgfVxuXG4gIHJlbW92ZVNlbGVjdGVkKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sLnZhbHVlIHx8IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC5zZXRWYWx1ZShcbiAgICAgIGN1cnJlbnRTZWxlY3Rpb24uZmlsdGVyKCh2YWx1ZTogYW55KSA9PiB2YWx1ZSAhPT0gaWQpXG4gICAgKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgfVxuXG4gIG9uU2F2ZSgpIHtcbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS50eXBlID09PSAndXBkYXRlJyAmJiB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2w/LnZhbHVlPy5maW5kKCh2OiBhbnkpID0+IHYgPT09IHRoaXMucGFyZW50U2VsZWN0ZWRPcmdDb250cm9sLnZhbHVlKSkge1xuICAgICAgdGhpcy5zbmFja2Jhci5vcGVuKCdZb3UgY2Fubm90IHNlbGVjdCB0aGUgcGFyZW50IG9yZ2FuaXphdGlvbiBhcyBhIGNoaWxkIG9yZ2FuaXphdGlvbicpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEudHlwZSA9PT0gJ3VwZGF0ZScgJiYgdGhpcy5zZWxlY3RlZE9yZ3NDb250cm9sPy52YWx1ZT8ubGVuZ3RoID09PSAwICYmICF0aGlzLnBhcmVudFNlbGVjdGVkT3JnQ29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5zbmFja2Jhci5vcGVuKCdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcmdhbml6YXRpb24gb3IgcGFyZW50IG9yZ2FuaXphdGlvbicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS50eXBlID09PSAnYWRkJyAmJiB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2w/LnZhbHVlPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuc25hY2tiYXIub3BlbignUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgb3JnYW5pemF0aW9uJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkT3JncyA9IHRoaXMuZ2V0U2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgY29uc3QgcGFyZW50U2VsZWN0ZWRPcmcgPSB0aGlzLmdldFBhcmVudFNlbGVjdGVkT3B0aW9ucygpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIHNlbGVjdGVkT3JnOiBzZWxlY3RlZE9yZ3MsXG4gICAgICBwYXBhcmVudFNlbGVjdGVkT3JnOiBwYXJlbnRTZWxlY3RlZE9yZyxcbiAgICAgIGN1cnJlbnRUZXJtOiB0aGlzLmRhdGE/LnByZXZpb3VzW3RoaXMuZGF0YS5wcmV2aW91cy5sZW5ndGggLSAxXSxcbiAgICAgIHR5cGU6IHRoaXMuZGF0YS50eXBlLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0U2VsZWN0ZWRTdGF0ZU9yZygpIHtcbiAgICBjb25zdCBvcmdMaXN0RGF0YSA9IHRoaXMuZnJhbWV3b3JrU2VydmljZS5hZGRpdGlvbmFsRGF0YSB8fCBbXVxuICAgIGlmIChvcmdMaXN0RGF0YSAmJiBvcmdMaXN0RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGZyYW13b3JrRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZnJhbWV3b3JrU2VydmljZS5jb21wbGV0ZVJlc3BvbnNlKVxuICAgICAgICBsZXQgb3JnSWRzQWRkZWQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGlmIChmcmFtd29ya0RhdGEgJiYgZnJhbXdvcmtEYXRhLmNhdGVnb3JpZXMgJiYgZnJhbXdvcmtEYXRhLmNhdGVnb3JpZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGZyYW13b3JrRGF0YS5jYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChjYXRlZ29yeS50ZXJtcyAmJiBjYXRlZ29yeS50ZXJtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNhdGVnb3J5LnRlcm1zLmZvckVhY2goKHRlcm06IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzICYmIHRlcm0uYWRkaXRpb25hbFByb3BlcnRpZXMub3JnSWQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICghb3JnSWRzQWRkZWQuaW5jbHVkZXModGVybS5hZGRpdGlvbmFsUHJvcGVydGllcy5vcmdJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb3JnSWRzQWRkZWQucHVzaCh0ZXJtLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm9yZ0lkKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkT3JnTGlzdCA9IG9yZ0xpc3REYXRhLmZpbHRlcigob3JnOiBhbnkpID0+IFxuICAgICAgICAgICFvcmdJZHNBZGRlZC5pbmNsdWRlcyhvcmcuaWRlbnRpZmllcilcbiAgICAgICAgKVxuICAgICAgICB0aGlzLm9yZ09wdGlvbnMgPSBmaWx0ZXJlZE9yZ0xpc3QgfHwgW107XG4gICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gWy4uLnRoaXMub3JnT3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBoYW5kbGVTZWFyY2hLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICAvLyBGb3Igc3BhY2UsIHdlIG9ubHkgd2FudCB0byBwcmV2ZW50IGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBpbiB0aGUgc2VhcmNoIGlucHV0XG4gICAgLy8gYnV0IGFsbG93IHRoZSBldmVudCB0byBwcm9wYWdhdGUgZm9yIHNlbGVjdGlvbiBmdW5jdGlvbmFsaXR5XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnICYmIGV2ZW50LnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpIHtcbiAgICAgIC8vIERvbid0IHByZXZlbnQgcHJvcGFnYXRpb24sIGp1c3QgcHJldmVudCBkZWZhdWx0IHRvIGFsbG93IHR5cGluZyBzcGFjZXMgaW4gc2VhcmNoXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgXG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2hlY2tBbmRDbG9zZShzZWxlY3RFbGVtZW50OiBNYXRTZWxlY3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZSB8fCB0aGlzLnNlbGVjdGVkT3Jnc0NvbnRyb2wudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNuYWNrYmFyLm9wZW4oJ1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIG9yZ2FuaXphdGlvbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdEVsZW1lbnQuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBnZXROYW1lT2ZPcmcoaWQ6YW55KSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWRPcHRpb25zLmZpbmQoKG9wdGlvbjogYW55KSA9PiBvcHRpb24uaWRlbnRpZmllciA9PT0gaWQpPy5vcmdOYW1lIHx8ICcnO1xuICB9XG5cbiAgcmVtb3ZlT3JnKGl0ZW1Ub1JlbW92ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZSB8fCBbXTtcbiAgICBjb25zdCB1cGRhdGVkVmFsdWVzID0gY3VycmVudFZhbHVlcy5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBpdGVtVG9SZW1vdmUpO1xuICAgIHRoaXMuc2VsZWN0ZWRPcmdzQ29udHJvbC5zZXRWYWx1ZSh1cGRhdGVkVmFsdWVzKTtcbiAgfVxuXG4gIGdldFBhcmVudFRlcm1zKGl0ZW06YW55KSB7XG4gICAgdGhpcy5wYXJlbnRGaWx0ZXJlZE9wdGlvbnMgPSB0aGlzLmZyYW1ld29ya0RhdGEuY2F0ZWdvcmllcy5maW5kKCh2OmFueSkgPT4gdi5jb2RlID09PSBpdGVtLmNhdGVnb3J5KS50ZXJtc1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwib3JnLWhpZXJhcmNoeS1tb2RhbFwiPlxuICA8IS0tIE1vZGFsIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItdGl0bGVcIj5cbiAgICAgIDxoMiBjbGFzcz1cIm0tMFwiPlVwZGF0ZSBPcmdhbmlzYXRpb24gSGllcmFyY2h5PC9oMj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cImNsb3NlLWJ1dHRvblwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTW9kYWwgQ29udGVudCAtLT5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2wgb3JnLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm9yZ1R5cGVOYW1lXCI+e3tkYXRhPy5zZWxlY3RlZE9yZ0RhdGE/LnNiT3JnVHlwZX19PC9sYWJlbD5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJvcmdUeXBlU2VsZWN0ZWRcIj57e2RhdGE/LnNlbGVjdGVkT3JnRGF0YT8ub3JnTmFtZT8udG9Mb3dlckNhc2UoKX19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGVkLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy5wcmV2aW91cz8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIG9yZy1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhPy5wcmV2aW91cztsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsnbWFyZ2luLWxlZnQnOiAzMCAqIChpKzEpICsgJ3B4J31cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhPy50eXBlID09PSAndXBkYXRlJyAmJiBpID09PSAoZGF0YT8ucHJldmlvdXM/Lmxlbmd0aCAtIDIpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm9yZ1R5cGVOYW1lXCI+e3tpdGVtPy5jYXRlZ29yeT8udG9Mb3dlckNhc2UoKX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3ViLWxhYmVsXCI+T25seSB0aGUgaW1wb3J0ZWQgb3JnYW5pc2F0aW9uIHdpbGwgYmUgbGlzdGVkLjwvbGFiZWw+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtc2VhcmNoLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGwgY3VzdG9tLWhlaWdodC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwicGFyZW50U2VsZWN0ZWRPcmdDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIiAjcGFyZW50U2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFuZWxDbGFzc109XCInbWF0LXNlbGVjdC1wYW5lbC1iZWxvdydcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVPcHRpb25DZW50ZXJpbmcgXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleWRvd24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaCBjb250YWluZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIGZsZXggZ2FwLTUgZmxleC1taWRkbGVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xdPVwicGFyZW50U2VhcmNoQ29udHJvbFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZVNlYXJjaEtleWRvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiICNzZWFyY2hJbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwibm8tY2hlY2tib3hcIiAqbmdGb3I9XCJsZXQgb3JnYW5pemF0aW9uIG9mIHBhcmVudEZpbHRlcmVkT3B0aW9uc1wiIFt2YWx1ZV09XCJvcmdhbml6YXRpb24uY29kZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcmdhbml6YXRpb24ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJwYXJlbnRGaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyBkYXRhIGZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhc2hlZC1saW5lXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKGRhdGE/LnR5cGUgPT09ICd1cGRhdGUnICYmIGkgPT09IChkYXRhPy5wcmV2aW91cz8ubGVuZ3RoIC0gMikpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cIm9yZ1R5cGVOYW1lXCI+e3tpdGVtPy5jYXRlZ29yeT8udG9Mb3dlckNhc2UoKX19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwib3JnVHlwZVNlbGVjdGVkXCI+e3tpdGVtPy5uYW1lPy50b0xvd2VyQ2FzZSgpfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGFzaGVkLWxpbmVcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRhdGE/LmN1cnJlbnREYXRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCBvcmctY29udGFpbmVyXCIgXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21hcmdpbi1sZWZ0JzogMzAgKiAoZGF0YT8ucHJldmlvdXM/Lmxlbmd0aCArIDEpICsgJ3B4J31cIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJvcmdUeXBlTmFtZVwiPnt7ZGF0YT8uY3VycmVudERhdGE/LmNvZGU/LnRvTG93ZXJDYXNlKCl9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3ViLWxhYmVsXCI+T3JnYW5pc2F0aW9ucyB3aGljaCBhcmUgYWxyZWFkeSBpbiB0aGUgaGllcmFyY2h5IHdpbGwgbm90IGxpc3RlZCB0byBhZGQgb3IgaW4gc2VhcmNoYWJsZSBkcm9wZG93bjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPCEtLSBTZWFyY2hhYmxlIG11bHRpLXNlbGVjdCAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LXNlYXJjaC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGwgY3VzdG9tLWhlaWdodC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzZWxlY3RlZE9yZ3NDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIiAjc2luZ2xlU2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwYW5lbENsYXNzXT1cIidtYXQtc2VsZWN0LXBhbmVsLWJlbG93J1wiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT3B0aW9uQ2VudGVyaW5nIFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZU9wdGlvbkNlbnRlcmluZ109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiaGFuZGxlS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWFyY2ggY29udGFpbmVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyIGZsZXggZ2FwLTUgZmxleC1taWRkbGVcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVTZWFyY2hLZXlkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlYXJjaC1pbnB1dFwiICNzZWFyY2hJbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwiYWRkLWJ0blwiIChjbGljayk9XCJjaGVja0FuZENsb3NlKHNpbmdsZVNlbGVjdCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFkZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hcmdpbi1yZW1vdmVcIj5hZGQ8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3JnYW5pemF0aW9uIG9mIGZpbHRlcmVkT3B0aW9uc1wiIFt2YWx1ZV09XCJvcmdhbml6YXRpb24uaWRlbnRpZmllclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29yZ2FuaXphdGlvbi5vcmdOYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJmaWx0ZXJlZE9wdGlvbnMubGVuZ3RoID09PSAwXCIgZGlzYWJsZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIGRhdGEgZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZE9yZ3NDb250cm9sPy52YWx1ZT8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1saXN0IGNsYXNzPVwib3JnLWNsaXBcIiBhcmlhLWxhYmVsPVwib3JnU2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAgY2xhc3M9XCJjbGlwLW9wdGlvbiBmbGV4IGZsZXgtbWlkZGxlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRPcmdzQ29udHJvbC52YWx1ZVwiIFtyZW1vdmFibGVdPVwidHJ1ZVwiIChyZW1vdmVkKT1cInJlbW92ZU9yZyhpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldE5hbWVPZk9yZyhpdGVtKX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRDaGlwUmVtb3ZlIGNsYXNzPVwibWFyZ2luLXJlbW92ZVwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXA+XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBNb2RhbCBGb290ZXIgLS0+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cImJ0bi1jb21tb24gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJvbkNsb3NlKClcIiB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICBDYW5jZWxcbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uIFxuICAgICAgbWF0LXN0cm9rZWQtYnV0dG9uIFxuICAgICAgY2xhc3M9XCJidG4tY29tbW9uIGJ0bi1wcmltYXJ5XCIgXG4gICAgICAoY2xpY2spPVwib25TYXZlKClcIiBcbiAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgIFNhdmVcbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
@@ -10,7 +10,7 @@ import * as i5 from "@angular/material/icon";
10
10
  import * as i6 from "@angular/material/tooltip";
11
11
  import * as i7 from "@angular/router";
12
12
  import * as i8 from "../../pipes/order-by.pipe";
13
- export class PendingApprovalComponent {
13
+ class PendingApprovalComponent {
14
14
  constructor(approvalService, frameworkService) {
15
15
  this.approvalService = approvalService;
16
16
  this.frameworkService = frameworkService;
@@ -57,8 +57,9 @@ export class PendingApprovalComponent {
57
57
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PendingApprovalComponent, deps: [{ token: i1.ApprovalService }, { token: i2.FrameworkService }], target: i0.ɵɵFactoryTarget.Component }); }
58
58
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PendingApprovalComponent, selector: "lib-pending-approval", ngImport: i0, template: "<div class=\"pending-approval\">\n <header class=\"mat-header\">\n <h2>{{app_strings.pendingApproval}} ({{approvalList.length}})</h2>\n </header>\n\n <mat-card *ngFor=\"let p of approvalList | orderBy\">\n\n <mat-card-content>\n <span class=\"date\">\n <h4>{{app_strings.date}}</h4>\n <span>{{p.lastUpdatedOn | date}}</span>\n </span>\n <div *ngFor=\"let t of createApprovalList(p.updateFieldValues)\" class=\"col\">\n <h4>{{t.name}}</h4>\n <div matTooltip=\"{{getTerms(t.children)}}\" matTooltipPosition=\"above\" matTooltipClass=\"custom-tooltip\">\n {{t.children[0].name}}\n <ng-container *ngIf=\"t.children.length>1\">\n & {{t.children.length-1}} {{app_strings.more}}\n </ng-container>\n </div>\n </div>\n <a class=\"approve-view-link\" routerLink=\"/approval/{{p.wfId}}\"><mat-icon>{{app_strings.rightArrow}}</mat-icon></a>\n </mat-card-content>\n </mat-card>\n <!-- <mat-tab-group mat-align-tabs=\"center\" animationDuration=\"0ms\">\n <mat-tab label=\"Sent for approval\" active> -->\n <!-- <mat-card>\n <mat-card-content>\n <div *ngFor=\"let t of categories\" class=\"col\">\n <h4>{{t}}</h4>\n </div>\n </mat-card-content>\n </mat-card> -->\n <!-- <mat-card *ngFor=\"let p of approvalList\">\n <mat-card-content>\n <div *ngFor=\"let t of createApprovalList(p.updateFieldValues)\" class=\"col\">\n <h4>{{t.name}}</h4>\n <div matTooltip=\"{{getTerms(t.children)}}\" matTooltipPosition=\"above\" matTooltipClass=\"custom-tooltip\">\n {{t.children[0].name}}\n <ng-container *ngIf=\"t.children.length>1\">\n & {{t.children.length-1}} more...\n </ng-container>\n </div>\n \n </div> \n <a class=\"approve-view-link\" routerLink=\"/approval/{{p.wfId}}\"><mat-icon>keyboard_arrow_right</mat-icon></a>\n </mat-card-content>\n </mat-card>\n </mat-tab> -->\n <!-- <mat-tab label=\"Approved\"> Approved </mat-tab>\n <mat-tab label=\"Rejected\"> Rejected </mat-tab> -->\n <!-- </mat-tab-group> -->\n\n</div>", styles: [".pending-approval{padding:0 15px}.pending-approval h2{font-weight:400}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header{background-color:#fff}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label{padding:0 10px}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label .mat-tab-label-content{color:#000}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label-active{background:#fff}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label-active .mat-tab-label-content{color:#000}.pending-approval .mat-card{background:#f3f3f3;margin-top:25px;padding:5px 0;box-shadow:none}.pending-approval .mat-card-content{display:flex;flex-direction:row;justify-content:left;align-items:center;padding-left:4%;position:relative}.pending-approval .mat-card-content h4{text-transform:capitalize;padding:0;margin:10px 0}.pending-approval .mat-card-content .approve-view-link{position:absolute;right:4%}.pending-approval .col{display:flex;flex-direction:column;padding-right:100px}.pending-approval .col div{cursor:pointer;font-size:20px}::ng-deep .custom-tooltip{font-size:16px;background:#fff!important;color:#000!important;padding:10px 0}::ng-deep .mat-icon{font-size:40px;color:#000000de;cursor:pointer}.date{padding:0 20px;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i8.OrderByPipe, name: "orderBy" }] }); }
59
59
  }
60
+ export { PendingApprovalComponent };
60
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PendingApprovalComponent, decorators: [{
61
62
  type: Component,
62
63
  args: [{ selector: 'lib-pending-approval', template: "<div class=\"pending-approval\">\n <header class=\"mat-header\">\n <h2>{{app_strings.pendingApproval}} ({{approvalList.length}})</h2>\n </header>\n\n <mat-card *ngFor=\"let p of approvalList | orderBy\">\n\n <mat-card-content>\n <span class=\"date\">\n <h4>{{app_strings.date}}</h4>\n <span>{{p.lastUpdatedOn | date}}</span>\n </span>\n <div *ngFor=\"let t of createApprovalList(p.updateFieldValues)\" class=\"col\">\n <h4>{{t.name}}</h4>\n <div matTooltip=\"{{getTerms(t.children)}}\" matTooltipPosition=\"above\" matTooltipClass=\"custom-tooltip\">\n {{t.children[0].name}}\n <ng-container *ngIf=\"t.children.length>1\">\n & {{t.children.length-1}} {{app_strings.more}}\n </ng-container>\n </div>\n </div>\n <a class=\"approve-view-link\" routerLink=\"/approval/{{p.wfId}}\"><mat-icon>{{app_strings.rightArrow}}</mat-icon></a>\n </mat-card-content>\n </mat-card>\n <!-- <mat-tab-group mat-align-tabs=\"center\" animationDuration=\"0ms\">\n <mat-tab label=\"Sent for approval\" active> -->\n <!-- <mat-card>\n <mat-card-content>\n <div *ngFor=\"let t of categories\" class=\"col\">\n <h4>{{t}}</h4>\n </div>\n </mat-card-content>\n </mat-card> -->\n <!-- <mat-card *ngFor=\"let p of approvalList\">\n <mat-card-content>\n <div *ngFor=\"let t of createApprovalList(p.updateFieldValues)\" class=\"col\">\n <h4>{{t.name}}</h4>\n <div matTooltip=\"{{getTerms(t.children)}}\" matTooltipPosition=\"above\" matTooltipClass=\"custom-tooltip\">\n {{t.children[0].name}}\n <ng-container *ngIf=\"t.children.length>1\">\n & {{t.children.length-1}} more...\n </ng-container>\n </div>\n \n </div> \n <a class=\"approve-view-link\" routerLink=\"/approval/{{p.wfId}}\"><mat-icon>keyboard_arrow_right</mat-icon></a>\n </mat-card-content>\n </mat-card>\n </mat-tab> -->\n <!-- <mat-tab label=\"Approved\"> Approved </mat-tab>\n <mat-tab label=\"Rejected\"> Rejected </mat-tab> -->\n <!-- </mat-tab-group> -->\n\n</div>", styles: [".pending-approval{padding:0 15px}.pending-approval h2{font-weight:400}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header{background-color:#fff}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label{padding:0 10px}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label .mat-tab-label-content{color:#000}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label-active{background:#fff}.pending-approval .mat-tab-group ::ng-deep .mat-tab-header .mat-tab-label-active .mat-tab-label-content{color:#000}.pending-approval .mat-card{background:#f3f3f3;margin-top:25px;padding:5px 0;box-shadow:none}.pending-approval .mat-card-content{display:flex;flex-direction:row;justify-content:left;align-items:center;padding-left:4%;position:relative}.pending-approval .mat-card-content h4{text-transform:capitalize;padding:0;margin:10px 0}.pending-approval .mat-card-content .approve-view-link{position:absolute;right:4%}.pending-approval .col{display:flex;flex-direction:column;padding-right:100px}.pending-approval .col div{cursor:pointer;font-size:20px}::ng-deep .custom-tooltip{font-size:16px;background:#fff!important;color:#000!important;padding:10px 0}::ng-deep .mat-icon{font-size:40px;color:#000000de;cursor:pointer}.date{padding:0 20px;font-weight:600}\n"] }]
63
64
  }], ctorParameters: function () { return [{ type: i1.ApprovalService }, { type: i2.FrameworkService }]; } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sS0FBSyxHQUFHLE1BQU0sOEJBQThCLENBQUM7QUFHcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBTzlDLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFBb0IsZUFBZ0MsRUFBVSxnQkFBa0M7UUFBNUUsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUpoRyxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVEsTUFBTSxDQUFDO0lBQzBFLENBQUM7SUFFckcsUUFBUTtRQUNKLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDdkQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0UsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sT0FBTyxHQUFtQixFQUFFLGlCQUFpQixFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ2hILElBQUksQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDdEMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBTztRQUN0QixPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxpQkFBc0I7UUFDdkMsSUFBSSxZQUFZLEdBQU8sRUFBRSxDQUFBO1FBQ3pCLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQTtRQUNuQixJQUFJLFlBQVksR0FBUSxFQUFFLENBQUE7UUFDMUIsWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM3QyxVQUFVLEdBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3hELFVBQVUsR0FBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDL0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksSUFBSSxHQUFRLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsQ0FBQTtZQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3ZFLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDdkIsQ0FBQyxDQUFDLENBQUE7UUFDRixPQUFPLFlBQVksQ0FBQTtJQUN2QixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDZixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ1osT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDOytHQTdDVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw0RENackMsaW5GQXFETTs7NEZEekNPLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwcm92YWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwcm92YWwuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBBUEkgZnJvbSAnLi4vLi4vY29uc3RhbnRzL2FwcC1jb25zdGFudCc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZnJhbWV3b3JrLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgSUFwcCBmcm9tICcuLi8uLi9tb2RlbHMvYXBwcm92YWwubW9kZWwnO1xuaW1wb3J0IHsgbGFiZWxzIH0gZnJvbSAnLi4vLi4vbGFiZWxzL3N0cmluZ3MnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItcGVuZGluZy1hcHByb3ZhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wZW5kaW5nLWFwcHJvdmFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBlbmRpbmdBcHByb3ZhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHBlbmRpbmdMaXN0ID0gW107XG4gIGFwcHJvdmFsTGlzdCA9IFtdO1xuICBjYXRlZ29yaWVzID0gW107XG4gIGFwcF9zdHJpbmdzOiBhbnkgPSBsYWJlbHM7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwcm92YWxTZXJ2aWNlOiBBcHByb3ZhbFNlcnZpY2UsIHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgICB0aGlzLmdldEFwcHJvdmFsTGlzdCgpXG4gICAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2UuZ2V0RnJhbWV3b3JrSW5mbygpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLmNhdGVnb3JpZXMgPSByZXMucmVzdWx0LmZyYW1ld29yay5jYXRlZ29yaWVzLm1hcCgoZDogYW55KSA9PiBkLmNvZGUpXG4gICAgICB9KVxuICB9XG5cbiAgZ2V0QXBwcm92YWxMaXN0KCkge1xuICAgIGNvbnN0IHBheWxvYWQ6IElBcHAuSUFwcHJvdmFsID0geyBhcHBsaWNhdGlvblN0YXR1czpBUEkuQVBQUk9WQUwuTEVWRUwxLCBzZXJ2aWNlTmFtZTpBUEkuQVBQUk9WQUwuU0VSVklDRV9OQU1FIH1cbiAgICB0aGlzLmFwcHJvdmFsU2VydmljZS5nZXRBcHByb3ZhbExpc3QocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6YW55KSA9PiB7XG4gICAgICAgdGhpcy5hcHByb3ZhbExpc3QgPSByZXMucmVzdWx0LmRhdGFcbiAgICB9KVxuICB9XG5cbiAgcmVtb3ZlRHVwbGljYXRlcyhhcnI6YW55KSB7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KGFycildO1xuICB9XG5cbiAgY3JlYXRlQXBwcm92YWxMaXN0KHVwZGF0ZUZpZWxkVmFsdWVzIDphbnkpe1xuICAgIGxldCB1cGRhdGVGaWxlZHM6YW55ID0gW11cbiAgICBsZXQgY2F0ZWdvcmllcyA9IFtdXG4gICAgbGV0IGFwcHJvdmFsTGlzdDogYW55ID0gW11cbiAgICB1cGRhdGVGaWxlZHMgPSBKU09OLnBhcnNlKHVwZGF0ZUZpZWxkVmFsdWVzKTtcbiAgICBjYXRlZ29yaWVzID0gIHVwZGF0ZUZpbGVkcy5tYXAoKGZkOiBhbnkpID0+IGZkLmNhdGVnb3J5KVxuICAgIGNhdGVnb3JpZXMgPSAgdGhpcy5yZW1vdmVEdXBsaWNhdGVzKGNhdGVnb3JpZXMpXG4gICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBsZXQgdGVtcDogYW55ID0ge25hbWU6JycsIHRlcm1zOltdLCBjaGlsZHJlbjogW119XG4gICAgICB0ZW1wLm5hbWUgPSBjLFxuICAgICAgdGVtcC5jaGlsZHJlbiA9IHVwZGF0ZUZpbGVkcy5maWx0ZXIoKHRlcm06IGFueSkgPT4gdGVybS5jYXRlZ29yeSA9PT0gYylcbiAgICAgIGFwcHJvdmFsTGlzdC5wdXNoKHRlbXApXG4gICAgICB9KVxuICAgICAgcmV0dXJuIGFwcHJvdmFsTGlzdFxuICB9XG5cbiAgZ2V0VGVybXModGVybXM6IGFueSl7XG4gICAgICBjb25zdCB0ZW1wID0gdGVybXMubWFwKCh0OmFueSkgPT4gdC5uYW1lKTtcbiAgICAgIHRlbXAuc2hpZnQoKVxuICAgICAgcmV0dXJuIHRlbXBcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicGVuZGluZy1hcHByb3ZhbFwiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJtYXQtaGVhZGVyXCI+XG4gICAgICAgIDxoMj57e2FwcF9zdHJpbmdzLnBlbmRpbmdBcHByb3ZhbH19ICh7e2FwcHJvdmFsTGlzdC5sZW5ndGh9fSk8L2gyPlxuICAgIDwvaGVhZGVyPlxuXG4gICAgPG1hdC1jYXJkICpuZ0Zvcj1cImxldCBwIG9mIGFwcHJvdmFsTGlzdCB8IG9yZGVyQnlcIj5cblxuICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxoND57e2FwcF9zdHJpbmdzLmRhdGV9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3twLmxhc3RVcGRhdGVkT24gfCBkYXRlfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0IG9mIGNyZWF0ZUFwcHJvdmFsTGlzdChwLnVwZGF0ZUZpZWxkVmFsdWVzKVwiIGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgPGg0Pnt7dC5uYW1lfX08L2g0PlxuICAgICAgICAgICAgICAgIDxkaXYgbWF0VG9vbHRpcD1cInt7Z2V0VGVybXModC5jaGlsZHJlbil9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAge3t0LmNoaWxkcmVuWzBdLm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidC5jaGlsZHJlbi5sZW5ndGg+MVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgJiB7e3QuY2hpbGRyZW4ubGVuZ3RoLTF9fSB7e2FwcF9zdHJpbmdzLm1vcmV9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGEgY2xhc3M9XCJhcHByb3ZlLXZpZXctbGlua1wiIHJvdXRlckxpbms9XCIvYXBwcm92YWwve3twLndmSWR9fVwiPjxtYXQtaWNvbj57e2FwcF9zdHJpbmdzLnJpZ2h0QXJyb3d9fTwvbWF0LWljb24+PC9hPlxuICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cbiAgICA8IS0tIDxtYXQtdGFiLWdyb3VwIG1hdC1hbGlnbi10YWJzPVwiY2VudGVyXCIgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTZW50IGZvciBhcHByb3ZhbFwiIGFjdGl2ZT4gIC0tPlxuICAgIDwhLS0gPG1hdC1jYXJkPlxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHQgb2YgY2F0ZWdvcmllc1wiIGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3t0fX08L2g0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+IC0tPlxuICAgIDwhLS0gPG1hdC1jYXJkICpuZ0Zvcj1cImxldCBwIG9mIGFwcHJvdmFsTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHQgb2YgY3JlYXRlQXBwcm92YWxMaXN0KHAudXBkYXRlRmllbGRWYWx1ZXMpXCIgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7dC5uYW1lfX08L2g0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG1hdFRvb2x0aXA9XCJ7e2dldFRlcm1zKHQuY2hpbGRyZW4pfX1cIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10b29sdGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0LmNoaWxkcmVuWzBdLm5hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0LmNoaWxkcmVuLmxlbmd0aD4xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiB7e3QuY2hpbGRyZW4ubGVuZ3RoLTF9fSBtb3JlLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImFwcHJvdmUtdmlldy1saW5rXCIgcm91dGVyTGluaz1cIi9hcHByb3ZhbC97e3Aud2ZJZH19XCI+PG1hdC1pY29uPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj48L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQ+XG4gICAgICAgIDwvbWF0LXRhYj4gLS0+XG4gICAgPCEtLSA8bWF0LXRhYiBsYWJlbD1cIkFwcHJvdmVkXCI+IEFwcHJvdmVkIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJSZWplY3RlZFwiPiBSZWplY3RlZCA8L21hdC10YWI+IC0tPlxuICAgIDwhLS0gPC9tYXQtdGFiLWdyb3VwPiAtLT5cblxuPC9kaXY+Il19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRWxELE9BQU8sS0FBSyxHQUFHLE1BQU0sOEJBQThCLENBQUM7QUFHcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBRTlDLE1BS2Esd0JBQXdCO0lBS25DLFlBQW9CLGVBQWdDLEVBQVUsZ0JBQWtDO1FBQTVFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFKaEcsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixnQkFBVyxHQUFRLE1BQU0sQ0FBQztJQUMwRSxDQUFDO0lBRXJHLFFBQVE7UUFDSixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNFLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLE9BQU8sR0FBbUIsRUFBRSxpQkFBaUIsRUFBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNoSCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFPLEVBQUUsRUFBRTtZQUNqRSxJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFBO1FBQ3RDLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQU87UUFDdEIsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsaUJBQXNCO1FBQ3ZDLElBQUksWUFBWSxHQUFPLEVBQUUsQ0FBQTtRQUN6QixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDbkIsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFBO1FBQzFCLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0MsVUFBVSxHQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN4RCxVQUFVLEdBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQy9DLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixJQUFJLElBQUksR0FBUSxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsS0FBSyxFQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFDLENBQUE7WUFDakQsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUN2RSxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxZQUFZLENBQUE7SUFDdkIsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFVO1FBQ2YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNaLE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQzsrR0E3Q1Usd0JBQXdCO21HQUF4Qix3QkFBd0IsNERDWnJDLGluRkFxRE07O1NEekNPLHdCQUF3Qjs0RkFBeEIsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHByb3ZhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHByb3ZhbC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIEFQSSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBwLWNvbnN0YW50JztcbmltcG9ydCB7IEZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBJQXBwIGZyb20gJy4uLy4uL21vZGVscy9hcHByb3ZhbC5tb2RlbCc7XG5pbXBvcnQgeyBsYWJlbHMgfSBmcm9tICcuLi8uLi9sYWJlbHMvc3RyaW5ncyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wZW5kaW5nLWFwcHJvdmFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BlbmRpbmctYXBwcm92YWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wZW5kaW5nLWFwcHJvdmFsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ0FwcHJvdmFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcGVuZGluZ0xpc3QgPSBbXTtcbiAgYXBwcm92YWxMaXN0ID0gW107XG4gIGNhdGVnb3JpZXMgPSBbXTtcbiAgYXBwX3N0cmluZ3M6IGFueSA9IGxhYmVscztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHByb3ZhbFNlcnZpY2U6IEFwcHJvdmFsU2VydmljZSwgcHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuZ2V0QXBwcm92YWxMaXN0KClcbiAgICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5nZXRGcmFtZXdvcmtJbmZvKCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcy5yZXN1bHQuZnJhbWV3b3JrLmNhdGVnb3JpZXMubWFwKChkOiBhbnkpID0+IGQuY29kZSlcbiAgICAgIH0pXG4gIH1cblxuICBnZXRBcHByb3ZhbExpc3QoKSB7XG4gICAgY29uc3QgcGF5bG9hZDogSUFwcC5JQXBwcm92YWwgPSB7IGFwcGxpY2F0aW9uU3RhdHVzOkFQSS5BUFBST1ZBTC5MRVZFTDEsIHNlcnZpY2VOYW1lOkFQSS5BUFBST1ZBTC5TRVJWSUNFX05BTUUgfVxuICAgIHRoaXMuYXBwcm92YWxTZXJ2aWNlLmdldEFwcHJvdmFsTGlzdChwYXlsb2FkKS5zdWJzY3JpYmUoKHJlczphbnkpID0+IHtcbiAgICAgICB0aGlzLmFwcHJvdmFsTGlzdCA9IHJlcy5yZXN1bHQuZGF0YVxuICAgIH0pXG4gIH1cblxuICByZW1vdmVEdXBsaWNhdGVzKGFycjphbnkpIHtcbiAgICByZXR1cm4gWy4uLm5ldyBTZXQoYXJyKV07XG4gIH1cblxuICBjcmVhdGVBcHByb3ZhbExpc3QodXBkYXRlRmllbGRWYWx1ZXMgOmFueSl7XG4gICAgbGV0IHVwZGF0ZUZpbGVkczphbnkgPSBbXVxuICAgIGxldCBjYXRlZ29yaWVzID0gW11cbiAgICBsZXQgYXBwcm92YWxMaXN0OiBhbnkgPSBbXVxuICAgIHVwZGF0ZUZpbGVkcyA9IEpTT04ucGFyc2UodXBkYXRlRmllbGRWYWx1ZXMpO1xuICAgIGNhdGVnb3JpZXMgPSAgdXBkYXRlRmlsZWRzLm1hcCgoZmQ6IGFueSkgPT4gZmQuY2F0ZWdvcnkpXG4gICAgY2F0ZWdvcmllcyA9ICB0aGlzLnJlbW92ZUR1cGxpY2F0ZXMoY2F0ZWdvcmllcylcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGMpID0+IHtcbiAgICAgIGxldCB0ZW1wOiBhbnkgPSB7bmFtZTonJywgdGVybXM6W10sIGNoaWxkcmVuOiBbXX1cbiAgICAgIHRlbXAubmFtZSA9IGMsXG4gICAgICB0ZW1wLmNoaWxkcmVuID0gdXBkYXRlRmlsZWRzLmZpbHRlcigodGVybTogYW55KSA9PiB0ZXJtLmNhdGVnb3J5ID09PSBjKVxuICAgICAgYXBwcm92YWxMaXN0LnB1c2godGVtcClcbiAgICAgIH0pXG4gICAgICByZXR1cm4gYXBwcm92YWxMaXN0XG4gIH1cblxuICBnZXRUZXJtcyh0ZXJtczogYW55KXtcbiAgICAgIGNvbnN0IHRlbXAgPSB0ZXJtcy5tYXAoKHQ6YW55KSA9PiB0Lm5hbWUpO1xuICAgICAgdGVtcC5zaGlmdCgpXG4gICAgICByZXR1cm4gdGVtcFxuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJwZW5kaW5nLWFwcHJvdmFsXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cIm1hdC1oZWFkZXJcIj5cbiAgICAgICAgPGgyPnt7YXBwX3N0cmluZ3MucGVuZGluZ0FwcHJvdmFsfX0gKHt7YXBwcm92YWxMaXN0Lmxlbmd0aH19KTwvaDI+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IHAgb2YgYXBwcm92YWxMaXN0IHwgb3JkZXJCeVwiPlxuXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlXCI+XG4gICAgICAgICAgICAgICAgPGg0Pnt7YXBwX3N0cmluZ3MuZGF0ZX19PC9oND5cbiAgICAgICAgICAgICAgICA8c3Bhbj57e3AubGFzdFVwZGF0ZWRPbiB8IGRhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHQgb2YgY3JlYXRlQXBwcm92YWxMaXN0KHAudXBkYXRlRmllbGRWYWx1ZXMpXCIgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICA8aDQ+e3t0Lm5hbWV9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPGRpdiBtYXRUb29sdGlwPVwie3tnZXRUZXJtcyh0LmNoaWxkcmVuKX19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdG9vbHRpcFwiPlxuICAgICAgICAgICAgICAgICAgICB7e3QuY2hpbGRyZW5bMF0ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0LmNoaWxkcmVuLmxlbmd0aD4xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAmIHt7dC5jaGlsZHJlbi5sZW5ndGgtMX19IHt7YXBwX3N0cmluZ3MubW9yZX19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YSBjbGFzcz1cImFwcHJvdmUtdmlldy1saW5rXCIgcm91dGVyTGluaz1cIi9hcHByb3ZhbC97e3Aud2ZJZH19XCI+PG1hdC1pY29uPnt7YXBwX3N0cmluZ3MucmlnaHRBcnJvd319PC9tYXQtaWNvbj48L2E+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICA8L21hdC1jYXJkPlxuICAgIDwhLS0gPG1hdC10YWItZ3JvdXAgbWF0LWFsaWduLXRhYnM9XCJjZW50ZXJcIiBhbmltYXRpb25EdXJhdGlvbj1cIjBtc1wiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlNlbnQgZm9yIGFwcHJvdmFsXCIgYWN0aXZlPiAgLS0+XG4gICAgPCEtLSA8bWF0LWNhcmQ+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdCBvZiBjYXRlZ29yaWVzXCIgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3R9fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD4gLS0+XG4gICAgPCEtLSA8bWF0LWNhcmQgKm5nRm9yPVwibGV0IHAgb2YgYXBwcm92YWxMaXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdCBvZiBjcmVhdGVBcHByb3ZhbExpc3QocC51cGRhdGVGaWVsZFZhbHVlcylcIiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3t0Lm5hbWV9fTwvaDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbWF0VG9vbHRpcD1cInt7Z2V0VGVybXModC5jaGlsZHJlbil9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3QuY2hpbGRyZW5bMF0ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInQuY2hpbGRyZW4ubGVuZ3RoPjFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIHt7dC5jaGlsZHJlbi5sZW5ndGgtMX19IG1vcmUuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiYXBwcm92ZS12aWV3LWxpbmtcIiByb3V0ZXJMaW5rPVwiL2FwcHJvdmFsL3t7cC53ZklkfX1cIj48bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgICAgPC9tYXQtdGFiPiAtLT5cbiAgICA8IS0tIDxtYXQtdGFiIGxhYmVsPVwiQXBwcm92ZWRcIj4gQXBwcm92ZWQgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlJlamVjdGVkXCI+IFJlamVjdGVkIDwvbWF0LXRhYj4gLS0+XG4gICAgPCEtLSA8L21hdC10YWItZ3JvdXA+IC0tPlxuXG48L2Rpdj4iXX0=