@pega/angular-sdk-components 0.24.3 → 0.24.5
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.
- package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +3 -3
- package/esm2022/lib/_components/field/check-box/check-box.component.mjs +5 -6
- package/esm2022/lib/_components/field/currency/currency.component.mjs +6 -4
- package/esm2022/lib/_components/field/decimal/decimal.component.mjs +4 -3
- package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +6 -10
- package/esm2022/lib/_components/field/percentage/percentage.component.mjs +6 -4
- package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +3 -3
- package/esm2022/lib/_components/infra/view/view.component.mjs +2 -2
- package/esm2022/lib/_components/template/list-view/list-view.component.mjs +2 -2
- package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +2 -4
- package/esm2022/lib/_components/widget/todo/todo.component.mjs +4 -3
- package/fesm2022/pega-angular-sdk-components.mjs +31 -32
- package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
- package/lib/_components/field/currency/currency.component.d.ts +3 -0
- package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
- package/lib/_components/field/percentage/percentage.component.d.ts +2 -0
- package/lib/_components/widget/todo/todo.component.d.ts +1 -0
- package/package.json +1 -1
- package/sdk-local-component-map.ts +0 -12
|
@@ -88,6 +88,7 @@ export class TodoComponent {
|
|
|
88
88
|
this.arAssignments$ = this.getCaseInfoAssignment(this.assignmentsSource$, this.caseInfoID$);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
+
this.canPerform = this.arAssignments$?.[0]?.canPerform === 'true' || this.arAssignments$?.[0]?.canPerform === true;
|
|
91
92
|
this.currentUser$ = PCore.getEnvironmentInfo().getOperatorName();
|
|
92
93
|
this.currentUserInitials$ = this.utils.getInitials(this.currentUser$);
|
|
93
94
|
}
|
|
@@ -184,11 +185,11 @@ export class TodoComponent {
|
|
|
184
185
|
});
|
|
185
186
|
}
|
|
186
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 }); }
|
|
187
|
-
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 • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\">\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)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ 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
189
|
}
|
|
189
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TodoComponent, decorators: [{
|
|
190
191
|
type: Component,
|
|
191
|
-
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 • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ localizedVal('Urgency', localeCategory) }} {{ getPriority(assignment) }}\n </div>\n </div>\n </div>\n <div class=\"psdk-todo-assignment-action\">\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)\">\n {{ assignment.name }} {{ getID(assignment) }}\n </button>\n <span *ngIf=\"assignment.status != undefined\">\n • <span class=\"psdk-todo-assignment-status\">{{ assignment?.status }}</span>\n </span>\n • {{ 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
193
|
}], ctorParameters: () => [{ type: i1.ProgressSpinnerService }, { type: i2.ErrorMessagesService }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
|
|
193
194
|
type: Input
|
|
194
195
|
}], caseInfoID$: [{
|
|
@@ -210,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
210
211
|
}], isConfirm: [{
|
|
211
212
|
type: Input
|
|
212
213
|
}] } });
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9kby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L3RvZG8vdG9kby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBZ0MsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7QUFtQmhELE1BQU0sT0FBTyxhQUFhO0lBMEJ4QixZQUNVLFNBQWlDLEVBQ2pDLFNBQStCLEVBQy9CLE1BQWMsRUFDZCxLQUFZO1FBSFosY0FBUyxHQUFULFNBQVMsQ0FBd0I7UUFDakMsY0FBUyxHQUFULFNBQVMsQ0FBc0I7UUFDL0IsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQU87UUF6QmIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsVUFBSyxHQUFHLFVBQVUsQ0FBQztRQU81Qix5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQztRQUN4QiwyQkFBc0IsR0FBRyxJQUFJ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QUNOLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7dUtBRy9CLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgcHVibGljQ29uc3RhbnRzIH0gZnJvbSAnQHBlZ2EvcGNvcmUtcGNvbm5lY3QtdHlwZWRlZnMvY29uc3RhbnRzJztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBUb0RvUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGRhdGFzb3VyY2U/OiBhbnk7XG4gIGhlYWRlclRleHQ/OiBzdHJpbmc7XG4gIG15V29ya0xpc3Q/OiBhbnk7XG4gIGxhYmVsPzogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC10b2RvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RvZG8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b2RvLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1V0aWxzXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUb2RvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBjYXNlSW5mb0lEJDogc3RyaW5nO1xuICBASW5wdXQoKSBkYXRhc291cmNlJDogYW55O1xuICBASW5wdXQoKSBoZWFkZXJUZXh0JD86IHN0cmluZztcbiAgQElucHV0KCkgc2hvd1RvZG9MaXN0JCA9IHRydWU7XG4gIEBJbnB1dCgpIHRhcmdldCQ6IHN0cmluZztcbiAgQElucHV0KCkgdHlwZSQgPSAnd29ya2xpc3QnO1xuICBASW5wdXQoKSBjb250ZXh0JDogc3RyaW5nO1xuICBASW5wdXQoKSBteVdvcmtMaXN0JDogYW55O1xuICBASW5wdXQoKSBpc0NvbmZpcm07XG5cbiAgY29uZmlnUHJvcHMkOiBUb0RvUHJvcHM7XG4gIGN1cnJlbnRVc2VyJDogc3RyaW5nO1xuICBjdXJyZW50VXNlckluaXRpYWxzJCA9ICctLSc7XG4gIGFzc2lnbm1lbnRDb3VudCQ6IG51bWJlcjtcbiAgYlNob3dNb3JlJCA9IHRydWU7XG4gIGFyQXNzaWdubWVudHMkOiBhbnlbXTtcbiAgYXNzaWdubWVudHNTb3VyY2UkOiBhbnk7XG4gIENPTlNUUzogdHlwZW9mIHB1YmxpY0NvbnN0YW50cztcbiAgYkxvZ2dpbmcgPSB0cnVlO1xuICBsb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdUb2RvJztcbiAgc2hvd2xlc3NMb2NhbGl6ZWRWYWx1ZSA9IHRoaXMubG9jYWxpemVkVmFsKCdzaG93X2xlc3MnLCAnQ29zbW9zRmllbGRzJyk7XG4gIHNob3dNb3JlTG9jYWxpemVkVmFsdWUgPSB0aGlzLmxvY2FsaXplZFZhbCgnc2hvd19tb3JlJywgJ0Nvc21vc0ZpZWxkcycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXJTZXJ2aWNlOiBFcnJvck1lc3NhZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLkNPTlNUUyA9IFBDb3JlLmdldENvbnN0YW50cygpO1xuICAgIGNvbnN0IHsgQ1JFQVRFX1NUQUdFX1NBVkVELCBDUkVBVEVfU1RBR0VfREVMRVRFRCB9OiBhbnkgPSBQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkuc3Vic2NyaWJlKFxuICAgICAgUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuRVZFTlRfQ0FOQ0VMLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVRvRG8oKTtcbiAgICAgIH0sXG4gICAgICAndXBkYXRlVG9EbydcbiAgICApO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBDUkVBVEVfU1RBR0VfU0FWRUQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlTGlzdCgpO1xuICAgICAgfSxcbiAgICAgIENSRUFURV9TVEFHRV9TQVZFRFxuICAgICk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnN1YnNjcmliZShcbiAgICAgIENSRUFURV9TVEFHRV9ERUxFVEVELFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZUxpc3QoKTtcbiAgICAgIH0sXG4gICAgICBDUkVBVEVfU1RBR0VfREVMRVRFRFxuICAgICk7XG5cbiAgICB0aGlzLnVwZGF0ZVRvRG8oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGNvbnN0IHsgQ1JFQVRFX1NUQUdFX1NBVkVELCBDUkVBVEVfU1RBR0VfREVMRVRFRCB9OiBhbnkgPSBQQ29yZS5nZXRFdmVudHMoKS5nZXRDYXNlRXZlbnQoKTtcblxuICAgIFBDb3JlLmdldFB1YlN1YlV0aWxzKCkudW5zdWJzY3JpYmUoUENvcmUuZ2V0Q29uc3RhbnRzKCkuUFVCX1NVQl9FVkVOVFMuRVZFTlRfQ0FOQ0VMLCAndXBkYXRlVG9EbycpO1xuXG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS51bnN1YnNjcmliZShDUkVBVEVfU1RBR0VfU0FWRUQsIENSRUFURV9TVEFHRV9TQVZFRCk7XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKENSRUFURV9TVEFHRV9ERUxFVEVELCBDUkVBVEVfU1RBR0VfREVMRVRFRCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICAvLyBkb24ndCB1cGRhdGUgdW50aWwgd2UndmEgaGFkIGFuIGluaXRcbiAgICBpZiAoUENvcmUpIHtcbiAgICAgIHRoaXMudXBkYXRlVG9EbygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVdvcmtMaXN0KGtleSkge1xuICAgIFBDb3JlLmdldERhdGFBcGlVdGlscygpXG4gICAgICAvLyBAdHMtaWdub3JlIC0gMm5kIHBhcmFtZXRlciBcInBheWxvYWRcIiBhbmQgM3JkIHBhcmFtZXRlciBcImNvbnRleHRcIiBzaG91bGQgYmUgb3B0aW9uYWwgaW4gZ2V0RGF0YSBtZXRob2RcbiAgICAgIC5nZXREYXRhKGtleSlcbiAgICAgIC50aGVuKHJlc3BvbnNlRGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFPYmplY3QgPSB7fTtcbiAgICAgICAgZGF0YU9iamVjdFtrZXldID0ge1xuICAgICAgICAgIHB4UmVzdWx0czogcmVzcG9uc2VEYXRhLmRhdGEuZGF0YVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucENvbm4kLnVwZGF0ZVN0YXRlKGRhdGFPYmplY3QpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRvRG8oKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnI/LnN0YWNrKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGlzdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVdvcmtMaXN0KCdEX3B5TXlXb3JrTGlzdCcpO1xuICB9XG5cbiAgdXBkYXRlVG9EbygpIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBUb0RvUHJvcHM7XG5cbiAgICBpZiAodGhpcy5oZWFkZXJUZXh0JCA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGVhZGVyVGV4dCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oZWFkZXJUZXh0O1xuICAgIH1cblxuICAgIHRoaXMuZGF0YXNvdXJjZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5kYXRhc291cmNlID8gdGhpcy5jb25maWdQcm9wcyQuZGF0YXNvdXJjZSA6IHRoaXMuZGF0YXNvdXJjZSQ7XG4gICAgdGhpcy5teVdvcmtMaXN0JCA9IHRoaXMuY29uZmlnUHJvcHMkLm15V29ya0xpc3QgPyB0aGlzLmNvbmZpZ1Byb3BzJC5teVdvcmtMaXN0IDogdGhpcy5teVdvcmtMaXN0JDtcblxuICAgIHRoaXMuYXNzaWdubWVudHNTb3VyY2UkID0gdGhpcy5kYXRhc291cmNlJD8uc291cmNlIHx8IHRoaXMubXlXb3JrTGlzdCQ/LnNvdXJjZTtcblxuICAgIGlmICh0aGlzLnNob3dUb2RvTGlzdCQpIHtcbiAgICAgIHRoaXMuYXNzaWdubWVudENvdW50JCA9IHRoaXMuYXNzaWdubWVudHNTb3VyY2UkICE9IG51bGwgPyB0aGlzLmFzc2lnbm1lbnRzU291cmNlJC5sZW5ndGggOiAwO1xuICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMudG9wVGhyZWVBc3NpZ25tZW50cyh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGdldCBjYXNlSW5mb0lkIGFzc2lnbm1lbnQuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9uZWx5LWlmXG4gICAgICBpZiAodGhpcy5jYXNlSW5mb0lEJCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hckFzc2lnbm1lbnRzJCA9IHRoaXMuZ2V0Q2FzZUluZm9Bc3NpZ25tZW50KHRoaXMuYXNzaWdubWVudHNTb3VyY2UkLCB0aGlzLmNhc2VJbmZvSUQkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRVc2VyJCA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE9wZXJhdG9yTmFtZSgpO1xuICAgIHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKHRoaXMuY3VycmVudFVzZXIkKTtcbiAgfVxuXG4gIGdldElEKGFzc2lnbm1lbnQ6IGFueSkge1xuICAgIGlmIChhc3NpZ25tZW50LnZhbHVlKSB7XG4gICAgICBjb25zdCByZWZLZXkgPSBhc3NpZ25tZW50LnZhbHVlO1xuICAgICAgcmV0dXJuIHJlZktleS5zdWJzdHJpbmcocmVmS2V5Lmxhc3RJbmRleE9mKCcgJykgKyAxKTtcbiAgICB9XG4gICAgY29uc3QgcmVmS2V5ID0gYXNzaWdubWVudC5JRDtcbiAgICBjb25zdCBhcktleXMgPSByZWZLZXkuc3BsaXQoJyEnKVswXS5zcGxpdCgnICcpO1xuICAgIHJldHVybiBhcktleXNbMl07XG4gIH1cblxuICB0b3BUaHJlZUFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzU291cmNlOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShhc3NpZ25tZW50c1NvdXJjZSkgPyBhc3NpZ25tZW50c1NvdXJjZS5zbGljZSgwLCAzKSA6IFtdO1xuICB9XG5cbiAgZ2V0QXNzaWdubWVudElkKGFzc2lnbm1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlJCA9PT0gdGhpcy5DT05TVFMuVE9ETyA/IGFzc2lnbm1lbnQuSUQgOiBhc3NpZ25tZW50LmlkO1xuICB9XG5cbiAgZ2V0UHJpb3JpdHkoYXNzaWdubWVudCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUkID09PSB0aGlzLkNPTlNUUy5UT0RPID8gYXNzaWdubWVudC51cmdlbmN5IDogYXNzaWdubWVudC5wcmlvcml0eTtcbiAgfVxuXG4gIGdldEFzc2lnbm1lbnROYW1lKGFzc2lnbm1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlJCA9PT0gdGhpcy5DT05TVFMuVE9ETyA/IGFzc2lnbm1lbnQubmFtZSA6IGFzc2lnbm1lbnQuc3RlcE5hbWU7XG4gIH1cblxuICBpbml0QXNzaWdubWVudHMoKTogYW55W10ge1xuICAgIGlmICh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCkge1xuICAgICAgdGhpcy5hc3NpZ25tZW50Q291bnQkID0gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQubGVuZ3RoO1xuICAgICAgcmV0dXJuIHRoaXMudG9wVGhyZWVBc3NpZ25tZW50cyh0aGlzLmFzc2lnbm1lbnRzU291cmNlJCk7XG4gICAgfVxuICAgIC8vIHR1cm4gb2ZmIHRvZG9saXN0XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0Q2FzZUluZm9Bc3NpZ25tZW50KGFzc2lnbm1lbnRzU291cmNlOiBhbnlbXSwgY2FzZUluZm9JRDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAoY29uc3Qgc291cmNlIG9mIGFzc2lnbm1lbnRzU291cmNlKSB7XG4gICAgICBpZiAoc291cmNlLklELmluZGV4T2YoY2FzZUluZm9JRCkgPj0gMCkge1xuICAgICAgICBjb25zdCBsaXN0Um93ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzb3VyY2UpKTtcbiAgICAgICAgLy8gdXJnZW5jeSBiZWNvbWVzIHByaW9yaXR5XG4gICAgICAgIGxpc3RSb3cucHJpb3JpdHkgPSBsaXN0Um93LnVyZ2VuY3kgfHwgdW5kZWZpbmVkO1xuICAgICAgICAvLyBtaW1pYyByZWd1bGFyIGxpc3RcbiAgICAgICAgbGlzdFJvdy5pZCA9IGxpc3RSb3cuSUQgfHwgdW5kZWZpbmVkO1xuICAgICAgICByZXN1bHQucHVzaChsaXN0Um93KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF9zaG93TW9yZSgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5iU2hvd01vcmUkID0gZmFsc2U7XG4gICAgICB0aGlzLmFyQXNzaWdubWVudHMkID0gdGhpcy5hc3NpZ25tZW50c1NvdXJjZSQ7XG4gICAgfSk7XG4gIH1cblxuICBfc2hvd0xlc3MoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuYlNob3dNb3JlJCA9IHRydWU7XG5cbiAgICAgIHRoaXMuYXJBc3NpZ25tZW50cyQgPSB0aGlzLnRvcFRocmVlQXNzaWdubWVudHModGhpcy5hc3NpZ25tZW50c1NvdXJjZSQpO1xuICAgIH0pO1xuICB9XG5cbiAgaXNDaGlsZENhc2UoYXNzaWdubWVudCkge1xuICAgIHJldHVybiBhc3NpZ25tZW50LmlzQ2hpbGQ7XG4gIH1cblxuICBjbGlja0dvKGFzc2lnbm1lbnQpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZ2V0QXNzaWdubWVudElkKGFzc2lnbm1lbnQpO1xuICAgIGxldCB7IGNsYXNzbmFtZSA9ICcnIH0gPSBhc3NpZ25tZW50O1xuICAgIGNvbnN0IHNUYXJnZXQgPSB0aGlzLnBDb25uJC5nZXRDb250YWluZXJOYW1lKCk7XG4gICAgY29uc3Qgc1RhcmdldENvbnRhaW5lck5hbWUgPSBzVGFyZ2V0O1xuXG4gICAgY29uc3Qgb3B0aW9uczogYW55ID0geyBjb250YWluZXJOYW1lOiBzVGFyZ2V0Q29udGFpbmVyTmFtZSB9O1xuXG4gICAgaWYgKGNsYXNzbmFtZSA9PT0gbnVsbCB8fCBjbGFzc25hbWUgPT09ICcnKSB7XG4gICAgICBjbGFzc25hbWUgPSB0aGlzLnBDb25uJC5nZXRDYXNlSW5mbygpLmdldENsYXNzTmFtZSgpO1xuICAgIH1cblxuICAgIGlmIChzVGFyZ2V0ID09PSAnd29ya2FyZWEnKSB7XG4gICAgICBvcHRpb25zLmlzQWN0aW9uRnJvbVRvRG9MaXN0ID0gdHJ1ZTtcbiAgICAgIG9wdGlvbnMudGFyZ2V0ID0gJyc7XG4gICAgICBvcHRpb25zLmNvbnRleHQgPSBudWxsO1xuICAgICAgb3B0aW9ucy5pc0NoaWxkID0gdGhpcy5pc0NoaWxkQ2FzZShhc3NpZ25tZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5pc0FjdGlvbkZyb21Ub0RvTGlzdCA9IGZhbHNlO1xuICAgICAgb3B0aW9ucy50YXJnZXQgPSBzVGFyZ2V0O1xuICAgIH1cblxuICAgIHRoaXMucHNTZXJ2aWNlLnNlbmRNZXNzYWdlKHRydWUpO1xuXG4gICAgdGhpcy5wQ29ubiRcbiAgICAgIC5nZXRBY3Rpb25zQXBpKClcbiAgICAgIC5vcGVuQXNzaWdubWVudChpZCwgY2xhc3NuYW1lLCBvcHRpb25zKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZShmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLmJMb2dnaW5nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYG9wZW5Bc3NpZ25tZW50IGNvbXBsZXRlZGApO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgdGhpcy5wc1NlcnZpY2Uuc2VuZE1lc3NhZ2UoZmFsc2UpO1xuICAgICAgICB0aGlzLmVyU2VydmljZS5zZW5kTWVzc2FnZSgnc2hvdycsICdGYWlsZWQgdG8gb3BlbicpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLXRvZG9cIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1oZWFkZXJcIj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1hdmF0YXJcIj57eyB0aGlzLmN1cnJlbnRVc2VySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgPGRpdiBpZD1cIndvcmtsaXN0XCIgY2xhc3M9XCJwc2RrLXRvZG8tdGV4dFwiPnt7IGhlYWRlclRleHQkIH19PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dUb2RvTGlzdCRcIiBjbGFzcz1cInBzZGstYXNzaWdubWVudC1jb3VudFwiPnt7IGFzc2lnbm1lbnRDb3VudCQgfX08L2Rpdj5cbiAgPC9kaXY+XG4gIDxiciAvPjxiciAvPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1RvZG9MaXN0JFwiIGNsYXNzPVwicHNkay1kaXNwbGF5LWRpdmlkZXJcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnRzXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYXNzaWdubWVudCBvZiBhckFzc2lnbm1lbnRzJFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWF2YXRhclwiPnt7IHRoaXMuY3VycmVudFVzZXJJbml0aWFscyQgfX08L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1jYXJkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LXRpdGxlXCI+e3sgZ2V0QXNzaWdubWVudE5hbWUoYXNzaWdubWVudCkgfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLWFzc2lnbm1lbnQtZGF0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LXRhc2tcIj5cbiAgICAgICAgICAgICAge3sgbG9jYWxpemVkVmFsKCdUYXNrIGluJywgbG9jYWxlQ2F0ZWdvcnkpIH19XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwc2RrLXRvZG8taWRcIiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiIChjbGljayk9XCJjbGlja0dvKGFzc2lnbm1lbnQpXCI+XG4gICAgICAgICAgICAgICAge3sgYXNzaWdubWVudC5uYW1lIH19IHt7IGdldElEKGFzc2lnbm1lbnQpIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImFzc2lnbm1lbnQuc3RhdHVzICE9IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICAgICAgICZidWxsOyA8c3BhbiBjbGFzcz1cInBzZGstdG9kby1hc3NpZ25tZW50LXN0YXR1c1wiPnt7IGFzc2lnbm1lbnQ/LnN0YXR1cyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAmYnVsbDsge3sgbG9jYWxpemVkVmFsKCdVcmdlbmN5JywgbG9jYWxlQ2F0ZWdvcnkpIH19IHt7IGdldFByaW9yaXR5KGFzc2lnbm1lbnQpIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLXRvZG8tYXNzaWdubWVudC1hY3Rpb25cIj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1mbGF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiY2xpY2tHbyhhc3NpZ25tZW50KVwiPnt7IGxvY2FsaXplZFZhbCgnR28nLCBsb2NhbGVDYXRlZ29yeSkgfX08L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLWRpc3BsYXktZGl2aWRlclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiYXNzaWdubWVudENvdW50JCA+IDNcIj5cbiAgPGRpdiAqbmdJZj1cImJTaG93TW9yZSQ7IGVsc2Ugc2hvd0xlc3NcIiBjbGFzcz1cInBzZGstdG9kby1zaG93LW1vcmVcIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiX3Nob3dNb3JlKClcIj57eyBzaG93TW9yZUxvY2FsaXplZFZhbHVlID09PSAnc2hvd19tb3JlJyA/ICdTaG93IG1vcmUnIDogc2hvd01vcmVMb2NhbGl6ZWRWYWx1ZSB9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICNzaG93TGVzcz5cbiAgICA8ZGl2IGNsYXNzPVwicHNkay10b2RvLXNob3ctbW9yZVwiPlxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cIl9zaG93TGVzcygpXCI+e3sgc2hvd2xlc3NMb2NhbGl6ZWRWYWx1ZSA9PT0gJ3Nob3dfbGVzcycgPyAnU2hvdyBsZXNzJyA6IHNob3dsZXNzTG9jYWxpemVkVmFsdWUgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
|
|
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==
|