@pega/angular-sdk-components 0.24.4 → 0.24.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +3 -3
  2. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +5 -2
  3. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +5 -6
  4. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +11 -3
  5. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +6 -10
  6. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +18 -0
  7. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +71 -0
  8. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +20 -19
  9. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +37 -8
  10. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +8 -27
  11. package/esm2022/lib/_components/infra/view/view.component.mjs +2 -2
  12. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +2 -2
  13. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +2 -4
  14. package/esm2022/lib/_components/widget/todo/todo.component.mjs +4 -4
  15. package/fesm2022/pega-angular-sdk-components.mjs +208 -106
  16. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  17. package/lib/_components/field/date-time/date-time.component.d.ts +1 -0
  18. package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
  19. package/lib/_components/infra/Containers/base-components/flow-container-base.component.d.ts +8 -0
  20. package/lib/_components/infra/Containers/base-components/helper.d.ts +1 -0
  21. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +5 -6
  22. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +2 -1
  23. package/lib/_components/infra/assignment/assignment.component.d.ts +0 -2
  24. package/package.json +1 -1
@@ -155,7 +155,7 @@ export class TodoComponent {
155
155
  let { classname = '' } = assignment;
156
156
  const sTarget = this.pConn$.getContainerName();
157
157
  const sTargetContainerName = sTarget;
158
- const options = { containerName: sTargetContainerName };
158
+ const options = { containerName: sTargetContainerName, channelName: '' };
159
159
  if (classname === null || classname === '') {
160
160
  classname = this.pConn$.getCaseInfo().getClassName();
161
161
  }
@@ -185,11 +185,11 @@ export class TodoComponent {
185
185
  });
186
186
  }
187
187
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TodoComponent, deps: [{ token: i1.ProgressSpinnerService }, { token: i2.ErrorMessagesService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TodoComponent, isStandalone: true, selector: "app-todo", inputs: { pConn$: "pConn$", caseInfoID$: "caseInfoID$", datasource$: "datasource$", headerText$: "headerText$", showTodoList$: "showTodoList$", target$: "target$", type$: "type$", context$: "context$", myWorkList$: "myWorkList$", isConfirm: "isConfirm" }, providers: [Utils], usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n &bull; <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n &bull; {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TodoComponent, isStandalone: true, selector: "app-todo", inputs: { pConn$: "pConn$", caseInfoID$: "caseInfoID$", datasource$: "datasource$", headerText$: "headerText$", showTodoList$: "showTodoList$", target$: "target$", type$: "type$", context$: "context$", myWorkList$: "myWorkList$", isConfirm: "isConfirm" }, providers: [Utils], usesOnChanges: true, ngImport: i0, template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\" *ngIf=\"!isConfirm || canPerform; else readOnlyText\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <ng-template #readOnlyText> {{ assignment.name }} {{ getID(assignment) }} </ng-template>\n <span *ngIf=\"assignment.status != undefined\">\n &bull; <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n &bull; {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
189
189
  }
190
190
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TodoComponent, decorators: [{
191
191
  type: Component,
192
- args: [{ selector: 'app-todo', providers: [Utils], standalone: true, imports: [CommonModule, MatButtonModule], template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n &bull; <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n &bull; {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"] }]
192
+ args: [{ selector: 'app-todo', providers: [Utils], standalone: true, imports: [CommonModule, MatButtonModule], template: "<div class=\"psdk-todo\">\n <div class=\"psdk-todo-header\">\n <div *ngIf=\"showTodoList$\" class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div id=\"worklist\" class=\"psdk-todo-text\">{{ headerText$ }}</div>\n <div *ngIf=\"showTodoList$\" class=\"psdk-assignment-count\">{{ assignmentCount$ }}</div>\n </div>\n <br /><br />\n <div *ngIf=\"showTodoList$\" class=\"psdk-display-divider\"></div>\n\n <div class=\"psdk-todo-assignments\">\n <div *ngFor=\"let assignment of arAssignments$\">\n <div class=\"psdk-todo-assignment\">\n <div class=\"psdk-avatar\">{{ this.currentUserInitials$ }}</div>\n <div class=\"psdk-todo-card\">\n <div class=\"psdk-todo-assignment-title\">{{ getAssignmentName(assignment) }}</div>\n <div class=\"psdk-todo-assignment-data\">\n <div class=\"psdk-todo-assignment-task\">\n {{ localizedVal('Task in', localeCategory) }}\n <button class=\"psdk-todo-id\" style=\"cursor: pointer\" (click)=\"clickGo(assignment)\" *ngIf=\"!isConfirm || canPerform; else readOnlyText\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <ng-template #readOnlyText> {{ assignment.name }} {{ getID(assignment) }} </ng-template>\n <span *ngIf=\"assignment.status != undefined\">\n &bull; <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n &bull; {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\" *ngIf=\"!isConfirm || canPerform\">\n <button mat-flat-button color=\"primary\" (click)=\"clickGo(assignment)\">{{ localizedVal('Go', localeCategory) }}</button>\n </div>\n </div>\n <div class=\"psdk-display-divider\"></div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"assignmentCount$ > 3\">\n <div *ngIf=\"bShowMore$; else showLess\" class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showMore()\">{{ showMoreLocalizedValue === 'show_more' ? 'Show more' : showMoreLocalizedValue }}</button>\n </div>\n <ng-template #showLess>\n <div class=\"psdk-todo-show-more\">\n <button mat-stroked-button (click)=\"_showLess()\">{{ showlessLocalizedValue === 'show_less' ? 'Show less' : showlessLocalizedValue }}</button>\n </div>\n </ng-template>\n</div>\n", styles: [".psdk-display-divider{border-bottom:.0625rem solid var(--app-neutral-light-color)}.psdk-todo{padding:1rem;background-color:var(--app-form-color);border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}.psdk-todo-header{display:inline-flex}.psdk-todo-text{padding:.5rem .625rem;font-size:1.1rem;font-weight:700}.psdk-assignment-count{background-color:var(--app-primary-light-color);margin:.5rem;border-radius:45%;padding:.15rem .4rem}.psdk-todo-id{color:var(--app-primary-color);padding:0;cursor:pointer;border:0;background-color:transparent;align-items:center}.psdk-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:flex;background:var(--app-primary-color);color:var(--app-form-color);font-weight:700;font-size:1.25rem}.psdk-todo-assignment{display:inline-flex;width:100%;padding:.625rem 0rem}.psdk-todo-assignment-data{display:inline-flex}.psdk-todo-assignment-status{background-color:var(--app-neutral-light-color);border-radius:.125rem;color:var(--app-assignment-status-color);font-size:.75rem;font-weight:700;line-height:1.25rem;height:1.25rem;padding:0 .5rem;text-transform:uppercase}.psdk-todo-assignment-task{color:var(--app-neutral-color)}.psdk-todo-assignment-action{display:inline-flex}.psdk-todo-card{width:100%;padding-left:.625rem}.psdk-todo-show-more{width:100%;text-align:center;margin-top:.625rem}\n"] }]
193
193
  }], ctorParameters: () => [{ type: i1.ProgressSpinnerService }, { type: i2.ErrorMessagesService }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
194
194
  type: Input
195
195
  }], caseInfoID$: [{
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
211
211
  }], isConfirm: [{
212
212
  type: Input
213
213
  }] } });
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFtQmhELE1BQU0sT0FBTyxhQUFhO0lBMkJ4QixZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLE1BQWMsRUFDZCxLQUFZO1FBSFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQU87UUExQmIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQU81Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJ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Q0FBQzsrR0EvT1UsYUFBYTttR0FBYixhQUFhLHVUQUpiLENBQUMsS0FBSyxDQUFDLCtDQ3JCcEIsb3lFQStDQSxzZ0REeEJZLFlBQVksK1BBQUUsZUFBZTs7NEZBRTVCLGFBQWE7a0JBUnpCLFNBQVM7K0JBQ0UsVUFBVSxhQUdULENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQzt1S0FHL0IsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBwdWJsaWNDb25zdGFudHMgfSBmcm9tICdAcGVnYS9wY29yZS1wY29ubmVjdC10eXBlZGVmcy9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NTcGlubmVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9wcm9ncmVzcy1zcGlubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvZXJyb3ItbWVzc2FnZXMuc2VydmljZSc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcblxuaW50ZXJmYWNlIFRvRG9Qcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgZGF0YXNvdXJjZT86IGFueTtcbiAgaGVhZGVyVGV4dD86IHN0cmluZztcbiAgbXlXb3JrTGlzdD86IGFueTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXRvZG8nLFxuICB0ZW1wbGF0ZVVybDogJy4vdG9kby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RvZG8uY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbVXRpbHNdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFRvZG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGNhc2VJbmZvSUQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGFzb3VyY2UkOiBhbnk7XG4gIEBJbnB1dCgpIGhlYWRlclRleHQkPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93VG9kb0xpc3QkID0gdHJ1ZTtcbiAgQElucHV0KCkgdGFyZ2V0JDogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlJCA9ICd3b3JrbGlzdCc7XG4gIEBJbnB1dCgpIGNvbnRleHQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG15V29ya0xpc3QkOiBhbnk7XG4gIEBJbnB1dCgpIGlzQ29uZmlybTtcblxuICBjb25maWdQcm9wcyQ6IFRvRG9Qcm9wcztcbiAgY3VycmVudFVzZXIkOiBzdHJpbmc7XG4gIGN1cnJlbnRVc2VySW5pdGlhbHMkID0gJy0tJztcbiAgYXNzaWdubWVudENvdW50JDogbnVtYmVyO1xuICBiU2hvd01vcmUkID0gdHJ1ZTtcbiAgYXJBc3NpZ25tZW50cyQ6IGFueVtdO1xuICBhc3NpZ25tZW50c1NvdXJjZSQ6IGFueTtcbiAgQ09OU1RTOiB0eXBlb2YgcHVibGljQ29uc3RhbnRzO1xuICBiTG9nZ2luZyA9IHRydWU7XG4gIGxvY2FsaXplZFZhbCA9IFBDb3JlLmdldExvY2FsZVV0aWxzKCkuZ2V0TG9jYWxlVmFsdWU7XG4gIGxvY2FsZUNhdGVnb3J5ID0gJ1RvZG8nO1xuICBzaG93bGVzc0xvY2FsaXplZFZhbHVlID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ3Nob3dfbGVzcycsICdDb3Ntb3NGaWVsZHMnKTtcbiAgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9IHRoaXMubG9jYWxpemVkVmFsKCdzaG93X21vcmUnLCAnQ29zbW9zRmllbGRzJyk7XG4gIGNhblBlcmZvcm06IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwc1NlcnZpY2U6IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuQ09OU1RTID0gUENvcmUuZ2V0Q29uc3RhbnRzKCk7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSxcbiAgICAgICd1cGRhdGVUb0RvJ1xuICAgICk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIENSRUFURV9TVEFHRV9TQVZFRCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVMaXN0KCk7XG4gICAgICB9LFxuICAgICAgQ1JFQVRFX1NUQUdFX1NBVkVEXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgQ1JFQVRFX1NUQUdFX0RFTEVURUQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdCgpO1xuICAgICAgfSxcbiAgICAgIENSRUFURV9TVEFHRV9ERUxFVEVEXG4gICAgKTtcblxuICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgY29uc3QgeyBDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9ERUxFVEVEIH06IGFueSA9IFBDb3JlLmdldEV2ZW50cygpLmdldENhc2VFdmVudCgpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5FVkVOVF9DQU5DRUwsICd1cGRhdGVUb0RvJyk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKENSRUFURV9TVEFHRV9TQVZFRCwgQ1JFQVRFX1NUQUdFX1NBVkVEKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoQ1JFQVRFX1NUQUdFX0RFTEVURUQsIENSRUFURV9TVEFHRV9ERUxFVEVEKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIGRvbid0IHVwZGF0ZSB1bnRpbCB3ZSd2YSBoYWQgYW4gaW5pdFxuICAgIGlmIChQQ29yZSkge1xuICAgICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlV29ya0xpc3Qoa2V5KSB7XG4gICAgUENvcmUuZ2V0RGF0YUFwaVV0aWxzKClcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAybmQgcGFyYW1ldGVyIFwicGF5bG9hZFwiIGFuZCAzcmQgcGFyYW1ldGVyIFwiY29udGV4dFwiIHNob3VsZCBiZSBvcHRpb25hbCBpbiBnZXREYXRhIG1ldGhvZFxuICAgICAgLmdldERhdGEoa2V5KVxuICAgICAgLnRoZW4ocmVzcG9uc2VEYXRhID0+IHtcbiAgICAgICAgY29uc3QgZGF0YU9iamVjdCA9IHt9O1xuICAgICAgICBkYXRhT2JqZWN0W2tleV0gPSB7XG4gICAgICAgICAgcHhSZXN1bHRzOiByZXNwb25zZURhdGEuZGF0YS5kYXRhXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wQ29ubiQudXBkYXRlU3RhdGUoZGF0YU9iamVjdCk7XG4gICAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycj8uc3RhY2spO1xuICAgICAgfSk7XG4gIH1cblxuICB1cGRhdGVMaXN0KCkge1xuICAgIHRoaXMudXBkYXRlV29ya0xpc3QoJ0RfcHlNeVdvcmtMaXN0Jyk7XG4gIH1cblxuICB1cGRhdGVUb0RvKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIFRvRG9Qcm9wcztcblxuICAgIGlmICh0aGlzLmhlYWRlclRleHQkID09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oZWFkZXJUZXh0JCA9IHRoaXMuY29uZmlnUHJvcHMkLmhlYWRlclRleHQ7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRhc291cmNlJCA9IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2UgPyB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlIDogdGhpcy5kYXRhc291cmNlJDtcbiAgICB0aGlzLm15V29ya0xpc3QkID0gdGhpcy5jb25maWdQcm9wcyQubXlXb3JrTGlzdCA/IHRoaXMuY29uZmlnUHJvcHMkLm15V29ya0xpc3QgOiB0aGlzLm15V29ya0xpc3QkO1xuXG4gICAgdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgPSB0aGlzLmRhdGFzb3VyY2UkPy5zb3VyY2UgfHwgdGhpcy5teVdvcmtMaXN0JD8uc291cmNlO1xuXG4gICAgaWYgKHRoaXMuc2hvd1RvZG9MaXN0JCkge1xuICAgICAgdGhpcy5hc3NpZ25tZW50Q291bnQkID0gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQgIT0gbnVsbCA/IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkLmxlbmd0aCA6IDA7XG4gICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZ2V0IGNhc2VJbmZvSWQgYXNzaWdubWVudC5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcbiAgICAgIGlmICh0aGlzLmNhc2VJbmZvSUQkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy5nZXRDYXNlSW5mb0Fzc2lnbm1lbnQodGhpcy5hc3NpZ25tZW50c1NvdXJjZSQsIHRoaXMuY2FzZUluZm9JRCQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY2FuUGVyZm9ybSA9IHRoaXMuYXJBc3NpZ25tZW50cyQ/LlswXT8uY2FuUGVyZm9ybSA9PT0gJ3RydWUnIHx8IHRoaXMuYXJBc3NpZ25tZW50cyQ/LlswXT8uY2FuUGVyZm9ybSA9PT0gdHJ1ZTtcblxuICAgIHRoaXMuY3VycmVudFVzZXIkID0gUENvcmUuZ2V0RW52aXJvbm1lbnRJbmZvKCkuZ2V0T3BlcmF0b3JOYW1lKCk7XG4gICAgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCA9IHRoaXMudXRpbHMuZ2V0SW5pdGlhbHModGhpcy5jdXJyZW50VXNlciQpO1xuICB9XG5cbiAgZ2V0SUQoYXNzaWdubWVudDogYW55KSB7XG4gICAgaWYgKGFzc2lnbm1lbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IHJlZktleSA9IGFzc2lnbm1lbnQudmFsdWU7XG4gICAgICByZXR1cm4gcmVmS2V5LnN1YnN0cmluZyhyZWZLZXkubGFzdEluZGV4T2YoJyAnKSArIDEpO1xuICAgIH1cbiAgICBjb25zdCByZWZLZXkgPSBhc3NpZ25tZW50LklEO1xuICAgIGNvbnN0IGFyS2V5cyA9IHJlZktleS5zcGxpdCgnIScpWzBdLnNwbGl0KCcgJyk7XG4gICAgcmV0dXJuIGFyS2V5c1syXTtcbiAgfVxuXG4gIHRvcFRocmVlQXNzaWdubWVudHMoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdKTogYW55W10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFzc2lnbm1lbnRzU291cmNlKSA/IGFzc2lnbm1lbnRzU291cmNlLnNsaWNlKDAsIDMpIDogW107XG4gIH1cblxuICBnZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5JRCA6IGFzc2lnbm1lbnQuaWQ7XG4gIH1cblxuICBnZXRQcmlvcml0eShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQgPT09IHRoaXMuQ09OU1RTLlRPRE8gPyBhc3NpZ25tZW50LnVyZ2VuY3kgOiBhc3NpZ25tZW50LnByaW9yaXR5O1xuICB9XG5cbiAgZ2V0QXNzaWdubWVudE5hbWUoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC5uYW1lIDogYXNzaWdubWVudC5zdGVwTmFtZTtcbiAgfVxuXG4gIGluaXRBc3NpZ25tZW50cygpOiBhbnlbXSB7XG4gICAgaWYgKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKSB7XG4gICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudCQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJC5sZW5ndGg7XG4gICAgICByZXR1cm4gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9XG4gICAgLy8gdHVybiBvZmYgdG9kb2xpc3RcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRDYXNlSW5mb0Fzc2lnbm1lbnQoYXNzaWdubWVudHNTb3VyY2U6IGFueVtdLCBjYXNlSW5mb0lEOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChjb25zdCBzb3VyY2Ugb2YgYXNzaWdubWVudHNTb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UuSUQuaW5kZXhPZihjYXNlSW5mb0lEKSA+PSAwKSB7XG4gICAgICAgIGNvbnN0IGxpc3RSb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNvdXJjZSkpO1xuICAgICAgICAvLyB1cmdlbmN5IGJlY29tZXMgcHJpb3JpdHlcbiAgICAgICAgbGlzdFJvdy5wcmlvcml0eSA9IGxpc3RSb3cudXJnZW5jeSB8fCB1bmRlZmluZWQ7XG4gICAgICAgIC8vIG1pbWljIHJlZ3VsYXIgbGlzdFxuICAgICAgICBsaXN0Um93LmlkID0gbGlzdFJvdy5JRCB8fCB1bmRlZmluZWQ7XG4gICAgICAgIHJlc3VsdC5wdXNoKGxpc3RSb3cpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgX3Nob3dNb3JlKCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJTaG93TW9yZSQgPSBmYWxzZTtcbiAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJDtcbiAgICB9KTtcbiAgfVxuXG4gIF9zaG93TGVzcygpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vcmUkID0gdHJ1ZTtcblxuICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMudG9wVGhyZWVBc3NpZ25tZW50cyh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCk7XG4gICAgfSk7XG4gIH1cblxuICBpc0NoaWxkQ2FzZShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIGFzc2lnbm1lbnQuaXNDaGlsZDtcbiAgfVxuXG4gIGNsaWNrR28oYXNzaWdubWVudCkge1xuICAgIGNvbnN0IGlkID0gdGhpcy5nZXRBc3NpZ25tZW50SWQoYXNzaWdubWVudCk7XG4gICAgbGV0IHsgY2xhc3NuYW1lID0gJycgfSA9IGFzc2lnbm1lbnQ7XG4gICAgY29uc3Qgc1RhcmdldCA9IHRoaXMucENvbm4kLmdldENvbnRhaW5lck5hbWUoKTtcbiAgICBjb25zdCBzVGFyZ2V0Q29udGFpbmVyTmFtZSA9IHNUYXJnZXQ7XG5cbiAgICBjb25zdCBvcHRpb25zOiBhbnkgPSB7IGNvbnRhaW5lck5hbWU6IHNUYXJnZXRDb250YWluZXJOYW1lIH07XG5cbiAgICBpZiAoY2xhc3NuYW1lID09PSBudWxsIHx8IGNsYXNzbmFtZSA9PT0gJycpIHtcbiAgICAgIGNsYXNzbmFtZSA9IHRoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0Q2xhc3NOYW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKHNUYXJnZXQgPT09ICd3b3JrYXJlYScpIHtcbiAgICAgIG9wdGlvbnMuaXNBY3Rpb25Gcm9tVG9Eb0xpc3QgPSB0cnVlO1xuICAgICAgb3B0aW9ucy50YXJnZXQgPSAnJztcbiAgICAgIG9wdGlvbnMuY29udGV4dCA9IG51bGw7XG4gICAgICBvcHRpb25zLmlzQ2hpbGQgPSB0aGlzLmlzQ2hpbGRDYXNlKGFzc2lnbm1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb25zLmlzQWN0aW9uRnJvbVRvRG9MaXN0ID0gZmFsc2U7XG4gICAgICBvcHRpb25zLnRhcmdldCA9IHNUYXJnZXQ7XG4gICAgfVxuXG4gICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UodHJ1ZSk7XG5cbiAgICB0aGlzLnBDb25uJFxuICAgICAgLmdldEFjdGlvbnNBcGkoKVxuICAgICAgLm9wZW5Bc3NpZ25tZW50KGlkLCBjbGFzc25hbWUsIG9wdGlvbnMpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMuYkxvZ2dpbmcpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgb3BlbkFzc2lnbm1lbnQgY29tcGxldGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIHRoaXMuZXJTZXJ2aWNlLnNlbmRNZXNzYWdlKCdzaG93JywgJ0ZhaWxlZCB0byBvcGVuJyk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInBzZGstdG9kb1wiPlxuICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWhlYWRlclwiPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICA8ZGl2IGlkPVwid29ya2xpc3RcIiBjbGFzcz1cInBzZGstdG9kby10ZXh0XCI+e3sgaGVhZGVyVGV4dCQgfX08L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1hc3NpZ25tZW50LWNvdW50XCI+e3sgYXNzaWdubWVudENvdW50JCB9fTwvZGl2PlxuICA8L2Rpdj5cbiAgPGJyIC8+PGJyIC8+XG4gIDxkaXYgKm5nSWY9XCJzaG93VG9kb0xpc3QkXCIgY2xhc3M9XCJwc2RrLWRpc3BsYXktZGl2aWRlclwiPjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudHNcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhc3NpZ25tZW50IG9mIGFyQXNzaWdubWVudHMkXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstYXZhdGFyXCI+e3sgdGhpcy5jdXJyZW50VXNlckluaXRpYWxzJCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGl0bGVcIj57eyBnZXRBc3NpZ25tZW50TmFtZShhc3NpZ25tZW50KSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudC1kYXRhXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtdGFza1wiPlxuICAgICAgICAgICAgICB7eyBsb2NhbGl6ZWRWYWwoJ1Rhc2sgaW4nLCBsb2NhbGVDYXRlZ29yeSkgfX1cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInBzZGstdG9kby1pZFwiIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj5cbiAgICAgICAgICAgICAgICB7eyBhc3NpZ25tZW50Lm5hbWUgfX0ge3sgZ2V0SUQoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgIT0gdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgJmJ1bGw7IDxzcGFuIGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtc3RhdHVzXCI+e3sgYXNzaWdubWVudD8uc3RhdHVzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICZidWxsOyB7eyBsb2NhbGl6ZWRWYWwoJ1VyZ2VuY3knLCBsb2NhbGVDYXRlZ29yeSkgfX0ge3sgZ2V0UHJpb3JpdHkoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LWFjdGlvblwiICpuZ0lmPVwiIWlzQ29uZmlybSB8fCBjYW5QZXJmb3JtXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj57eyBsb2NhbGl6ZWRWYWwoJ0dvJywgbG9jYWxlQ2F0ZWdvcnkpIH19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1kaXNwbGF5LWRpdmlkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImFzc2lnbm1lbnRDb3VudCQgPiAzXCI+XG4gIDxkaXYgKm5nSWY9XCJiU2hvd01vcmUkOyBlbHNlIHNob3dMZXNzXCIgY2xhc3M9XCJwc2RrLXRvZG8tc2hvdy1tb3JlXCI+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIl9zaG93TW9yZSgpXCI+e3sgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9PT0gJ3Nob3dfbW9yZScgPyAnU2hvdyBtb3JlJyA6IHNob3dNb3JlTG9jYWxpemVkVmFsdWUgfX08L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjc2hvd0xlc3M+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1zaG93LW1vcmVcIj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJfc2hvd0xlc3MoKVwiPnt7IHNob3dsZXNzTG9jYWxpemVkVmFsdWUgPT09ICdzaG93X2xlc3MnID8gJ1Nob3cgbGVzcycgOiBzaG93bGVzc0xvY2FsaXplZFZhbHVlIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFtQmhELE1BQU0sT0FBTyxhQUFhO0lBMkJ4QixZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLE1BQWMsRUFDZCxLQUFZO1FBSFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQU87UUExQmIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQU81Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJ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Q0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQS9PVSxhQUFhO21HQUFiLGFBQWEsdVRBSmIsQ0FBQyxLQUFLLENBQUMsK0NDckJwQixrOEVBZ0RBLHNnRER6QlksWUFBWSwrUEFBRSxlQUFlOzs0RkFFNUIsYUFBYTtrQkFSekIsU0FBUzsrQkFDRSxVQUFVLGFBR1QsQ0FBQyxLQUFLLENBQUMsY0FDTixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO3VLQUcvQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IHB1YmxpY0NvbnN0YW50cyB9IGZyb20gJ0BwZWdhL3Bjb3JlLXBjb25uZWN0LXR5cGVkZWZzL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL3Byb2dyZXNzLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19tZXNzYWdlcy9lcnJvci1tZXNzYWdlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuXG5pbnRlcmZhY2UgVG9Eb1Byb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBkYXRhc291cmNlPzogYW55O1xuICBoZWFkZXJUZXh0Pzogc3RyaW5nO1xuICBteVdvcmtMaXN0PzogYW55O1xuICBsYWJlbD86IHN0cmluZztcbiAgcmVhZE9ubHk/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdG9kbycsXG4gIHRlbXBsYXRlVXJsOiAnLi90b2RvLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdG9kby5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtVdGlsc10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVG9kb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgY2FzZUluZm9JRCQ6IHN0cmluZztcbiAgQElucHV0KCkgZGF0YXNvdXJjZSQ6IGFueTtcbiAgQElucHV0KCkgaGVhZGVyVGV4dCQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dUb2RvTGlzdCQgPSB0cnVlO1xuICBASW5wdXQoKSB0YXJnZXQkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHR5cGUkID0gJ3dvcmtsaXN0JztcbiAgQElucHV0KCkgY29udGV4dCQ6IHN0cmluZztcbiAgQElucHV0KCkgbXlXb3JrTGlzdCQ6IGFueTtcbiAgQElucHV0KCkgaXNDb25maXJtO1xuXG4gIGNvbmZpZ1Byb3BzJDogVG9Eb1Byb3BzO1xuICBjdXJyZW50VXNlciQ6IHN0cmluZztcbiAgY3VycmVudFVzZXJJbml0aWFscyQgPSAnLS0nO1xuICBhc3NpZ25tZW50Q291bnQkOiBudW1iZXI7XG4gIGJTaG93TW9yZSQgPSB0cnVlO1xuICBhckFzc2lnbm1lbnRzJDogYW55W107XG4gIGFzc2lnbm1lbnRzU291cmNlJDogYW55O1xuICBDT05TVFM6IHR5cGVvZiBwdWJsaWNDb25zdGFudHM7XG4gIGJMb2dnaW5nID0gdHJ1ZTtcbiAgbG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnVG9kbyc7XG4gIHNob3dsZXNzTG9jYWxpemVkVmFsdWUgPSB0aGlzLmxvY2FsaXplZFZhbCgnc2hvd19sZXNzJywgJ0Nvc21vc0ZpZWxkcycpO1xuICBzaG93TW9yZUxvY2FsaXplZFZhbHVlID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ3Nob3dfbW9yZScsICdDb3Ntb3NGaWVsZHMnKTtcbiAgY2FuUGVyZm9ybTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHBzU2VydmljZTogUHJvZ3Jlc3NTcGlubmVyU2VydmljZSxcbiAgICBwcml2YXRlIGVyU2VydmljZTogRXJyb3JNZXNzYWdlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHV0aWxzOiBVdGlsc1xuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5DT05TVFMgPSBQQ29yZS5nZXRDb25zdGFudHMoKTtcbiAgICBjb25zdCB7IENSRUFURV9TVEFHRV9TQVZFRCwgQ1JFQVRFX1NUQUdFX0RFTEVURUQgfTogYW55ID0gUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gICAgICB9LFxuICAgICAgJ3VwZGF0ZVRvRG8nXG4gICAgKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgQ1JFQVRFX1NUQUdFX1NBVkVELFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0sXG4gICAgICBDUkVBVEVfU1RBR0VfU0FWRURcbiAgICApO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBDUkVBVEVfU1RBR0VfREVMRVRFRCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVMaXN0KCk7XG4gICAgICB9LFxuICAgICAgQ1JFQVRFX1NUQUdFX0RFTEVURURcbiAgICApO1xuXG4gICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjb25zdCB7IENSRUFURV9TVEFHRV9TQVZFRCwgQ1JFQVRFX1NUQUdFX0RFTEVURUQgfTogYW55ID0gUENvcmUuZ2V0RXZlbnRzKCkuZ2V0Q2FzZUV2ZW50KCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkVWRU5UX0NBTkNFTCwgJ3VwZGF0ZVRvRG8nKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoQ1JFQVRFX1NUQUdFX1NBVkVELCBDUkVBVEVfU1RBR0VfU0FWRUQpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShDUkVBVEVfU1RBR0VfREVMRVRFRCwgQ1JFQVRFX1NUQUdFX0RFTEVURUQpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gZG9uJ3QgdXBkYXRlIHVudGlsIHdlJ3ZhIGhhZCBhbiBpbml0XG4gICAgaWYgKFBDb3JlKSB7XG4gICAgICB0aGlzLnVwZGF0ZVRvRG8oKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVXb3JrTGlzdChrZXkpIHtcbiAgICBQQ29yZS5nZXREYXRhQXBpVXRpbHMoKVxuICAgICAgLy8gQHRzLWlnbm9yZSAtIDJuZCBwYXJhbWV0ZXIgXCJwYXlsb2FkXCIgYW5kIDNyZCBwYXJhbWV0ZXIgXCJjb250ZXh0XCIgc2hvdWxkIGJlIG9wdGlvbmFsIGluIGdldERhdGEgbWV0aG9kXG4gICAgICAuZ2V0RGF0YShrZXkpXG4gICAgICAudGhlbihyZXNwb25zZURhdGEgPT4ge1xuICAgICAgICBjb25zdCBkYXRhT2JqZWN0ID0ge307XG4gICAgICAgIGRhdGFPYmplY3Rba2V5XSA9IHtcbiAgICAgICAgICBweFJlc3VsdHM6IHJlc3BvbnNlRGF0YS5kYXRhLmRhdGFcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnBDb25uJC51cGRhdGVTdGF0ZShkYXRhT2JqZWN0KTtcbiAgICAgICAgdGhpcy51cGRhdGVUb0RvKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyPy5zdGFjayk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUxpc3QoKSB7XG4gICAgdGhpcy51cGRhdGVXb3JrTGlzdCgnRF9weU15V29ya0xpc3QnKTtcbiAgfVxuXG4gIHVwZGF0ZVRvRG8oKSB7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgVG9Eb1Byb3BzO1xuXG4gICAgaWYgKHRoaXMuaGVhZGVyVGV4dCQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmhlYWRlclRleHQkID0gdGhpcy5jb25maWdQcm9wcyQuaGVhZGVyVGV4dDtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGFzb3VyY2UkID0gdGhpcy5jb25maWdQcm9wcyQuZGF0YXNvdXJjZSA/IHRoaXMuY29uZmlnUHJvcHMkLmRhdGFzb3VyY2UgOiB0aGlzLmRhdGFzb3VyY2UkO1xuICAgIHRoaXMubXlXb3JrTGlzdCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5teVdvcmtMaXN0ID8gdGhpcy5jb25maWdQcm9wcyQubXlXb3JrTGlzdCA6IHRoaXMubXlXb3JrTGlzdCQ7XG5cbiAgICB0aGlzLmFzc2lnbm1lbnRzU291cmNlJCA9IHRoaXMuZGF0YXNvdXJjZSQ/LnNvdXJjZSB8fCB0aGlzLm15V29ya0xpc3QkPy5zb3VyY2U7XG5cbiAgICBpZiAodGhpcy5zaG93VG9kb0xpc3QkKSB7XG4gICAgICB0aGlzLmFzc2lnbm1lbnRDb3VudCQgPSB0aGlzLmFzc2lnbm1lbnRzU291cmNlJCAhPSBudWxsID8gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQubGVuZ3RoIDogMDtcbiAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLnRvcFRocmVlQXNzaWdubWVudHModGhpcy5hc3NpZ25tZW50c1NvdXJjZSQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBnZXQgY2FzZUluZm9JZCBhc3NpZ25tZW50LlxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvbmVseS1pZlxuICAgICAgaWYgKHRoaXMuY2FzZUluZm9JRCQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLmdldENhc2VJbmZvQXNzaWdubWVudCh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCwgdGhpcy5jYXNlSW5mb0lEJCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jYW5QZXJmb3JtID0gdGhpcy5hckFzc2lnbm1lbnRzJD8uWzBdPy5jYW5QZXJmb3JtID09PSAndHJ1ZScgfHwgdGhpcy5hckFzc2lnbm1lbnRzJD8uWzBdPy5jYW5QZXJmb3JtID09PSB0cnVlO1xuXG4gICAgdGhpcy5jdXJyZW50VXNlciQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VySW5pdGlhbHMkID0gdGhpcy51dGlscy5nZXRJbml0aWFscyh0aGlzLmN1cnJlbnRVc2VyJCk7XG4gIH1cblxuICBnZXRJRChhc3NpZ25tZW50OiBhbnkpIHtcbiAgICBpZiAoYXNzaWdubWVudC52YWx1ZSkge1xuICAgICAgY29uc3QgcmVmS2V5ID0gYXNzaWdubWVudC52YWx1ZTtcbiAgICAgIHJldHVybiByZWZLZXkuc3Vic3RyaW5nKHJlZktleS5sYXN0SW5kZXhPZignICcpICsgMSk7XG4gICAgfVxuICAgIGNvbnN0IHJlZktleSA9IGFzc2lnbm1lbnQuSUQ7XG4gICAgY29uc3QgYXJLZXlzID0gcmVmS2V5LnNwbGl0KCchJylbMF0uc3BsaXQoJyAnKTtcbiAgICByZXR1cm4gYXJLZXlzWzJdO1xuICB9XG5cbiAgdG9wVGhyZWVBc3NpZ25tZW50cyhhc3NpZ25tZW50c1NvdXJjZTogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXNzaWdubWVudHNTb3VyY2UpID8gYXNzaWdubWVudHNTb3VyY2Uuc2xpY2UoMCwgMykgOiBbXTtcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnRJZChhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQgPT09IHRoaXMuQ09OU1RTLlRPRE8gPyBhc3NpZ25tZW50LklEIDogYXNzaWdubWVudC5pZDtcbiAgfVxuXG4gIGdldFByaW9yaXR5KGFzc2lnbm1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlJCA9PT0gdGhpcy5DT05TVFMuVE9ETyA/IGFzc2lnbm1lbnQudXJnZW5jeSA6IGFzc2lnbm1lbnQucHJpb3JpdHk7XG4gIH1cblxuICBnZXRBc3NpZ25tZW50TmFtZShhc3NpZ25tZW50KSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQgPT09IHRoaXMuQ09OU1RTLlRPRE8gPyBhc3NpZ25tZW50Lm5hbWUgOiBhc3NpZ25tZW50LnN0ZXBOYW1lO1xuICB9XG5cbiAgaW5pdEFzc2lnbm1lbnRzKCk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5hc3NpZ25tZW50c1NvdXJjZSQpIHtcbiAgICAgIHRoaXMuYXNzaWdubWVudENvdW50JCA9IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkLmxlbmd0aDtcbiAgICAgIHJldHVybiB0aGlzLnRvcFRocmVlQXNzaWdubWVudHModGhpcy5hc3NpZ25tZW50c1NvdXJjZSQpO1xuICAgIH1cbiAgICAvLyB0dXJuIG9mZiB0b2RvbGlzdFxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGdldENhc2VJbmZvQXNzaWdubWVudChhc3NpZ25tZW50c1NvdXJjZTogYW55W10sIGNhc2VJbmZvSUQ6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZSBvZiBhc3NpZ25tZW50c1NvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5JRC5pbmRleE9mKGNhc2VJbmZvSUQpID49IDApIHtcbiAgICAgICAgY29uc3QgbGlzdFJvdyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc291cmNlKSk7XG4gICAgICAgIC8vIHVyZ2VuY3kgYmVjb21lcyBwcmlvcml0eVxuICAgICAgICBsaXN0Um93LnByaW9yaXR5ID0gbGlzdFJvdy51cmdlbmN5IHx8IHVuZGVmaW5lZDtcbiAgICAgICAgLy8gbWltaWMgcmVndWxhciBsaXN0XG4gICAgICAgIGxpc3RSb3cuaWQgPSBsaXN0Um93LklEIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgcmVzdWx0LnB1c2gobGlzdFJvdyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBfc2hvd01vcmUoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuYlNob3dNb3JlJCA9IGZhbHNlO1xuICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkO1xuICAgIH0pO1xuICB9XG5cbiAgX3Nob3dMZXNzKCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLmJTaG93TW9yZSQgPSB0cnVlO1xuXG4gICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy50b3BUaHJlZUFzc2lnbm1lbnRzKHRoaXMuYXNzaWdubWVudHNTb3VyY2UkKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzQ2hpbGRDYXNlKGFzc2lnbm1lbnQpIHtcbiAgICByZXR1cm4gYXNzaWdubWVudC5pc0NoaWxkO1xuICB9XG5cbiAgY2xpY2tHbyhhc3NpZ25tZW50KSB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmdldEFzc2lnbm1lbnRJZChhc3NpZ25tZW50KTtcbiAgICBsZXQgeyBjbGFzc25hbWUgPSAnJyB9ID0gYXNzaWdubWVudDtcbiAgICBjb25zdCBzVGFyZ2V0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGFpbmVyTmFtZSgpO1xuICAgIGNvbnN0IHNUYXJnZXRDb250YWluZXJOYW1lID0gc1RhcmdldDtcblxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHsgY29udGFpbmVyTmFtZTogc1RhcmdldENvbnRhaW5lck5hbWUsIGNoYW5uZWxOYW1lOiAnJyB9O1xuXG4gICAgaWYgKGNsYXNzbmFtZSA9PT0gbnVsbCB8fCBjbGFzc25hbWUgPT09ICcnKSB7XG4gICAgICBjbGFzc25hbWUgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldENsYXNzTmFtZSgpO1xuICAgIH1cblxuICAgIGlmIChzVGFyZ2V0ID09PSAnd29ya2FyZWEnKSB7XG4gICAgICBvcHRpb25zLmlzQWN0aW9uRnJvbVRvRG9MaXN0ID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMudGFyZ2V0ID0gJyc7XG4gICAgICBvcHRpb25zLmNvbnRleHQgPSBudWxsO1xuICAgICAgb3B0aW9ucy5pc0NoaWxkID0gdGhpcy5pc0NoaWxkQ2FzZShhc3NpZ25tZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5pc0FjdGlvbkZyb21Ub0RvTGlzdCA9IGZhbHNlO1xuICAgICAgb3B0aW9ucy50YXJnZXQgPSBzVGFyZ2V0O1xuICAgIH1cblxuICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgdGhpcy5wQ29ubiRcbiAgICAgIC5nZXRBY3Rpb25zQXBpKClcbiAgICAgIC5vcGVuQXNzaWdubWVudChpZCwgY2xhc3NuYW1lLCBvcHRpb25zKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLmJMb2dnaW5nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYG9wZW5Bc3NpZ25tZW50IGNvbXBsZXRlZGApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgnc2hvdycsICdGYWlsZWQgdG8gb3BlbicpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLXRvZG9cIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1oZWFkZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1hdmF0YXJcIj57eyB0aGlzLmN1cnJlbnRVc2VySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgPGRpdiBpZD1cIndvcmtsaXN0XCIgY2xhc3M9XCJwc2RrLXRvZG8tdGV4dFwiPnt7IGhlYWRlclRleHQkIH19PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dUb2RvTGlzdCRcIiBjbGFzcz1cInBzZGstYXNzaWdubWVudC1jb3VudFwiPnt7IGFzc2lnbm1lbnRDb3VudCQgfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxiciAvPjxiciAvPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1kaXNwbGF5LWRpdmlkZXJcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnRzXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYXNzaWdubWVudCBvZiBhckFzc2lnbm1lbnRzJFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1jYXJkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LXRpdGxlXCI+e3sgZ2V0QXNzaWdubWVudE5hbWUoYXNzaWdubWVudCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtZGF0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LXRhc2tcIj5cbiAgICAgICAgICAgICAge3sgbG9jYWxpemVkVmFsKCdUYXNrIGluJywgbG9jYWxlQ2F0ZWdvcnkpIH19XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwc2RrLXRvZG8taWRcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIChjbGljayk9XCJjbGlja0dvKGFzc2lnbm1lbnQpXCIgKm5nSWY9XCIhaXNDb25maXJtIHx8IGNhblBlcmZvcm07IGVsc2UgcmVhZE9ubHlUZXh0XCI+XG4gICAgICAgICAgICAgICAge3sgYXNzaWdubWVudC5uYW1lIH19IHt7IGdldElEKGFzc2lnbm1lbnQpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRPbmx5VGV4dD4ge3sgYXNzaWdubWVudC5uYW1lIH19IHt7IGdldElEKGFzc2lnbm1lbnQpIH19IDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzaWdubWVudC5zdGF0dXMgIT0gdW5kZWZpbmVkXCI+XG4gICAgICAgICAgICAgICAgJmJ1bGw7IDxzcGFuIGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtc3RhdHVzXCI+e3sgYXNzaWdubWVudD8uc3RhdHVzIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICZidWxsOyB7eyBsb2NhbGl6ZWRWYWwoJ1VyZ2VuY3knLCBsb2NhbGVDYXRlZ29yeSkgfX0ge3sgZ2V0UHJpb3JpdHkoYXNzaWdubWVudCkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LWFjdGlvblwiICpuZ0lmPVwiIWlzQ29uZmlybSB8fCBjYW5QZXJmb3JtXCI+XG4gICAgICAgICAgPGJ1dHRvbiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNsaWNrR28oYXNzaWdubWVudClcIj57eyBsb2NhbGl6ZWRWYWwoJ0dvJywgbG9jYWxlQ2F0ZWdvcnkpIH19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicHNkay1kaXNwbGF5LWRpdmlkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImFzc2lnbm1lbnRDb3VudCQgPiAzXCI+XG4gIDxkaXYgKm5nSWY9XCJiU2hvd01vcmUkOyBlbHNlIHNob3dMZXNzXCIgY2xhc3M9XCJwc2RrLXRvZG8tc2hvdy1tb3JlXCI+XG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIl9zaG93TW9yZSgpXCI+e3sgc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSA9PT0gJ3Nob3dfbW9yZScgPyAnU2hvdyBtb3JlJyA6IHNob3dNb3JlTG9jYWxpemVkVmFsdWUgfX08L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZSAjc2hvd0xlc3M+XG4gICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1zaG93LW1vcmVcIj5cbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJfc2hvd0xlc3MoKVwiPnt7IHNob3dsZXNzTG9jYWxpemVkVmFsdWUgPT09ICdzaG93X2xlc3MnID8gJ1Nob3cgbGVzcycgOiBzaG93bGVzc0xvY2FsaXplZFZhbHVlIH19PC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==