valtech-components 4.0.27 → 4.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +34 -30
- package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +3 -3
- package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +91 -65
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +106 -84
- package/esm2022/lib/components/organisms/login/login.component.mjs +11 -4
- package/esm2022/lib/components/organisms/login/types.mjs +23 -1
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +16 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-modal.component.mjs +70 -0
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +16 -5
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +1125 -956
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/account-view/account-view.component.d.ts +3 -0
- package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +8 -8
- package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +7 -8
- package/lib/components/organisms/login/login.component.d.ts +6 -0
- package/lib/components/organisms/login/types.d.ts +12 -0
- package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -0
- package/lib/components/organisms/permissions-view/permissions-modal.component.d.ts +13 -0
- package/lib/components/organisms/permissions-view/permissions-view.component.d.ts +9 -2
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/src/lib/services/firebase/firebase-messaging-sw.js +145 -0
|
@@ -101,6 +101,8 @@ export class AccountViewComponent {
|
|
|
101
101
|
retrying: this.orgsLoading(),
|
|
102
102
|
});
|
|
103
103
|
});
|
|
104
|
+
this.createOrgOpen = signal(false);
|
|
105
|
+
this.deleteAccountOpen = signal(false);
|
|
104
106
|
this.pendingInvites = signal([]);
|
|
105
107
|
this.pendingInvitesLoading = signal(false);
|
|
106
108
|
this.inviteAccepting = signal(null);
|
|
@@ -214,40 +216,18 @@ export class AccountViewComponent {
|
|
|
214
216
|
});
|
|
215
217
|
}
|
|
216
218
|
onDeleteAccount() {
|
|
217
|
-
|
|
218
|
-
component: DeleteAccountModalComponent,
|
|
219
|
-
componentProps: {
|
|
220
|
-
i18nNamespace: 'Settings.DeleteAccount',
|
|
221
|
-
},
|
|
222
|
-
breakpoints: {
|
|
223
|
-
breakpoints: [0, 0.85],
|
|
224
|
-
initialBreakpoint: 0.85,
|
|
225
|
-
showHandle: true,
|
|
226
|
-
},
|
|
227
|
-
backdropDismiss: false,
|
|
228
|
-
});
|
|
219
|
+
this.deleteAccountOpen.set(true);
|
|
229
220
|
this.resolvedConfig().onAccountDeleted?.();
|
|
230
221
|
}
|
|
231
222
|
onManageOrg() {
|
|
232
223
|
this.nav.navigateByUrl(this.resolvedConfig().manageOrgRoute);
|
|
233
224
|
}
|
|
234
225
|
onNewOrg() {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
this.loadOrgs();
|
|
241
|
-
this.resolvedConfig().onOrgCreated?.(newOrg);
|
|
242
|
-
},
|
|
243
|
-
},
|
|
244
|
-
breakpoints: {
|
|
245
|
-
breakpoints: [0, 0.92],
|
|
246
|
-
initialBreakpoint: 0.92,
|
|
247
|
-
showHandle: true,
|
|
248
|
-
},
|
|
249
|
-
backdropDismiss: true,
|
|
250
|
-
});
|
|
226
|
+
this.createOrgOpen.set(true);
|
|
227
|
+
}
|
|
228
|
+
onOrgCreated(newOrg) {
|
|
229
|
+
this.loadOrgs();
|
|
230
|
+
this.resolvedConfig().onOrgCreated?.(newOrg);
|
|
251
231
|
}
|
|
252
232
|
onMoreInfo() {
|
|
253
233
|
void this.modalService.open({
|
|
@@ -537,8 +517,19 @@ export class AccountViewComponent {
|
|
|
537
517
|
</div>
|
|
538
518
|
</section>
|
|
539
519
|
}
|
|
520
|
+
<val-create-org-modal
|
|
521
|
+
[isOpen]="createOrgOpen()"
|
|
522
|
+
[i18nNamespace]="'CreateOrgModal'"
|
|
523
|
+
(dismissed)="createOrgOpen.set(false)"
|
|
524
|
+
(created)="onOrgCreated($event)"
|
|
525
|
+
/>
|
|
526
|
+
<val-delete-account-modal
|
|
527
|
+
[isOpen]="deleteAccountOpen()"
|
|
528
|
+
[i18nNamespace]="'Settings.DeleteAccount'"
|
|
529
|
+
(dismissed)="deleteAccountOpen.set(false)"
|
|
530
|
+
/>
|
|
540
531
|
</div>
|
|
541
|
-
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: CtaCardComponent, selector: "val-cta-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: InvitationCardComponent, selector: "val-invitation-card", inputs: ["props"], outputs: ["onAccept", "onDecline"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
|
|
532
|
+
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: CtaCardComponent, selector: "val-cta-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: InvitationCardComponent, selector: "val-invitation-card", inputs: ["props"], outputs: ["onAccept", "onDecline"] }, { kind: "component", type: CreateOrgModalComponent, selector: "val-create-org-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed", "created"] }, { kind: "component", type: DeleteAccountModalComponent, selector: "val-delete-account-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
|
|
542
533
|
}
|
|
543
534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccountViewComponent, decorators: [{
|
|
544
535
|
type: Component,
|
|
@@ -551,6 +542,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
551
542
|
ButtonComponent,
|
|
552
543
|
CtaCardComponent,
|
|
553
544
|
InvitationCardComponent,
|
|
545
|
+
CreateOrgModalComponent,
|
|
546
|
+
DeleteAccountModalComponent,
|
|
554
547
|
IonIcon,
|
|
555
548
|
IonButton,
|
|
556
549
|
TitleCasePipe,
|
|
@@ -724,9 +717,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
724
717
|
</div>
|
|
725
718
|
</section>
|
|
726
719
|
}
|
|
720
|
+
<val-create-org-modal
|
|
721
|
+
[isOpen]="createOrgOpen()"
|
|
722
|
+
[i18nNamespace]="'CreateOrgModal'"
|
|
723
|
+
(dismissed)="createOrgOpen.set(false)"
|
|
724
|
+
(created)="onOrgCreated($event)"
|
|
725
|
+
/>
|
|
726
|
+
<val-delete-account-modal
|
|
727
|
+
[isOpen]="deleteAccountOpen()"
|
|
728
|
+
[i18nNamespace]="'Settings.DeleteAccount'"
|
|
729
|
+
(dismissed)="deleteAccountOpen.set(false)"
|
|
730
|
+
/>
|
|
727
731
|
</div>
|
|
728
732
|
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}\n"] }]
|
|
729
733
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
730
734
|
type: Input
|
|
731
735
|
}] } });
|
|
732
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYWNjb3VudC12aWV3L2FjY291bnQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGFBQWEsRUFDYixxQkFBcUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJLVCxpeEZBdkxDLGdCQUFnQiwyRUFDaEIsbUJBQW1CLCtFQUNuQix1QkFBdUIsbUZBQ3ZCLGNBQWMseUVBQ2QsYUFBYSx3RUFDYixlQUFlLDBHQUNmLGdCQUFnQixtR0FDaEIsdUJBQXVCLHVIQUN2QixPQUFPLDJKQUNQLFNBQVMsK09BQ1QsYUFBYTs7NEZBa1ZKLG9CQUFvQjtrQkFoV2hDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsdUJBQXVCO3dCQUN2QixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLHVCQUF1Qjt3QkFDdkIsT0FBTzt3QkFDUCxTQUFTO3dCQUNULGFBQWE7cUJBQ2QsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMktUO3dEQW9MUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaXRsZUNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7XG4gIGJ1c2luZXNzT3V0bGluZSxcbiAgY2hldnJvbkZvcndhcmRPdXRsaW5lLFxuICBtYWlsT3V0bGluZSxcbiAgcGVvcGxlT3V0bGluZSxcbiAgc3dhcEhvcml6b250YWxPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDdGFDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2N0YS1jYXJkL2N0YS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgSW52aXRhdGlvbkNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvaW52aXRhdGlvbi1jYXJkL2ludml0YXRpb24tY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uR3JvdXBNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9idXR0b24tZ3JvdXAvdHlwZXMnO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgaW50ZXJwcmV0RXJyb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvaW50ZXJwcmV0LWVycm9yJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiwgUGVuZGluZ0ludml0YXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgY29ubmVjdFBhZ2VSZWZyZXNoIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcGFnZS1yZWZyZXNoL3BhZ2UtcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBDcmVhdGVPcmdNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2NyZWF0ZS1vcmctbW9kYWwvY3JlYXRlLW9yZy1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlQWNjb3VudE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vZGVsZXRlLWFjY291bnQtbW9kYWwvZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB7IE9yZ0luZm9TaGVldENvbXBvbmVudCB9IGZyb20gJy4uL29yZy1pbmZvLXNoZWV0L29yZy1pbmZvLXNoZWV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTd2l0Y2hPcmdNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL3N3aXRjaC1vcmctbW9kYWwvc3dpdGNoLW9yZy1tb2RhbC5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBBY2NvdW50Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQUNDT1VOVF9WSUVXX0kxOE4gfSBmcm9tICcuL2FjY291bnQtdmlldy5pMThuJztcblxuYWRkSWNvbnMoeyBwZW9wbGVPdXRsaW5lLCBidXNpbmVzc091dGxpbmUsIGNoZXZyb25Gb3J3YXJkT3V0bGluZSwgc3dhcEhvcml6b250YWxPdXRsaW5lLCBtYWlsT3V0bGluZSB9KTtcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuQWNjb3VudCc7XG5jb25zdCBERUZBVUxUX01BTkFHRV9PUkdfUk9VVEUgPSAnL2FwcC9zZXR0aW5ncy9vcmdhbml6YXRpb24nO1xuXG4vKipcbiAqIGB2YWwtYWNjb3VudC12aWV3YCDigJQgdmlzdGEgQ3VlbnRhIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuXG4gKiBQcm9tb3ZpZGEgZGVzZGUgYHNob3djYXNlYCBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS4gUmXDum5lOlxuICogIC0gKipJbnZpdGFjaW9uZXMgcGVuZGllbnRlcyoqIOKAlCBhY2VwdGFyIC8gcmVjaGF6YXIgKGB2YWwtaW52aXRhdGlvbi1jYXJkYCkuXG4gKiAgLSAqKk9yZ2FuaXphY2lvbmVzKiog4oCUIGNhcmQgZGUgb3JnIGFjdGl2YSArIGVtcHR5LWNhcmQgKyBDVEEgXCJOdWV2YSBvcmdcIlxuICogICAgKG1vZGFsIGB2YWwtY3JlYXRlLW9yZy1tb2RhbGApICsgXCJWZXIgdG9kYXNcIiAobW9kYWwgYHZhbC1zd2l0Y2gtb3JnLW1vZGFsYCkuXG4gKiAgLSAqKkNlcnJhciBlc3RhIHNlc2nDs24qKiDigJQgYGF1dGgubG9nb3V0V2l0aENvbmZpcm1hdGlvbigpYC5cbiAqICAtICoqRWxpbWluYXIgY3VlbnRhKiog4oCUIG1vZGFsIGB2YWwtZGVsZXRlLWFjY291bnQtbW9kYWxgLlxuICpcbiAqIE5PIHJlbmRlcml6YSBpb24tY29udGVudCDigJQgdml2ZSBkZW50cm8gZGUgdmFsLXBhZ2Utd3JhcHBlci4gTm8gdXNhIGRlZXAtbGlua3M7XG4gKiBgQWN0aXZhdGVkUm91dGVgIHNlIGlueWVjdGEgYHsgb3B0aW9uYWw6IHRydWUgfWAgc29sbyBwYXJhIGxlZXIgZWwgcm91dGUgZGF0YVxuICogZGUgY29uZmlnLiBMYSBuYXZlZ2FjacOzbiBhIGxhIG9yZyByb3V0ZSB2YSBwb3IgYE5hdmlnYXRpb25TZXJ2aWNlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBjb25maWd1cmFkbyAoZGVmYXVsdCBgU2V0dGluZ3MuQWNjb3VudGApLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYWNjb3VudC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDdGFDYXJkQ29tcG9uZW50LFxuICAgIEludml0YXRpb25DYXJkQ29tcG9uZW50LFxuICAgIElvbkljb24sXG4gICAgSW9uQnV0dG9uLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgY29udGVudDogcGFnZVRpdGxlKCkgfVwiIC8+XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhZ2VEZXNjcmlwdGlvbigpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UGVuZGluZ0ludml0ZXMgJiYgcGVuZGluZ0ludml0ZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdwZW5kaW5nSW52aXRlc1RpdGxlJyksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBmb3IgKGludml0ZSBvZiBwZW5kaW5nSW52aXRlcygpOyB0cmFjayBpbnZpdGUub3JnSWQpIHtcbiAgICAgICAgICA8dmFsLWludml0YXRpb24tY2FyZFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgdG9rZW46IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgb3JnTmFtZTogaW52aXRlLm9yZ05hbWUsXG4gICAgICAgICAgICAgIGludml0ZXJOYW1lOiBpbnZpdGUuaW52aXRlck5hbWUsXG4gICAgICAgICAgICAgIHJvbGU6IGludml0ZS5yb2xlSWQsXG4gICAgICAgICAgICAgIGFjY2VwdGluZzogaW52aXRlQWNjZXB0aW5nKCkgPT09IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhaW52aXRlQWNjZXB0aW5nKCksXG4gICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0dCgnYWNjZXB0JyksXG4gICAgICAgICAgICAgIGRlY2xpbmVMYWJlbDogdHQoJ2RlY2xpbmUnKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG9uQWNjZXB0KT1cImFjY2VwdFBlbmRpbmdJbnZpdGUoaW52aXRlKVwiXG4gICAgICAgICAgICAob25EZWNsaW5lKT1cImRlY2xpbmVQZW5kaW5nSW52aXRlKGludml0ZSlcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dPcmdhbml6YXRpb25zKSB7XG4gICAgICAgIDwhLS0gT3JnYW5pemF0aW9ucyAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvcmdzVGl0bGUoKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChvcmdzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib25Td2l0Y2hBY2NvdW50KClcIj5cbiAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc1ZpZXdBbGwnKSB9fVxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgQGlmIChvcmdzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2xpc3QnLCByb3dzOiAzIH1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAob3Jnc0Vycm9yU3RhdGUoKSkge1xuICAgICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJvcmdzRXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmcoKTsgYXMgb3JnKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkIG9yZy1jYXJkLS1hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJidXNpbmVzcy1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX25hbWVcIj57eyBvcmcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX21ldGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWxhYmVsXCI+e3sgdHQoJ29yZ3NMYWJlbFR5cGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JnVHlwZUxhYmVsKG9yZy50eXBlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmdSb2xlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1sYWJlbFwiPnt7IHR0KCdvcmdzTGFiZWxSb2xlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWN0aXZlT3JnUm9sZSgpIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWxhYmVsXCI+e3sgdHQoJ29yZ3NMYWJlbFN0YXR1cycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc1N0YXR1c0FjdGl2ZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX2VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJvbk1hbmFnZU9yZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc01hbmFnZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChvcmdzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZS1vdXRsaW5lXCIgY2xhc3M9XCJvcmdzLWVtcHR5LWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fdGV4dFwiPnt7IG9yZ3NFbXB0eSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkX19saW5rXCIgKGNsaWNrKT1cIm9uTW9yZUluZm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcmdzTW9yZUluZm8oKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dOZXdPcmdDdGEpIHtcbiAgICAgICAgICAgICAgICA8IS0tIE51ZXZhIG9yZ2FuaXphY2lvbjogQ1RBIGNhcmQgY29uIHRpdHVsbywgc3VidGl0dWxvIHkgYm90b24gLS0+XG4gICAgICAgICAgICAgICAgPHZhbC1jdGEtY2FyZCBjbGFzcz1cIm9yZy1uZXctY3RhLWNhcmRcIiBbcHJvcHNdPVwibmV3T3JnQ3RhUHJvcHMoKVwiIChvbkFjdGlvbik9XCJvbk5ld09yZygpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TG9nb3V0KSB7XG4gICAgICAgIDwhLS0gTG9nb3V0IHRoaXMgc2Vzc2lvbiAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGxvZ291dFRpdGxlKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxvZ291dEhpbnQoKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImxvZ291dEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Mb2dvdXQoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0RlbGV0ZUFjY291bnQpIHtcbiAgICAgICAgPCEtLSBEZWxldGUgYWNjb3VudCAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGRhbmdlckRlbGV0ZVRpdGxlKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhbmdlckRlbGV0ZUhpbnQoKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImRlbGV0ZUFjY291bnRCdXR0b25Qcm9wcygpXCIgKG9uQ2xpY2spPVwib25EZWxldGVBY2NvdW50KClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuICAgICAgLnBhZ2UtaGVhZGVyIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgcGFkZGluZzogMTZweCAwO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gKyAuc2V0dGluZ3Mtc2VjdGlvbiB7XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS12YWwtYm9yZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTtcbiAgICAgIH1cbiAgICAgIC5zZXR0aW5ncy1zZWN0aW9uIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgICB9XG4gICAgICAucm93LWFjdGlvbnMtLWdhcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1oZWFkZXItcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgICAgLm9yZy1uZXctY3RhLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5LXRpbnQsIHJnYmEodmFyKC0taW9uLWNvbG9yLXNlY29uZGFyeS1yZ2IsIDEzMCwgMTAxLCAyMDgpLCAwLjIpKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICAgICAgcGFkZGluZzogMThweCAxNnB4IDEycHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZF9fbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmRfX2ljb24ge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZF9fdGV4dCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX19saW5rIHtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgfVxuICAgICAgLm9yZ3MtbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICBiYWNrZ3JvdW5kIDAuMTVzLFxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjE1cztcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZDphY3RpdmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc1O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkLS1hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSA4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5vcmctY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAub3JnLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5vcmctY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLm9yZy1jYXJkLS1hY3RpdmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLm9yZy1jYXJkLS1hY3RpdmUsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5vcmctY2FyZC0tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxNSUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9faWNvbiB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxNSUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX2JvZHkge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbWV0YSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMXB4O1xuICAgICAgICBtYXJnaW4tdG9wOiAzcHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX21ldGEtaXRlbSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbWV0YS1sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19lbmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWNjb3VudFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgb3JnU2VydmljZSA9IGluamVjdChPcmdTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogQ29uZmlnIHbDrWEgQElucHV0IChvYmplY3QtZmlyc3QpLiBTaSBubyBzZSBwYXNhLCBzZSBjYWUgYWwgcm91dGUgZGF0YVxuICAgKiBgYWNjb3VudENvbmZpZ2AgKHBvYmxhZG8gcG9yIGBwcm92aWRlVmFsdGVjaEFjY291bnRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWNjb3VudFZpZXdDb25maWc7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxcbiAgICBSZXF1aXJlZDxPbWl0PEFjY291bnRWaWV3Q29uZmlnLCAnb25PcmdTd2l0Y2hlZCcgfCAnb25PcmdDcmVhdGVkJyB8ICdvbkxvZ2dlZE91dCcgfCAnb25BY2NvdW50RGVsZXRlZCc+PiAmXG4gICAgICBQaWNrPEFjY291bnRWaWV3Q29uZmlnLCAnb25PcmdTd2l0Y2hlZCcgfCAnb25PcmdDcmVhdGVkJyB8ICdvbkxvZ2dlZE91dCcgfCAnb25BY2NvdW50RGVsZXRlZCc+XG4gID4oKCkgPT4ge1xuICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhY2NvdW50Q29uZmlnJ10gPz8ge30pIGFzIEFjY291bnRWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogQWNjb3VudFZpZXdDb25maWcgPSB7IC4uLmZyb21Sb3V0ZSwgLi4uKHRoaXMuY29uZmlnID8/IHt9KSB9O1xuICAgIHJldHVybiB7XG4gICAgICBzaG93UGVuZGluZ0ludml0ZXM6IG1lcmdlZC5zaG93UGVuZGluZ0ludml0ZXMgPz8gdHJ1ZSxcbiAgICAgIHNob3dPcmdhbml6YXRpb25zOiBtZXJnZWQuc2hvd09yZ2FuaXphdGlvbnMgPz8gdHJ1ZSxcbiAgICAgIHNob3dOZXdPcmdDdGE6IG1lcmdlZC5zaG93TmV3T3JnQ3RhID8/IHRydWUsXG4gICAgICBzaG93TG9nb3V0OiBtZXJnZWQuc2hvd0xvZ291dCA/PyB0cnVlLFxuICAgICAgc2hvd0RlbGV0ZUFjY291bnQ6IG1lcmdlZC5zaG93RGVsZXRlQWNjb3VudCA/PyB0cnVlLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICBtYW5hZ2VPcmdSb3V0ZTogbWVyZ2VkLm1hbmFnZU9yZ1JvdXRlID8/IERFRkFVTFRfTUFOQUdFX09SR19ST1VURSxcbiAgICAgIG9uT3JnU3dpdGNoZWQ6IG1lcmdlZC5vbk9yZ1N3aXRjaGVkLFxuICAgICAgb25PcmdDcmVhdGVkOiBtZXJnZWQub25PcmdDcmVhdGVkLFxuICAgICAgb25Mb2dnZWRPdXQ6IG1lcmdlZC5vbkxvZ2dlZE91dCxcbiAgICAgIG9uQWNjb3VudERlbGV0ZWQ6IG1lcmdlZC5vbkFjY291bnREZWxldGVkLFxuICAgIH07XG4gIH0pO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBvcmdzID0gc2lnbmFsPE9yZ2FuaXphdGlvbltdPihbXSk7XG4gIHJlYWRvbmx5IG9yZ3NMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcmdzRXJyb3IgPSBzaWduYWw8dW5rbm93bj4obnVsbCk7XG5cbiAgcmVhZG9ubHkgb3Jnc0Vycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGEgfCBudWxsPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLm9yZ3NFcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgb2ZmbGluZTogdGhpcy50dCgnb3Jnc09mZmxpbmVUaXRsZScpLFxuICAgICAgICBlcnJvcjogdGhpcy50dCgnb3Jnc0Vycm9yVGl0bGUnKSxcbiAgICAgIH0sXG4gICAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnR0KCdvcmdzT2ZmbGluZUhpbnQnKSxcbiAgICAgICAgZXJyb3I6IGludGVycHJldEVycm9yKGVycikubWVzc2FnZSxcbiAgICAgIH0sXG4gICAgICByZXRyeUxhYmVsOiB0aGlzLnR0KCdvcmdzUmV0cnknKSxcbiAgICAgIG9uUmV0cnk6ICgpID0+IHRoaXMubG9hZE9yZ3MoKSxcbiAgICAgIHJldHJ5aW5nOiB0aGlzLm9yZ3NMb2FkaW5nKCksXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHBlbmRpbmdJbnZpdGVzID0gc2lnbmFsPFBlbmRpbmdJbnZpdGF0aW9uW10+KFtdKTtcbiAgcmVhZG9ubHkgcGVuZGluZ0ludml0ZXNMb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgaW52aXRlQWNjZXB0aW5nID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHBhZ2VUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgcGFnZURlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgncGFnZURlc2NyaXB0aW9uJykpO1xuICByZWFkb25seSBvcmdzVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzVGl0bGUnKSk7XG4gIHJlYWRvbmx5IG9yZ3NFbXB0eSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NFbXB0eScpKTtcbiAgcmVhZG9ubHkgb3Jnc01vcmVJbmZvID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc01vcmVJbmZvJykpO1xuICByZWFkb25seSBvcmdzTmV3UXVlc3Rpb24gPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzTmV3UXVlc3Rpb24nKSk7XG4gIHJlYWRvbmx5IG9yZ3NOZXdIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc05ld0hpbnQnKSk7XG4gIHJlYWRvbmx5IG5ld09yZ0N0YVByb3BzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICB0aXRsZTogdGhpcy50dCgnb3Jnc05ld1F1ZXN0aW9uJyksXG4gICAgZGVzY3JpcHRpb246IHRoaXMudHQoJ29yZ3NOZXdIaW50JyksXG4gICAgcGFkZGluZzogJzE2cHgnLFxuICAgIGJvcmRlclJhZGl1czogJzE0cHgnLFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHBvc2l0aW9uOiAncmlnaHQnLFxuICAgICAgY29sdW1uZWQ6IGZhbHNlLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdGhpcy50dCgnb3Jnc05ld0N0YScpLFxuICAgICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgICAgZmlsbDogJ3NvbGlkJyxcbiAgICAgICAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICAgICAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgICAgc3RhdGU6ICdFTkFCTEVEJyxcbiAgICAgICAgICB0b2tlbjogJ2FjY291bnQtbmV3LW9yZycsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0gYXMgQnV0dG9uR3JvdXBNZXRhZGF0YSxcbiAgfSkpO1xuICByZWFkb25seSBsb2dvdXRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2xvZ291dFRpdGxlJykpO1xuICByZWFkb25seSBsb2dvdXRIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnbG9nb3V0SGludCcpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJUaXRsZScpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyRGVsZXRlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJEZWxldGVUaXRsZScpKTtcbiAgcmVhZG9ubHkgZGFuZ2VyRGVsZXRlSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2RhbmdlckRlbGV0ZUhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdSA9IHRoaXMuYXV0aC51c2VyKCkgYXMge1xuICAgICAgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7XG4gICAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gICAgfSB8IG51bGw7XG4gICAgcmV0dXJuIHU/LmFjdGl2ZU9yZ0lkID8/IHU/LmFjdGl2ZU9yZyA/PyAnJztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnUm9sZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByb2xlcyA9ICh0aGlzLmF1dGggYXMgdW5rbm93biBhcyB7IHJvbGVzPzogKCkgPT4gc3RyaW5nW10gfSkucm9sZXM/LigpID8/IFtdO1xuICAgIHJldHVybiByb2xlc1swXSA/PyBudWxsO1xuICB9KTtcblxuICByZWFkb25seSBhY3RpdmVPcmcgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yZ3MoKS5maW5kKG8gPT4gby5pZCA9PT0gdGhpcy5hY3RpdmVPcmdJZCgpKSA/PyBudWxsKTtcblxuICByZWFkb25seSBsb2dvdXRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2xvZ291dCcpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2FjY291bnQtbG9nb3V0JyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGRlbGV0ZUFjY291bnRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ2RhbmdlckRlbGV0ZUN0YScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICB0b2tlbjogJ2FjY291bnQtZGVsZXRlJyxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHN3aXRjaEFjY291bnRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ3N3aXRjaEFjY291bnRDdGEnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdhY2NvdW50LXN3aXRjaCcsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKG5zKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChucywgQUNDT1VOVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvYWRPcmdzKCk7XG4gICAgdGhpcy5sb2FkUGVuZGluZ0ludml0ZXMoKTtcbiAgICBjb25uZWN0UGFnZVJlZnJlc2goYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoW3RoaXMubG9hZE9yZ3MoKSwgdGhpcy5sb2FkUGVuZGluZ0ludml0ZXMoKV0pO1xuICAgIH0pO1xuICB9XG5cbiAgb3JnVHlwZUxhYmVsKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgUEVSU09OQUw6IHRoaXMudHQoJ29yZ3NUeXBlUGVyc29uYWwnKSxcbiAgICAgIFBSSVZBVEU6IHRoaXMudHQoJ29yZ3NUeXBlUHJpdmF0ZScpLFxuICAgICAgUFVCTElDOiB0aGlzLnR0KCdvcmdzVHlwZVB1YmxpYycpLFxuICAgICAgQlVTSU5FU1M6IHRoaXMudHQoJ29yZ3NUeXBlQnVzaW5lc3MnKSxcbiAgICB9O1xuICAgIHJldHVybiBtYXBbdHlwZV0gPz8gdHlwZTtcbiAgfVxuXG4gIG9uU3dpdGNoQWNjb3VudCgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBTd2l0Y2hPcmdNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIGkxOG5OYW1lc3BhY2U6ICdTZXR0aW5ncy5Td2l0Y2hPcmcnLFxuICAgICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdzKCk7XG4gICAgICAgICAgdGhpcy5sb2FkUGVuZGluZ0ludml0ZXMoKTtcbiAgICAgICAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25PcmdTd2l0Y2hlZD8uKCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgb25EZWxldGVBY2NvdW50KCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IERlbGV0ZUFjY291bnRNb2RhbENvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudFByb3BzOiB7XG4gICAgICAgIGkxOG5OYW1lc3BhY2U6ICdTZXR0aW5ncy5EZWxldGVBY2NvdW50JyxcbiAgICAgIH0sXG4gICAgICBicmVha3BvaW50czoge1xuICAgICAgICBicmVha3BvaW50czogWzAsIDAuODVdLFxuICAgICAgICBpbml0aWFsQnJlYWtwb2ludDogMC44NSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IGZhbHNlLFxuICAgIH0pO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbkFjY291bnREZWxldGVkPy4oKTtcbiAgfVxuXG4gIG9uTWFuYWdlT3JnKCk6IHZvaWQge1xuICAgIHRoaXMubmF2Lm5hdmlnYXRlQnlVcmwodGhpcy5yZXNvbHZlZENvbmZpZygpLm1hbmFnZU9yZ1JvdXRlKTtcbiAgfVxuXG4gIG9uTmV3T3JnKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih7XG4gICAgICBjb21wb25lbnQ6IENyZWF0ZU9yZ01vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogJ0NyZWF0ZU9yZ01vZGFsJyxcbiAgICAgICAgb25TdWNjZXNzOiAobmV3T3JnOiBPcmdhbml6YXRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdzKCk7XG4gICAgICAgICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uT3JnQ3JlYXRlZD8uKG5ld09yZyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjkyXSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuOTIsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgb25Nb3JlSW5mbygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBPcmdJbmZvU2hlZXRDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICB0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9UaXRsZScpLFxuICAgICAgICBzdWJ0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9TdWJ0aXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnR0KCdvcmdzSW5mb0NvbnRlbnQnKSxcbiAgICAgICAgY2xvc2VMYWJlbDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICBjbG9zZVByb3BzOiB7XG4gICAgICAgICAgdGV4dDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgb25Mb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoLmxvZ291dFdpdGhDb25maXJtYXRpb24oKTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Mb2dnZWRPdXQ/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGVuZGluZ0ludml0ZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMub3JnU2VydmljZVxuICAgICAgICAuZ2V0UGVuZGluZ0ludml0YXRpb25zKClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlcy5zZXQoaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYWNjZXB0UGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5hY2NlcHRJbnZpdGF0aW9uKGludml0ZS5vcmdJZClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdpbnZpdGVBY2NlcHRlZCcpLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXMudXBkYXRlKGxpc3QgPT4gbGlzdC5maWx0ZXIoaSA9PiBpLm9yZ0lkICE9PSBpbnZpdGUub3JnSWQpKTtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuYWNjZXB0UGVuZGluZ0ludml0ZScgfSk7XG4gICAgICAgICAgdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpLFxuICAgICAgfSk7XG4gIH1cblxuICBkZWNsaW5lUGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5kZWNsaW5lSW52aXRhdGlvbihpbnZpdGUub3JnSWQpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnaW52aXRlRGVjbGluZWQnKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGkgPT4gaS5vcmdJZCAhPT0gaW52aXRlLm9yZ0lkKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuZGVjbGluZVBlbmRpbmdJbnZpdGUnIH0pO1xuICAgICAgICAgIHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm9yZ3NMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ3NFcnJvci5zZXQobnVsbCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5vcmdTZXJ2aWNlLmxpc3RNeU9yZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBvcmdzID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICAgICAgICB0aGlzLm9yZ3Muc2V0KFsuLi5vcmdzXS5zb3J0KChhLCBiKSA9PiAoYS5pZCA9PT0gYWN0aXZlSWQgPyAtMSA6IGIuaWQgPT09IGFjdGl2ZUlkID8gMSA6IDApKSk7XG4gICAgICAgICAgdGhpcy5vcmdzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5vcmdzRXJyb3Iuc2V0KGVycik7XG4gICAgICAgICAgdGhpcy5vcmdzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
|
|
736
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvYWNjb3VudC12aWV3L2FjY291bnQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGFBQWEsRUFDYixxQkFBcUIsR0FDdEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFeEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FB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QkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLDJCQUEyQjt3QkFDM0IsT0FBTzt3QkFDUCxTQUFTO3dCQUNULGFBQWE7cUJBQ2QsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzTFQ7d0RBb0xRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRpdGxlQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgYnVzaW5lc3NPdXRsaW5lLFxuICBjaGV2cm9uRm9yd2FyZE91dGxpbmUsXG4gIG1haWxPdXRsaW5lLFxuICBwZW9wbGVPdXRsaW5lLFxuICBzd2FwSG9yaXpvbnRhbE91dGxpbmUsXG59IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEN0YUNhcmRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY3RhLWNhcmQvY3RhLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9lbXB0eS1zdGF0ZS90eXBlcyc7XG5pbXBvcnQgeyBjcmVhdGVFcnJvclN0YXRlUHJvcHMgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZmFjdG9yeSc7XG5pbXBvcnQgeyBJbnZpdGF0aW9uQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9pbnZpdGF0aW9uLWNhcmQvaW52aXRhdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2J1dHRvbi1ncm91cC90eXBlcyc7XG5pbXBvcnQgeyBTa2VsZXRvbkxheW91dENvbXBvbmVudCB9IGZyb20gJy4uL3NrZWxldG9uLWxheW91dC9za2VsZXRvbi1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7IEJ1dHRvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBpbnRlcnByZXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy9pbnRlcnByZXQtZXJyb3InO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnYW5pemF0aW9uLCBQZW5kaW5nSW52aXRhdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IENyZWF0ZU9yZ01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vY3JlYXRlLW9yZy1tb2RhbC9jcmVhdGUtb3JnLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVBY2NvdW50TW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9kZWxldGUtYWNjb3VudC1tb2RhbC9kZWxldGUtYWNjb3VudC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3JnSW5mb1NoZWV0Q29tcG9uZW50IH0gZnJvbSAnLi4vb3JnLWluZm8tc2hlZXQvb3JnLWluZm8tc2hlZXQuY29tcG9uZW50JztcbmltcG9ydCB7IFN3aXRjaE9yZ01vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vc3dpdGNoLW9yZy1tb2RhbC9zd2l0Y2gtb3JnLW1vZGFsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IEFjY291bnRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQ0NPVU5UX1ZJRVdfSTE4TiB9IGZyb20gJy4vYWNjb3VudC12aWV3LmkxOG4nO1xuXG5hZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIGJ1c2luZXNzT3V0bGluZSwgY2hldnJvbkZvcndhcmRPdXRsaW5lLCBzd2FwSG9yaXpvbnRhbE91dGxpbmUsIG1haWxPdXRsaW5lIH0pO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5BY2NvdW50JztcbmNvbnN0IERFRkFVTFRfTUFOQUdFX09SR19ST1VURSA9ICcvYXBwL3NldHRpbmdzL29yZ2FuaXphdGlvbic7XG5cbi8qKlxuICogYHZhbC1hY2NvdW50LXZpZXdgIOKAlCB2aXN0YSBDdWVudGEgZnVsbC1mZWF0dXJlIGF1dG9jb250ZW5pZGEgKG9yZ2FuaXNtKS5cbiAqIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLiBSZcO6bmU6XG4gKiAgLSAqKkludml0YWNpb25lcyBwZW5kaWVudGVzKiog4oCUIGFjZXB0YXIgLyByZWNoYXphciAoYHZhbC1pbnZpdGF0aW9uLWNhcmRgKS5cbiAqICAtICoqT3JnYW5pemFjaW9uZXMqKiDigJQgY2FyZCBkZSBvcmcgYWN0aXZhICsgZW1wdHktY2FyZCArIENUQSBcIk51ZXZhIG9yZ1wiXG4gKiAgICAobW9kYWwgYHZhbC1jcmVhdGUtb3JnLW1vZGFsYCkgKyBcIlZlciB0b2Rhc1wiIChtb2RhbCBgdmFsLXN3aXRjaC1vcmctbW9kYWxgKS5cbiAqICAtICoqQ2VycmFyIGVzdGEgc2VzacOzbioqIOKAlCBgYXV0aC5sb2dvdXRXaXRoQ29uZmlybWF0aW9uKClgLlxuICogIC0gKipFbGltaW5hciBjdWVudGEqKiDigJQgbW9kYWwgYHZhbC1kZWxldGUtYWNjb3VudC1tb2RhbGAuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBObyB1c2EgZGVlcC1saW5rcztcbiAqIGBBY3RpdmF0ZWRSb3V0ZWAgc2UgaW55ZWN0YSBgeyBvcHRpb25hbDogdHJ1ZSB9YCBzb2xvIHBhcmEgbGVlciBlbCByb3V0ZSBkYXRhXG4gKiBkZSBjb25maWcuIExhIG5hdmVnYWNpw7NuIGEgbGEgb3JnIHJvdXRlIHZhIHBvciBgTmF2aWdhdGlvblNlcnZpY2VgLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5BY2NvdW50YCkuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hY2NvdW50LXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFNrZWxldG9uTGF5b3V0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgQnV0dG9uQ29tcG9uZW50LFxuICAgIEN0YUNhcmRDb21wb25lbnQsXG4gICAgSW52aXRhdGlvbkNhcmRDb21wb25lbnQsXG4gICAgQ3JlYXRlT3JnTW9kYWxDb21wb25lbnQsXG4gICAgRGVsZXRlQWNjb3VudE1vZGFsQ29tcG9uZW50LFxuICAgIElvbkljb24sXG4gICAgSW9uQnV0dG9uLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2VcIj5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJwYWdlLWhlYWRlclwiPlxuICAgICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJywgY29udGVudDogcGFnZVRpdGxlKCkgfVwiIC8+XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHBhZ2VEZXNjcmlwdGlvbigpLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9oZWFkZXI+XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93UGVuZGluZ0ludml0ZXMgJiYgcGVuZGluZ0ludml0ZXMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdwZW5kaW5nSW52aXRlc1RpdGxlJyksXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIEBmb3IgKGludml0ZSBvZiBwZW5kaW5nSW52aXRlcygpOyB0cmFjayBpbnZpdGUub3JnSWQpIHtcbiAgICAgICAgICA8dmFsLWludml0YXRpb24tY2FyZFxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgdG9rZW46IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgb3JnTmFtZTogaW52aXRlLm9yZ05hbWUsXG4gICAgICAgICAgICAgIGludml0ZXJOYW1lOiBpbnZpdGUuaW52aXRlck5hbWUsXG4gICAgICAgICAgICAgIHJvbGU6IGludml0ZS5yb2xlSWQsXG4gICAgICAgICAgICAgIGFjY2VwdGluZzogaW52aXRlQWNjZXB0aW5nKCkgPT09IGludml0ZS5vcmdJZCxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6ICEhaW52aXRlQWNjZXB0aW5nKCksXG4gICAgICAgICAgICAgIGFjY2VwdExhYmVsOiB0dCgnYWNjZXB0JyksXG4gICAgICAgICAgICAgIGRlY2xpbmVMYWJlbDogdHQoJ2RlY2xpbmUnKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKG9uQWNjZXB0KT1cImFjY2VwdFBlbmRpbmdJbnZpdGUoaW52aXRlKVwiXG4gICAgICAgICAgICAob25EZWNsaW5lKT1cImRlY2xpbmVQZW5kaW5nSW52aXRlKGludml0ZSlcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dPcmdhbml6YXRpb25zKSB7XG4gICAgICAgIDwhLS0gT3JnYW5pemF0aW9ucyAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24taGVhZGVyLXJvd1wiPlxuICAgICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBvcmdzVGl0bGUoKSxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgQGlmIChvcmdzKCkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwib3V0bGluZVwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwib25Td2l0Y2hBY2NvdW50KClcIj5cbiAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc1ZpZXdBbGwnKSB9fVxuICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tYm9keVwiPlxuICAgICAgICAgICAgQGlmIChvcmdzTG9hZGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtc2tlbGV0b24tbGF5b3V0IFtwcm9wc109XCJ7IHByZXNldDogJ2xpc3QnLCByb3dzOiAzIH1cIiAvPlxuICAgICAgICAgICAgfSBAZWxzZSBpZiAob3Jnc0Vycm9yU3RhdGUoKSkge1xuICAgICAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJvcmdzRXJyb3JTdGF0ZSgpIVwiIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmcoKTsgYXMgb3JnKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtbGlzdFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkIG9yZy1jYXJkLS1hY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZy1jYXJkX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJidXNpbmVzcy1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcmctY2FyZF9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX25hbWVcIj57eyBvcmcubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX21ldGFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWxhYmVsXCI+e3sgdHQoJ29yZ3NMYWJlbFR5cGUnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3JnVHlwZUxhYmVsKG9yZy50eXBlKSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVPcmdSb2xlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJvcmctY2FyZF9fbWV0YS1sYWJlbFwiPnt7IHR0KCdvcmdzTGFiZWxSb2xlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWN0aXZlT3JnUm9sZSgpIHwgdGl0bGVjYXNlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwib3JnLWNhcmRfX21ldGEtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZy1jYXJkX19tZXRhLWxhYmVsXCI+e3sgdHQoJ29yZ3NMYWJlbFN0YXR1cycpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc1N0YXR1c0FjdGl2ZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3JnLWNhcmRfX2VuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgc2hhcGU9XCJyb3VuZFwiIHNpemU9XCJzbWFsbFwiIChjbGljayk9XCJvbk1hbmFnZU9yZygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0dCgnb3Jnc01hbmFnZScpIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9IEBlbHNlIGlmIChvcmdzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fbWFpblwiPlxuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZS1vdXRsaW5lXCIgY2xhc3M9XCJvcmdzLWVtcHR5LWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9yZ3MtZW1wdHktY2FyZF9fdGV4dFwiPnt7IG9yZ3NFbXB0eSgpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwib3Jncy1lbXB0eS1jYXJkX19saW5rXCIgKGNsaWNrKT1cIm9uTW9yZUluZm8oKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcmdzTW9yZUluZm8oKSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGlmIChyZXNvbHZlZENvbmZpZygpLnNob3dOZXdPcmdDdGEpIHtcbiAgICAgICAgICAgICAgICA8IS0tIE51ZXZhIG9yZ2FuaXphY2lvbjogQ1RBIGNhcmQgY29uIHRpdHVsbywgc3VidGl0dWxvIHkgYm90b24gLS0+XG4gICAgICAgICAgICAgICAgPHZhbC1jdGEtY2FyZCBjbGFzcz1cIm9yZy1uZXctY3RhLWNhcmRcIiBbcHJvcHNdPVwibmV3T3JnQ3RhUHJvcHMoKVwiIChvbkFjdGlvbik9XCJvbk5ld09yZygpXCIgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TG9nb3V0KSB7XG4gICAgICAgIDwhLS0gTG9nb3V0IHRoaXMgc2Vzc2lvbiAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGxvZ291dFRpdGxlKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxvZ291dEhpbnQoKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImxvZ291dEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25Mb2dvdXQoKVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgfVxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd0RlbGV0ZUFjY291bnQpIHtcbiAgICAgICAgPCEtLSBEZWxldGUgYWNjb3VudCAtLT5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGRhbmdlckRlbGV0ZVRpdGxlKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRhbmdlckRlbGV0ZUhpbnQoKSxcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cImRlbGV0ZUFjY291bnRCdXR0b25Qcm9wcygpXCIgKG9uQ2xpY2spPVwib25EZWxldGVBY2NvdW50KClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICAgIDx2YWwtY3JlYXRlLW9yZy1tb2RhbFxuICAgICAgICBbaXNPcGVuXT1cImNyZWF0ZU9yZ09wZW4oKVwiXG4gICAgICAgIFtpMThuTmFtZXNwYWNlXT1cIidDcmVhdGVPcmdNb2RhbCdcIlxuICAgICAgICAoZGlzbWlzc2VkKT1cImNyZWF0ZU9yZ09wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAgIChjcmVhdGVkKT1cIm9uT3JnQ3JlYXRlZCgkZXZlbnQpXCJcbiAgICAgIC8+XG4gICAgICA8dmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsXG4gICAgICAgIFtpc09wZW5dPVwiZGVsZXRlQWNjb3VudE9wZW4oKVwiXG4gICAgICAgIFtpMThuTmFtZXNwYWNlXT1cIidTZXR0aW5ncy5EZWxldGVBY2NvdW50J1wiXG4gICAgICAgIChkaXNtaXNzZWQpPVwiZGVsZXRlQWNjb3VudE9wZW4uc2V0KGZhbHNlKVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZSB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMDtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICB9XG4gICAgICAucGFnZS1oZWFkZXIge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24gdmFsLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnJvdy1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5yb3ctYWN0aW9ucy0tZ2FwIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5zZWN0aW9uLWhlYWRlci1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAub3JnLW5ldy1jdGEtY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1zZWNvbmRhcnktdGludCwgcmdiYSh2YXIoLS1pb24tY29sb3Itc2Vjb25kYXJ5LXJnYiwgMTMwLCAxMDEsIDIwOCksIDAuMikpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4O1xuICAgICAgICBwYWRkaW5nOiAxOHB4IDE2cHggMTJweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX19tYWluIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLm9yZ3MtZW1wdHktY2FyZF9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAub3Jncy1lbXB0eS1jYXJkX190ZXh0IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5vcmdzLWVtcHR5LWNhcmRfX2xpbmsge1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gICAgICB9XG4gICAgICAub3Jncy1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMsXG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkOmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNzU7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmQtLWFjdGl2ZSB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDglLCB0cmFuc3BhcmVudCk7XG4gICAgICB9XG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgLm9yZy1jYXJkLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5vcmctY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm9yZy1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTtcbiAgICAgIH1cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAub3JnLWNhcmQtLWFjdGl2ZSxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAub3JnLWNhcmQtLWFjdGl2ZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLm9yZy1jYXJkLS1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19pY29uIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBiYWNrZ3JvdW5kOiBjb2xvci1taXgoaW4gc3JnYiwgdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpIDE1JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX25hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19tZXRhIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxcHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDNweDtcbiAgICAgIH1cbiAgICAgIC5vcmctY2FyZF9fbWV0YS1pdGVtIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLm9yZy1jYXJkX19tZXRhLWxhYmVsIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gICAgICB9XG4gICAgICAub3JnLWNhcmRfX2VuZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50Vmlld0NvbXBvbmVudCB7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCkuIFNpIG5vIHNlIHBhc2EsIHNlIGNhZSBhbCByb3V0ZSBkYXRhXG4gICAqIGBhY2NvdW50Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWNjb3VudFJvdXRlc2ApLiBgcmVzb2x2ZWRDb25maWdgXG4gICAqIG1lcmdlYSBjb24gbG9zIGRlZmF1bHRzIOKAlCBgQElucHV0YCBnYW5hIHNvYnJlIHJvdXRlIGRhdGEuXG4gICAqL1xuICBASW5wdXQoKSBjb25maWc/OiBBY2NvdW50Vmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFxuICAgIFJlcXVpcmVkPE9taXQ8QWNjb3VudFZpZXdDb25maWcsICdvbk9yZ1N3aXRjaGVkJyB8ICdvbk9yZ0NyZWF0ZWQnIHwgJ29uTG9nZ2VkT3V0JyB8ICdvbkFjY291bnREZWxldGVkJz4+ICZcbiAgICAgIFBpY2s8QWNjb3VudFZpZXdDb25maWcsICdvbk9yZ1N3aXRjaGVkJyB8ICdvbk9yZ0NyZWF0ZWQnIHwgJ29uTG9nZ2VkT3V0JyB8ICdvbkFjY291bnREZWxldGVkJz5cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZnJvbVJvdXRlID0gKHRoaXMucm91dGU/LnNuYXBzaG90LmRhdGFbJ2FjY291bnRDb25maWcnXSA/PyB7fSkgYXMgQWNjb3VudFZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBBY2NvdW50Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHNob3dQZW5kaW5nSW52aXRlczogbWVyZ2VkLnNob3dQZW5kaW5nSW52aXRlcyA/PyB0cnVlLFxuICAgICAgc2hvd09yZ2FuaXphdGlvbnM6IG1lcmdlZC5zaG93T3JnYW5pemF0aW9ucyA/PyB0cnVlLFxuICAgICAgc2hvd05ld09yZ0N0YTogbWVyZ2VkLnNob3dOZXdPcmdDdGEgPz8gdHJ1ZSxcbiAgICAgIHNob3dMb2dvdXQ6IG1lcmdlZC5zaG93TG9nb3V0ID8/IHRydWUsXG4gICAgICBzaG93RGVsZXRlQWNjb3VudDogbWVyZ2VkLnNob3dEZWxldGVBY2NvdW50ID8/IHRydWUsXG4gICAgICBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAgIG1hbmFnZU9yZ1JvdXRlOiBtZXJnZWQubWFuYWdlT3JnUm91dGUgPz8gREVGQVVMVF9NQU5BR0VfT1JHX1JPVVRFLFxuICAgICAgb25PcmdTd2l0Y2hlZDogbWVyZ2VkLm9uT3JnU3dpdGNoZWQsXG4gICAgICBvbk9yZ0NyZWF0ZWQ6IG1lcmdlZC5vbk9yZ0NyZWF0ZWQsXG4gICAgICBvbkxvZ2dlZE91dDogbWVyZ2VkLm9uTG9nZ2VkT3V0LFxuICAgICAgb25BY2NvdW50RGVsZXRlZDogbWVyZ2VkLm9uQWNjb3VudERlbGV0ZWQsXG4gICAgfTtcbiAgfSk7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIHJlc3VlbHRvIChjYXB0dXJhZG8gcGFyYSBsbGFtYWRhcyBuby1yZWFjdGl2YXMpLiAqL1xuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIHJlYWRvbmx5IG9yZ3MgPSBzaWduYWw8T3JnYW5pemF0aW9uW10+KFtdKTtcbiAgcmVhZG9ubHkgb3Jnc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IG9yZ3NFcnJvciA9IHNpZ25hbDx1bmtub3duPihudWxsKTtcblxuICByZWFkb25seSBvcmdzRXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMub3Jnc0Vycm9yKCk7XG4gICAgaWYgKCFlcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoZXJyLCB7XG4gICAgICB0aXRsZToge1xuICAgICAgICBvZmZsaW5lOiB0aGlzLnR0KCdvcmdzT2ZmbGluZVRpdGxlJyksXG4gICAgICAgIGVycm9yOiB0aGlzLnR0KCdvcmdzRXJyb3JUaXRsZScpLFxuICAgICAgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAgIG9mZmxpbmU6IHRoaXMudHQoJ29yZ3NPZmZsaW5lSGludCcpLFxuICAgICAgICBlcnJvcjogaW50ZXJwcmV0RXJyb3IoZXJyKS5tZXNzYWdlLFxuICAgICAgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudHQoJ29yZ3NSZXRyeScpLFxuICAgICAgb25SZXRyeTogKCkgPT4gdGhpcy5sb2FkT3JncygpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMub3Jnc0xvYWRpbmcoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgY3JlYXRlT3JnT3BlbiA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRlbGV0ZUFjY291bnRPcGVuID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBwZW5kaW5nSW52aXRlcyA9IHNpZ25hbDxQZW5kaW5nSW52aXRhdGlvbltdPihbXSk7XG4gIHJlYWRvbmx5IHBlbmRpbmdJbnZpdGVzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGludml0ZUFjY2VwdGluZyA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBwYWdlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdwYWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHBhZ2VEZXNjcmlwdGlvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ3BhZ2VEZXNjcmlwdGlvbicpKTtcbiAgcmVhZG9ubHkgb3Jnc1RpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc1RpdGxlJykpO1xuICByZWFkb25seSBvcmdzRW1wdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdvcmdzRW1wdHknKSk7XG4gIHJlYWRvbmx5IG9yZ3NNb3JlSW5mbyA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NNb3JlSW5mbycpKTtcbiAgcmVhZG9ubHkgb3Jnc05ld1F1ZXN0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnb3Jnc05ld1F1ZXN0aW9uJykpO1xuICByZWFkb25seSBvcmdzTmV3SGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ29yZ3NOZXdIaW50JykpO1xuICByZWFkb25seSBuZXdPcmdDdGFQcm9wcyA9IGNvbXB1dGVkKCgpID0+ICh7XG4gICAgdGl0bGU6IHRoaXMudHQoJ29yZ3NOZXdRdWVzdGlvbicpLFxuICAgIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdvcmdzTmV3SGludCcpLFxuICAgIHBhZGRpbmc6ICcxNnB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcxNHB4JyxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBwb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgIGNvbHVtbmVkOiBmYWxzZSxcbiAgICAgIGJ1dHRvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IHRoaXMudHQoJ29yZ3NOZXdDdGEnKSxcbiAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgICAgICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgICAgICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgICAgIHN0YXRlOiAnRU5BQkxFRCcsXG4gICAgICAgICAgdG9rZW46ICdhY2NvdW50LW5ldy1vcmcnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9IGFzIEJ1dHRvbkdyb3VwTWV0YWRhdGEsXG4gIH0pKTtcbiAgcmVhZG9ubHkgbG9nb3V0VGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdsb2dvdXRUaXRsZScpKTtcbiAgcmVhZG9ubHkgbG9nb3V0SGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudHQoJ2xvZ291dEhpbnQnKSk7XG4gIHJlYWRvbmx5IGRhbmdlclRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnZGFuZ2VyVGl0bGUnKSk7XG4gIHJlYWRvbmx5IGRhbmdlckRlbGV0ZVRpdGxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50dCgnZGFuZ2VyRGVsZXRlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IGRhbmdlckRlbGV0ZUhpbnQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnR0KCdkYW5nZXJEZWxldGVIaW50JykpO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ0lkID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHUgPSB0aGlzLmF1dGgudXNlcigpIGFzIHtcbiAgICAgIGFjdGl2ZU9yZ0lkPzogc3RyaW5nO1xuICAgICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAgIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZU9yZ1JvbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3Qgcm9sZXMgPSAodGhpcy5hdXRoIGFzIHVua25vd24gYXMgeyByb2xlcz86ICgpID0+IHN0cmluZ1tdIH0pLnJvbGVzPy4oKSA/PyBbXTtcbiAgICByZXR1cm4gcm9sZXNbMF0gPz8gbnVsbDtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcmdzKCkuZmluZChvID0+IG8uaWQgPT09IHRoaXMuYWN0aXZlT3JnSWQoKSkgPz8gbnVsbCk7XG5cbiAgcmVhZG9ubHkgbG9nb3V0QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdsb2dvdXQnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdhY2NvdW50LWxvZ291dCcsXG4gIH0pKTtcblxuICByZWFkb25seSBkZWxldGVBY2NvdW50QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdkYW5nZXJEZWxldGVDdGEnKSxcbiAgICBjb2xvcjogJ2RhcmsnLFxuICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgc2hhcGU6ICdyb3VuZCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgdG9rZW46ICdhY2NvdW50LWRlbGV0ZScsXG4gIH0pKTtcblxuICByZWFkb25seSBzd2l0Y2hBY2NvdW50QnV0dG9uUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiB0aGlzLnR0KCdzd2l0Y2hBY2NvdW50Q3RhJyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHRva2VuOiAnYWNjb3VudC1zd2l0Y2gnLFxuICB9KSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgbnMgPSB0aGlzLm5zO1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShucykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQobnMsIEFDQ09VTlRfVklFV19JMThOKTtcbiAgICB9XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgbnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG4gICAgdGhpcy5sb2FkT3JncygpO1xuICAgIHRoaXMubG9hZFBlbmRpbmdJbnZpdGVzKCk7XG4gICAgY29ubmVjdFBhZ2VSZWZyZXNoKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmxvYWRPcmdzKCksIHRoaXMubG9hZFBlbmRpbmdJbnZpdGVzKCldKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9yZ1R5cGVMYWJlbCh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFBFUlNPTkFMOiB0aGlzLnR0KCdvcmdzVHlwZVBlcnNvbmFsJyksXG4gICAgICBQUklWQVRFOiB0aGlzLnR0KCdvcmdzVHlwZVByaXZhdGUnKSxcbiAgICAgIFBVQkxJQzogdGhpcy50dCgnb3Jnc1R5cGVQdWJsaWMnKSxcbiAgICAgIEJVU0lORVNTOiB0aGlzLnR0KCdvcmdzVHlwZUJ1c2luZXNzJyksXG4gICAgfTtcbiAgICByZXR1cm4gbWFwW3R5cGVdID8/IHR5cGU7XG4gIH1cblxuICBvblN3aXRjaEFjY291bnQoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHtcbiAgICAgIGNvbXBvbmVudDogU3dpdGNoT3JnTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBpMThuTmFtZXNwYWNlOiAnU2V0dGluZ3MuU3dpdGNoT3JnJyxcbiAgICAgICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkT3JncygpO1xuICAgICAgICAgIHRoaXMubG9hZFBlbmRpbmdJbnZpdGVzKCk7XG4gICAgICAgICAgdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uT3JnU3dpdGNoZWQ/LigpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC44NV0sXG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjg1LFxuICAgICAgICBzaG93SGFuZGxlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGVsZXRlQWNjb3VudCgpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZUFjY291bnRPcGVuLnNldCh0cnVlKTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25BY2NvdW50RGVsZXRlZD8uKCk7XG4gIH1cblxuICBvbk1hbmFnZU9yZygpOiB2b2lkIHtcbiAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKHRoaXMucmVzb2x2ZWRDb25maWcoKS5tYW5hZ2VPcmdSb3V0ZSk7XG4gIH1cblxuICBvbk5ld09yZygpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZU9yZ09wZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgb25PcmdDcmVhdGVkKG5ld09yZzogT3JnYW5pemF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkT3JncygpO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbk9yZ0NyZWF0ZWQ/LihuZXdPcmcpO1xuICB9XG5cbiAgb25Nb3JlSW5mbygpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oe1xuICAgICAgY29tcG9uZW50OiBPcmdJbmZvU2hlZXRDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICB0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9UaXRsZScpLFxuICAgICAgICBzdWJ0aXRsZTogdGhpcy50dCgnb3Jnc0luZm9TdWJ0aXRsZScpLFxuICAgICAgICBib2R5OiB0aGlzLnR0KCdvcmdzSW5mb0NvbnRlbnQnKSxcbiAgICAgICAgY2xvc2VMYWJlbDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICBjbG9zZVByb3BzOiB7XG4gICAgICAgICAgdGV4dDogdGhpcy50dCgnb3Jnc0luZm9DbG9zZScpLFxuICAgICAgICAgIGZpbGw6ICdvdXRsaW5lJyxcbiAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICAgICAgICBleHBhbmQ6ICdibG9jaycsXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgYnJlYWtwb2ludHM6IHtcbiAgICAgICAgYnJlYWtwb2ludHM6IFswLCAwLjg1XSxcbiAgICAgICAgaW5pdGlhbEJyZWFrcG9pbnQ6IDAuODUsXG4gICAgICAgIHNob3dIYW5kbGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgb25Mb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRoLmxvZ291dFdpdGhDb25maXJtYXRpb24oKTtcbiAgICB0aGlzLnJlc29sdmVkQ29uZmlnKCkub25Mb2dnZWRPdXQ/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGVuZGluZ0ludml0ZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgIHRoaXMub3JnU2VydmljZVxuICAgICAgICAuZ2V0UGVuZGluZ0ludml0YXRpb25zKClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogaXRlbXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlcy5zZXQoaXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5wZW5kaW5nSW52aXRlc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYWNjZXB0UGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5hY2NlcHRJbnZpdGF0aW9uKGludml0ZS5vcmdJZClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnR0KCdpbnZpdGVBY2NlcHRlZCcpLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGR1cmF0aW9uOiAzNTAwLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0ludml0ZXMudXBkYXRlKGxpc3QgPT4gbGlzdC5maWx0ZXIoaSA9PiBpLm9yZ0lkICE9PSBpbnZpdGUub3JnSWQpKTtcbiAgICAgICAgICB0aGlzLmxvYWRPcmdzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuYWNjZXB0UGVuZGluZ0ludml0ZScgfSk7XG4gICAgICAgICAgdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5pbnZpdGVBY2NlcHRpbmcuc2V0KG51bGwpLFxuICAgICAgfSk7XG4gIH1cblxuICBkZWNsaW5lUGVuZGluZ0ludml0ZShpbnZpdGU6IFBlbmRpbmdJbnZpdGF0aW9uKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW52aXRlQWNjZXB0aW5nKCkpIHJldHVybjtcbiAgICB0aGlzLmludml0ZUFjY2VwdGluZy5zZXQoaW52aXRlLm9yZ0lkKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5kZWNsaW5lSW52aXRhdGlvbihpbnZpdGUub3JnSWQpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50dCgnaW52aXRlRGVjbGluZWQnKSxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMjUwMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbnZpdGVzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKGkgPT4gaS5vcmdJZCAhPT0gaW52aXRlLm9yZ0lkKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2FjY291bnQuZGVjbGluZVBlbmRpbmdJbnZpdGUnIH0pO1xuICAgICAgICAgIHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHRoaXMuaW52aXRlQWNjZXB0aW5nLnNldChudWxsKSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkT3JncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLm9yZ3NMb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ3NFcnJvci5zZXQobnVsbCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgdGhpcy5vcmdTZXJ2aWNlLmxpc3RNeU9yZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiBvcmdzID0+IHtcbiAgICAgICAgICBjb25zdCBhY3RpdmVJZCA9IHRoaXMuYWN0aXZlT3JnSWQoKTtcbiAgICAgICAgICB0aGlzLm9yZ3Muc2V0KFsuLi5vcmdzXS5zb3J0KChhLCBiKSA9PiAoYS5pZCA9PT0gYWN0aXZlSWQgPyAtMSA6IGIuaWQgPT09IGFjdGl2ZUlkID8gMSA6IDApKSk7XG4gICAgICAgICAgdGhpcy5vcmdzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5vcmdzRXJyb3Iuc2V0KGVycik7XG4gICAgICAgICAgdGhpcy5vcmdzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
|
package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs
CHANGED
|
@@ -237,11 +237,11 @@ export class ChangePasswordModalComponent {
|
|
|
237
237
|
this.toast.show({ message, duration: 3500 });
|
|
238
238
|
}
|
|
239
239
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangePasswordModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
240
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangePasswordModalComponent, isStandalone: true, selector: "val-change-password-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" shape=\"round\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
|
|
240
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChangePasswordModalComponent, isStandalone: true, selector: "val-change-password-modal", inputs: { isOpen: "isOpen" }, outputs: { changed: "changed", dismissed: "dismissed" }, ngImport: i0, template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\" cssClass=\"val-modal-adaptive\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" shape=\"round\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
|
|
241
241
|
}
|
|
242
242
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChangePasswordModalComponent, decorators: [{
|
|
243
243
|
type: Component,
|
|
244
|
-
args: [{ selector: 'val-change-password-modal', standalone: true, imports: [IonButton, IonButtons, IonContent, IonHeader, IonModal, IonSpinner, IonToolbar, FormComponent], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" shape=\"round\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
|
|
244
|
+
args: [{ selector: 'val-change-password-modal', standalone: true, imports: [IonButton, IonButtons, IonContent, IonHeader, IonModal, IonSpinner, IonToolbar, FormComponent], template: "<ion-modal [isOpen]=\"isOpen\" (didDismiss)=\"close()\" cssClass=\"val-modal-adaptive\">\n <ng-template>\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button fill=\"clear\" color=\"dark\" shape=\"round\" (click)=\"close()\">\n <strong>{{ t('close') }}</strong>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <section class=\"modal-form-section\">\n @if (mode() === 'loading') {\n <div class=\"modal-loading\">\n <ion-spinner name=\"crescent\"></ion-spinner>\n </div>\n } @else {\n <val-form [props]=\"formProps()\" (onSubmit)=\"submitHandler($event)\" />\n }\n </section>\n </ion-content>\n </ng-template>\n</ion-modal>\n", styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.modal-loading{display:flex;justify-content:center;padding:40px 0}\n"] }]
|
|
245
245
|
}], propDecorators: { isOpen: [{
|
|
246
246
|
type: Input
|
|
247
247
|
}], changed: [{
|
|
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
249
249
|
}], dismissed: [{
|
|
250
250
|
type: Output
|
|
251
251
|
}] } });
|
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLXBhc3N3b3JkLW1vZGFsL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQWtCLGVBQWUsRUFBNEIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7O0FBSy9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFRSCxNQUFNLE9BQU8sNEJBQTRCO0lBUHpDO1FBUVUsWUFBTyxHQUFHLEtBQUssQ0FBQztRQWtCeEIsZ0ZBQWdGO1FBQ3RFLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdDLGlFQUFpRTtRQUN2RCxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUV2QyxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0IsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFekMsVUFBSyxHQUFHLE1BQU0sQ0FBb0IsU0FBUyxDQUFDLENBQUM7UUFDOUQseUVBQXlFO1FBQ2hFLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXZCLGVBQVUsR0FBRyxNQUFNLENBQWlCLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQU9yRSxjQUFTLEdBQUcsUUFBUSxDQUFlLEdBQUcsRUFBRTtZQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztvQkFDakMsT0FBTyxFQUFFLGtCQUFrQjtvQkFDM0IsYUFBYSxFQUFFLE9BQU87b0JBQ3RCLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQzs0QkFDdEMsS0FBSyxFQUFFLENBQUM7NEJBQ1IsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNuQztxQkFDRjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQzt3QkFDdkYsS0FBSyxFQUFFLFlBQVk7d0JBQ25CLE9BQU8sRUFBRSxtQkFBbUI7cUJBQzdCO29CQUNELEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO2lCQUN6QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztnQkFDakMsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQzt3QkFDekMsS0FBSyxFQUFFLENBQUM7d0JBQ1IsTUFBTSxFQUFFOzRCQUNOO2dDQUNFLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUTtnQ0FDeEIsSUFBSSxFQUFFLGlCQUFpQjtnQ0FDdkIsS0FBSyxFQUFFLHlCQUF5QjtnQ0FDaEMsUUFBUSxFQUFFLGlCQUFpQjtnQ0FDM0IsSUFBSSxFQUFFLEVBQUU7Z0NBQ1IsY0FBYyxFQUFFLHFCQUFxQjtnQ0FDckMsU0FBUyxFQUFFO29DQUNULFFBQVEsRUFBRSx5QkFBeUI7aUNBQ3BDO2dDQUNELFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0NBQ2pDLEtBQUssRUFBRSxDQUFDO2dDQUNSLEtBQUssRUFBRSxlQUFlLENBQUMsT0FBTzs2QkFDL0I7NEJBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt5QkFDekI7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLEdBQUcsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7b0JBQ3ZGLEtBQUssRUFBRSxlQUFlO29CQUN0QixPQUFPLEVBQUUsc0JBQXNCO2lCQUNoQztnQkFDRCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQWdJSjtJQTdOQzs7O09BR0c7SUFDSCxJQUNJLE1BQU0sQ0FBQyxLQUFjO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBb0JELCtDQUErQztJQUMvQyxDQUFDLENBQUMsR0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUEwREQsNkRBQTZEO0lBQ3JELGdCQUFnQixDQUFDLEtBQWE7UUFDcEMsT0FBTztZQUNMLElBQUksRUFBRSxTQUFTLENBQUMsUUFBUTtZQUN4QixJQUFJLEVBQUUsYUFBYTtZQUNuQixLQUFLLEVBQUUscUJBQXFCO1lBQzVCLFFBQVEsRUFBRSxhQUFhO1lBQ3ZCLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsY0FBYyxFQUFFLHFCQUFxQjtZQUNyQyxTQUFTLEVBQUU7Z0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsWUFBWSxFQUFFLGtCQUFrQjthQUNqQztZQUNELFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztZQUMxRCxLQUFLO1lBQ0wsS0FBSyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQsa0RBQWtEO0lBQ2xELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCw2RUFBNkU7SUFDckUsV0FBVztRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUNyQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUMvRCxzRUFBc0U7WUFDdEUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFpQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsMERBQTBEO0lBQ2xELG9CQUFvQixDQUFDLEtBQWlCO1FBQzVDLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN4RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDL0QsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFpQjtRQUMvQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWhELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztZQUN4QyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztZQUM1QyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDeEUsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1NBQzNFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDdkQsSUFBSSxFQUFFLEdBQUcsRUFBRTtnQkFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLFlBQVksQ0FBQyxHQUFZO1FBQy9CLE1BQU0sSUFBSSxHQUFJLEdBQXlCLEVBQUUsSUFBSSxDQUFDO1FBQzlDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLGlDQUFpQztnQkFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDN0MsS0FBSyxzQkFBc0I7Z0JBQ3pCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQ3JDLEtBQUssNkJBQTZCO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUMzQyxLQUFLLG9DQUFvQztnQkFDdkMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDeEM7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQWU7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzsrR0EvTlUsNEJBQTRCO21HQUE1Qiw0QkFBNEIsNEtDeER6QywreEJBd0JBLDRPRDRCWSxTQUFTLG9QQUFFLFVBQVUsOEVBQUUsVUFBVSx3S0FBRSxTQUFTLG9HQUFFLFFBQVEsc0RBQUUsVUFBVSx5R0FBRSxVQUFVLG1GQUFFLGFBQWE7OzRGQUk1Riw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUM7OEJBWXBHLE1BQU07c0JBRFQsS0FBSztnQkFhSSxPQUFPO3NCQUFoQixNQUFNO2dCQUdHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgYXV0aFBhc3N3b3JkVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbk1vZGFsLFxuICBJb25TcGlubmVyLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuaW1wb3J0IHsgYnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJbnB1dEkxOG5IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG4vKiogTW9kbyBkZWwgbW9kYWwsIHJlc3VlbHRvIGFsIGFicmlyIHNlZ8O6biBzaSBlbCB1c2VyIHlhIHRpZW5lIGNvbnRyYXNlw7FhLiAqL1xudHlwZSBQYXNzd29yZE1vZGFsTW9kZSA9ICdsb2FkaW5nJyB8ICdjaGFuZ2UnIHwgJ3NldCc7XG5cbi8qKlxuICogYHZhbC1jaGFuZ2UtcGFzc3dvcmQtbW9kYWxgIOKAlCBtb2RhbCBkZSBnZXN0acOzbiBkZSBjb250cmFzZcOxYSBwYXJhIHVuIHVzdWFyaW9cbiAqIGF1dGVudGljYWRvLiBBbsOhbG9nbyBhbCBtb2RhbCBkZSBcInJlY3VwZXJhciBjb250cmFzZcOxYVwiIGRlbCBgdmFsLWxvZ2luYC5cbiAqXG4gKiBFcyBkdWFsLW1vZGU6IGFsIGFicmlyc2UgY29uc3VsdGEgYEF1dGhTZXJ2aWNlLmNoZWNrSGFzUGFzc3dvcmQoKWAgeSBzZSBhZGFwdGE6XG4gKiAgLSAqKmNoYW5nZSoqIOKAlCBlbCB1c2VyIHlhIHRpZW5lIGNvbnRyYXNlw7FhIOKGkiBwaWRlIGFjdHVhbCArIG51ZXZhIOKGklxuICogICAgYGNoYW5nZVBhc3N3b3JkKClgLlxuICogIC0gKipzZXQqKiDigJQgZWwgdXNlciBlcyBPQXV0aC1vbmx5IChzaW4gY29udHJhc2XDsWEpIOKGkiBwaWRlIHNvbG8gbGEgbnVldmEsXG4gKiAgICBwaWRlIGNvbmZpcm1hY2nDs24gZXhwbMOtY2l0YSAobm8gcGllcmRlIGVsIGFjY2VzbyBzb2NpYWwsIGVzIGFkaXRpdm8pIOKGklxuICogICAgYHNldFBhc3N3b3JkRm9yT0F1dGhVc2VyKClgLlxuICpcbiAqIFNlbGYtY29udGFpbmVkOiBpbnllY3RhIGBBdXRoU2VydmljZWAgeSBsbGFtYSBlbCBlbmRwb2ludCBkaXJlY3RvIOKAlCBsYSBhcHBcbiAqIHNvbG8gY29udHJvbGEgYFtpc09wZW5dYCB5IHJlYWNjaW9uYSBhIGAoY2hhbmdlZClgIC8gYChkaXNtaXNzZWQpYC5cbiAqXG4gKiBpMThuOiB1c2EgZWwgbmFtZXNwYWNlIGNvbXBhcnRpZG8gYF9hdXRoYCAobWlzbWFzIGNsYXZlcyBxdWUgYHZhbC1sb2dpbmApLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzTW9kYWxPcGVuKClcIlxuICogICAoY2hhbmdlZCk9XCJpc01vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqICAgKGRpc21pc3NlZCk9XCJpc01vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uTW9kYWwsIElvblNwaW5uZXIsIElvblRvb2xiYXIsIEZvcm1Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZVBhc3N3b3JkTW9kYWxDb21wb25lbnQge1xuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbGEgbGEgdmlzaWJpbGlkYWQgZGVsIG1vZGFsLiBMbyBkZWNpZGUgZWwgY29tcG9uZW50ZSBwYWRyZS4gQ2FkYSB2ZXpcbiAgICogcXVlIHBhc2EgZGUgY2VycmFkbyBhIGFiaWVydG8gc2UgcmVzdWVsdmUgZWwgbW9kbyAoY2hhbmdlIHZzIHNldCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb3BlbmluZyA9IHZhbHVlICYmICF0aGlzLl9pc09wZW47XG4gICAgdGhpcy5faXNPcGVuID0gdmFsdWU7XG4gICAgaWYgKG9wZW5pbmcpIHtcbiAgICAgIHRoaXMucmVzb2x2ZU1vZGUoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgLyoqIEVtaXRlIGFsIGNhbWJpYXIvY3JlYXIgbGEgY29udHJhc2XDsWEgY29uIMOpeGl0by4gRWwgcGFkcmUgY2llcnJhIGVsIG1vZGFsLiAqL1xuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdGUgY3VhbmRvIGVsIHVzZXIgY2llcnJhIGVsIG1vZGFsIChib3TDs24gWCBvIGJhY2tkcm9wKS4gKi9cbiAgQE91dHB1dCgpIGRpc21pc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgaTE4bkhlbHBlciA9IGluamVjdChJbnB1dEkxOG5IZWxwZXIpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kZSA9IHNpZ25hbDxQYXNzd29yZE1vZGFsTW9kZT4oJ2xvYWRpbmcnKTtcbiAgLyoqIE1vZG8gYWN0dWFsIOKAlCBgbG9hZGluZ2AgbWllbnRyYXMgc2UgY29uc3VsdGEgYGNoZWNrSGFzUGFzc3dvcmQoKWAuICovXG4gIHJlYWRvbmx5IG1vZGUgPSB0aGlzLl9tb2RlLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtU3RhdGUgPSBzaWduYWw8Q29tcG9uZW50U3RhdGU+KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcblxuICAvKiogVHJhZHVjZSB1bmEgY2xhdmUgZGVsIG5hbWVzcGFjZSBgX2F1dGhgLiAqL1xuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnX2F1dGgnKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4ge1xuICAgIGlmICh0aGlzLl9tb2RlKCkgPT09ICdzZXQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5pMThuSGVscGVyLnJlc29sdmVGb3JtKHtcbiAgICAgICAgbmFtZUtleTogJ3NldFBhc3N3b3JkVGl0bGUnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiAnX2F1dGgnLFxuICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudCgnc2V0UGFzc3dvcmREZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgICBmaWVsZHM6IFt0aGlzLm5ld1Bhc3N3b3JkRmllbGQoMCldLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAuLi5idXR0b24oeyB0ZXh0OiAnJywgdHlwZTogJ3N1Ym1pdCcsIGZpbGw6ICdzb2xpZCcsIGV4cGFuZDogJ2Jsb2NrJywgc2hhcGU6ICdyb3VuZCcgfSksXG4gICAgICAgICAgdG9rZW46ICdzZXQtc3VibWl0JyxcbiAgICAgICAgICB0ZXh0S2V5OiAnc2V0UGFzc3dvcmRTdWJtaXQnLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pMThuSGVscGVyLnJlc29sdmVGb3JtKHtcbiAgICAgIG5hbWVLZXk6ICdjaGFuZ2VQYXNzd29yZFRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VQYXNzd29yZERlc2NyaXB0aW9uJyksXG4gICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYXNzd29yZCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWN1cnJlbnQtcGFzc3dvcmQnLFxuICAgICAgICAgICAgICBsYWJlbEtleTogJ2N1cnJlbnRQYXNzd29yZCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ3Bhc3N3b3JkUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMubmV3UGFzc3dvcmRGaWVsZCgxKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uYnV0dG9uKHsgdGV4dDogJycsIHR5cGU6ICdzdWJtaXQnLCBmaWxsOiAnc29saWQnLCBleHBhbmQ6ICdibG9jaycsIHNoYXBlOiAncm91bmQnIH0pLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1zdWJtaXQnLFxuICAgICAgICB0ZXh0S2V5OiAnY2hhbmdlUGFzc3dvcmRTdWJtaXQnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIENhbXBvIFwibnVldmEgY29udHJhc2XDsWFcIiDigJQgY29tcGFydGlkbyBwb3IgYW1ib3MgbW9kb3MuICovXG4gIHByaXZhdGUgbmV3UGFzc3dvcmRGaWVsZChvcmRlcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgIG5hbWU6ICduZXdQYXNzd29yZCcsXG4gICAgICB0b2tlbjogJ2NoYW5nZS1uZXctcGFzc3dvcmQnLFxuICAgICAgbGFiZWxLZXk6ICduZXdQYXNzd29yZCcsXG4gICAgICBoaW50S2V5OiAnbmV3UGFzc3dvcmRIaW50JyxcbiAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdwYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgYXV0aFBhc3N3b3JkOiAncGFzc3dvcmRTdHJlbmd0aCcsXG4gICAgICB9LFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGF1dGhQYXNzd29yZFZhbGlkYXRvcigpXSxcbiAgICAgIG9yZGVyLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICAvKiogQ2llcnJlIGluaWNpYWRvIHBvciBlbCB1c2VyIChYIC8gYmFja2Ryb3ApLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKiogQ29uc3VsdGEgc2kgZWwgdXNlciB5YSB0aWVuZSBjb250cmFzZcOxYSBwYXJhIGVsZWdpciBlbCBtb2RvIGRlbCBtb2RhbC4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIHRoaXMuYXV0aC5jaGVja0hhc1Bhc3N3b3JkKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLl9tb2RlLnNldChyZXMuaGFzUGFzc3dvcmQgPyAnY2hhbmdlJyA6ICdzZXQnKSxcbiAgICAgIC8vIEZhbGxiYWNrIGNvbnNlcnZhZG9yOiBhbnRlIHVuIGZhbGxvLCBhc3VtaXIgZmx1am8gZGUgY2FtYmlvIG5vcm1hbC5cbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLl9tb2RlLnNldCgnY2hhbmdlJyksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdWJtaXRIYW5kbGVyKGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21vZGUoKSA9PT0gJ3NldCcpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2V0UGFzc3dvcmQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZUNoYW5nZVBhc3N3b3JkKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBGbHVqbyBub3JtYWw6IGVsIHVzZXIgdGllbmUgY29udHJhc2XDsWEgeSBsYSBjYW1iaWEuICovXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlUGFzc3dvcmQoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gZXZlbnQuZmllbGRzWyduZXdQYXNzd29yZCddO1xuXG4gICAgaWYgKCFjdXJyZW50UGFzc3dvcmQgfHwgIW5ld1Bhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NvbXBsZXRlQWxsRmllbGRzJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLldPUktJTkcpO1xuXG4gICAgdGhpcy5hdXRoLmNoYW5nZVBhc3N3b3JkKGN1cnJlbnRQYXNzd29yZCwgbmV3UGFzc3dvcmQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ3Bhc3N3b3JkQ2hhbmdlZFN1Y2Nlc3MnKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmx1am8gT0F1dGgtb25seTogZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYS4gQW50ZXMgZGUgY3JlYXJsYSBwaWRlXG4gICAqIGNvbmZpcm1hY2nDs24gZXhwbMOtY2l0YSDigJQgZXMgdW4gY2FtYmlvIGRlIGN1ZW50YSwgYXVucXVlIGFkaXRpdm8gKGNvbnNlcnZhXG4gICAqIGVsIGFjY2VzbyBzb2NpYWwpLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXRQYXNzd29yZChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gZXZlbnQuZmllbGRzWyduZXdQYXNzd29yZCddO1xuXG4gICAgaWYgKCFuZXdQYXNzd29yZCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybSh7XG4gICAgICB0aXRsZTogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1UaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1NZXNzYWdlJyksXG4gICAgICBjb25maXJtQnV0dG9uOiB7IHRleHQ6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtT2snKSwgcm9sZTogJ2NvbmZpcm0nIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1DYW5jZWwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdC5jb25maXJtZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcblxuICAgIHRoaXMuYXV0aC5zZXRQYXNzd29yZEZvck9BdXRoVXNlcihuZXdQYXNzd29yZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgncGFzc3dvcmRTZXRTdWNjZXNzJykpO1xuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIE1hcGVhIGxvcyBjw7NkaWdvcyBkZSBlcnJvciBkZWwgYmFja2VuZCBhIG1lbnNhamVzIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlRXJyb3IoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gKGVyciBhcyB7IGNvZGU/OiBzdHJpbmcgfSk/LmNvZGU7XG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DVVJSRU5UX1BBU1NXT1JEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JDdXJyZW50UGFzc3dvcmRXcm9uZycpO1xuICAgICAgY2FzZSAnQVVUSFYyX1NBTUVfUEFTU1dPUkQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvclNhbWVQYXNzd29yZCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX1BBU1NXT1JEX0FMUkVBRFlfU0VUJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JQYXNzd29yZEFscmVhZHlTZXQnKTtcbiAgICAgIGNhc2UgJ1ZBTElEQVRJT05fTUlTU0lOR19SRVFVSVJFRF9GSUVMRFMnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvclBhc3N3b3JkVG9vV2VhaycpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JHZW5lcmljJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9hc3QobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZSwgZHVyYXRpb246IDM1MDAgfSk7XG4gIH1cbn1cbiIsIjxpb24tbW9kYWwgW2lzT3Blbl09XCJpc09wZW5cIiAoZGlkRGlzbWlzcyk9XCJjbG9zZSgpXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8aW9uLWhlYWRlcj5cbiAgICAgIDxpb24tdG9vbGJhcj5cbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBmaWxsPVwiY2xlYXJcIiBjb2xvcj1cImRhcmtcIiBzaGFwZT1cInJvdW5kXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8c2VjdGlvbiBjbGFzcz1cIm1vZGFsLWZvcm0tc2VjdGlvblwiPlxuICAgICAgICBAaWYgKG1vZGUoKSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1sb2FkaW5nXCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJmb3JtUHJvcHMoKVwiIChvblN1Ym1pdCk9XCJzdWJtaXRIYW5kbGVyKCRldmVudClcIiAvPlxuICAgICAgICB9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC9pb24tY29udGVudD5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvaW9uLW1vZGFsPlxuIl19
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvY2hhbmdlLXBhc3N3b3JkLW1vZGFsL2NoYW5nZS1wYXNzd29yZC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2NoYW5nZS1wYXNzd29yZC1tb2RhbC9jaGFuZ2UtcGFzc3dvcmQtbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRCxPQUFPLEVBQWtCLGVBQWUsRUFBNEIsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDOUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztB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SztnQkFhSSxPQUFPO3NCQUFoQixNQUFNO2dCQUdHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgYXV0aFBhc3N3b3JkVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbk1vZGFsLFxuICBJb25TcGlubmVyLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcblxuaW1wb3J0IHsgYnV0dG9uIH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2ZhY3RvcnknO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vZm9ybS9mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJbnB1dEkxOG5IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG4vKiogTW9kbyBkZWwgbW9kYWwsIHJlc3VlbHRvIGFsIGFicmlyIHNlZ8O6biBzaSBlbCB1c2VyIHlhIHRpZW5lIGNvbnRyYXNlw7FhLiAqL1xudHlwZSBQYXNzd29yZE1vZGFsTW9kZSA9ICdsb2FkaW5nJyB8ICdjaGFuZ2UnIHwgJ3NldCc7XG5cbi8qKlxuICogYHZhbC1jaGFuZ2UtcGFzc3dvcmQtbW9kYWxgIOKAlCBtb2RhbCBkZSBnZXN0acOzbiBkZSBjb250cmFzZcOxYSBwYXJhIHVuIHVzdWFyaW9cbiAqIGF1dGVudGljYWRvLiBBbsOhbG9nbyBhbCBtb2RhbCBkZSBcInJlY3VwZXJhciBjb250cmFzZcOxYVwiIGRlbCBgdmFsLWxvZ2luYC5cbiAqXG4gKiBFcyBkdWFsLW1vZGU6IGFsIGFicmlyc2UgY29uc3VsdGEgYEF1dGhTZXJ2aWNlLmNoZWNrSGFzUGFzc3dvcmQoKWAgeSBzZSBhZGFwdGE6XG4gKiAgLSAqKmNoYW5nZSoqIOKAlCBlbCB1c2VyIHlhIHRpZW5lIGNvbnRyYXNlw7FhIOKGkiBwaWRlIGFjdHVhbCArIG51ZXZhIOKGklxuICogICAgYGNoYW5nZVBhc3N3b3JkKClgLlxuICogIC0gKipzZXQqKiDigJQgZWwgdXNlciBlcyBPQXV0aC1vbmx5IChzaW4gY29udHJhc2XDsWEpIOKGkiBwaWRlIHNvbG8gbGEgbnVldmEsXG4gKiAgICBwaWRlIGNvbmZpcm1hY2nDs24gZXhwbMOtY2l0YSAobm8gcGllcmRlIGVsIGFjY2VzbyBzb2NpYWwsIGVzIGFkaXRpdm8pIOKGklxuICogICAgYHNldFBhc3N3b3JkRm9yT0F1dGhVc2VyKClgLlxuICpcbiAqIFNlbGYtY29udGFpbmVkOiBpbnllY3RhIGBBdXRoU2VydmljZWAgeSBsbGFtYSBlbCBlbmRwb2ludCBkaXJlY3RvIOKAlCBsYSBhcHBcbiAqIHNvbG8gY29udHJvbGEgYFtpc09wZW5dYCB5IHJlYWNjaW9uYSBhIGAoY2hhbmdlZClgIC8gYChkaXNtaXNzZWQpYC5cbiAqXG4gKiBpMThuOiB1c2EgZWwgbmFtZXNwYWNlIGNvbXBhcnRpZG8gYF9hdXRoYCAobWlzbWFzIGNsYXZlcyBxdWUgYHZhbC1sb2dpbmApLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbFxuICogICBbaXNPcGVuXT1cImlzTW9kYWxPcGVuKClcIlxuICogICAoY2hhbmdlZCk9XCJpc01vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqICAgKGRpc21pc3NlZCk9XCJpc01vZGFsT3Blbi5zZXQoZmFsc2UpXCJcbiAqIC8+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWNoYW5nZS1wYXNzd29yZC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uTW9kYWwsIElvblNwaW5uZXIsIElvblRvb2xiYXIsIEZvcm1Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhbmdlLXBhc3N3b3JkLW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5nZVBhc3N3b3JkTW9kYWxDb21wb25lbnQge1xuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQ29udHJvbGEgbGEgdmlzaWJpbGlkYWQgZGVsIG1vZGFsLiBMbyBkZWNpZGUgZWwgY29tcG9uZW50ZSBwYWRyZS4gQ2FkYSB2ZXpcbiAgICogcXVlIHBhc2EgZGUgY2VycmFkbyBhIGFiaWVydG8gc2UgcmVzdWVsdmUgZWwgbW9kbyAoY2hhbmdlIHZzIHNldCkuXG4gICAqL1xuICBASW5wdXQoKVxuICBzZXQgaXNPcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgY29uc3Qgb3BlbmluZyA9IHZhbHVlICYmICF0aGlzLl9pc09wZW47XG4gICAgdGhpcy5faXNPcGVuID0gdmFsdWU7XG4gICAgaWYgKG9wZW5pbmcpIHtcbiAgICAgIHRoaXMucmVzb2x2ZU1vZGUoKTtcbiAgICB9XG4gIH1cbiAgZ2V0IGlzT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNPcGVuO1xuICB9XG5cbiAgLyoqIEVtaXRlIGFsIGNhbWJpYXIvY3JlYXIgbGEgY29udHJhc2XDsWEgY29uIMOpeGl0by4gRWwgcGFkcmUgY2llcnJhIGVsIG1vZGFsLiAqL1xuICBAT3V0cHV0KCkgY2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdGUgY3VhbmRvIGVsIHVzZXIgY2llcnJhIGVsIG1vZGFsIChib3TDs24gWCBvIGJhY2tkcm9wKS4gKi9cbiAgQE91dHB1dCgpIGRpc21pc3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgaTE4bkhlbHBlciA9IGluamVjdChJbnB1dEkxOG5IZWxwZXIpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kZSA9IHNpZ25hbDxQYXNzd29yZE1vZGFsTW9kZT4oJ2xvYWRpbmcnKTtcbiAgLyoqIE1vZG8gYWN0dWFsIOKAlCBgbG9hZGluZ2AgbWllbnRyYXMgc2UgY29uc3VsdGEgYGNoZWNrSGFzUGFzc3dvcmQoKWAuICovXG4gIHJlYWRvbmx5IG1vZGUgPSB0aGlzLl9tb2RlLmFzUmVhZG9ubHkoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtU3RhdGUgPSBzaWduYWw8Q29tcG9uZW50U3RhdGU+KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcblxuICAvKiogVHJhZHVjZSB1bmEgY2xhdmUgZGVsIG5hbWVzcGFjZSBgX2F1dGhgLiAqL1xuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCAnX2F1dGgnKTtcbiAgfVxuXG4gIHJlYWRvbmx5IGZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4ge1xuICAgIGlmICh0aGlzLl9tb2RlKCkgPT09ICdzZXQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5pMThuSGVscGVyLnJlc29sdmVGb3JtKHtcbiAgICAgICAgbmFtZUtleTogJ3NldFBhc3N3b3JkVGl0bGUnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiAnX2F1dGgnLFxuICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMudCgnc2V0UGFzc3dvcmREZXNjcmlwdGlvbicpLFxuICAgICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgICBmaWVsZHM6IFt0aGlzLm5ld1Bhc3N3b3JkRmllbGQoMCldLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAuLi5idXR0b24oeyB0ZXh0OiAnJywgdHlwZTogJ3N1Ym1pdCcsIGZpbGw6ICdzb2xpZCcsIGV4cGFuZDogJ2Jsb2NrJywgc2hhcGU6ICdyb3VuZCcgfSksXG4gICAgICAgICAgdG9rZW46ICdzZXQtc3VibWl0JyxcbiAgICAgICAgICB0ZXh0S2V5OiAnc2V0UGFzc3dvcmRTdWJtaXQnLFxuICAgICAgICB9LFxuICAgICAgICBzdGF0ZTogdGhpcy5fZm9ybVN0YXRlKCksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pMThuSGVscGVyLnJlc29sdmVGb3JtKHtcbiAgICAgIG5hbWVLZXk6ICdjaGFuZ2VQYXNzd29yZFRpdGxlJyxcbiAgICAgIGkxOG5OYW1lc3BhY2U6ICdfYXV0aCcsXG4gICAgICBzZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogdGhpcy50KCdjaGFuZ2VQYXNzd29yZERlc2NyaXB0aW9uJyksXG4gICAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgICAgICAgICAgbmFtZTogJ2N1cnJlbnRQYXNzd29yZCcsXG4gICAgICAgICAgICAgIHRva2VuOiAnY2hhbmdlLWN1cnJlbnQtcGFzc3dvcmQnLFxuICAgICAgICAgICAgICBsYWJlbEtleTogJ2N1cnJlbnRQYXNzd29yZCcsXG4gICAgICAgICAgICAgIGhpbnQ6ICcnLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcktleTogJ3Bhc3N3b3JkUGxhY2Vob2xkZXInLFxuICAgICAgICAgICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ2N1cnJlbnRQYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoaXMubmV3UGFzc3dvcmRGaWVsZCgxKSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgLi4uYnV0dG9uKHsgdGV4dDogJycsIHR5cGU6ICdzdWJtaXQnLCBmaWxsOiAnc29saWQnLCBleHBhbmQ6ICdibG9jaycsIHNoYXBlOiAncm91bmQnIH0pLFxuICAgICAgICB0b2tlbjogJ2NoYW5nZS1zdWJtaXQnLFxuICAgICAgICB0ZXh0S2V5OiAnY2hhbmdlUGFzc3dvcmRTdWJtaXQnLFxuICAgICAgfSxcbiAgICAgIHN0YXRlOiB0aGlzLl9mb3JtU3RhdGUoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgLyoqIENhbXBvIFwibnVldmEgY29udHJhc2XDsWFcIiDigJQgY29tcGFydGlkbyBwb3IgYW1ib3MgbW9kb3MuICovXG4gIHByaXZhdGUgbmV3UGFzc3dvcmRGaWVsZChvcmRlcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgIG5hbWU6ICduZXdQYXNzd29yZCcsXG4gICAgICB0b2tlbjogJ2NoYW5nZS1uZXctcGFzc3dvcmQnLFxuICAgICAgbGFiZWxLZXk6ICduZXdQYXNzd29yZCcsXG4gICAgICBoaW50S2V5OiAnbmV3UGFzc3dvcmRIaW50JyxcbiAgICAgIHBsYWNlaG9sZGVyS2V5OiAncGFzc3dvcmRQbGFjZWhvbGRlcicsXG4gICAgICBlcnJvcktleXM6IHtcbiAgICAgICAgcmVxdWlyZWQ6ICdwYXNzd29yZFJlcXVpcmVkJyxcbiAgICAgICAgYXV0aFBhc3N3b3JkOiAncGFzc3dvcmRTdHJlbmd0aCcsXG4gICAgICB9LFxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIGF1dGhQYXNzd29yZFZhbGlkYXRvcigpXSxcbiAgICAgIG9yZGVyLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICAvKiogQ2llcnJlIGluaWNpYWRvIHBvciBlbCB1c2VyIChYIC8gYmFja2Ryb3ApLiAqL1xuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc21pc3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKiogQ29uc3VsdGEgc2kgZWwgdXNlciB5YSB0aWVuZSBjb250cmFzZcOxYSBwYXJhIGVsZWdpciBlbCBtb2RvIGRlbCBtb2RhbC4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RlLnNldCgnbG9hZGluZycpO1xuICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgIHRoaXMuYXV0aC5jaGVja0hhc1Bhc3N3b3JkKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLl9tb2RlLnNldChyZXMuaGFzUGFzc3dvcmQgPyAnY2hhbmdlJyA6ICdzZXQnKSxcbiAgICAgIC8vIEZhbGxiYWNrIGNvbnNlcnZhZG9yOiBhbnRlIHVuIGZhbGxvLCBhc3VtaXIgZmx1am8gZGUgY2FtYmlvIG5vcm1hbC5cbiAgICAgIGVycm9yOiAoKSA9PiB0aGlzLl9tb2RlLnNldCgnY2hhbmdlJyksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzdWJtaXRIYW5kbGVyKGV2ZW50OiBGb3JtU3VibWl0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21vZGUoKSA9PT0gJ3NldCcpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU2V0UGFzc3dvcmQoZXZlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhbmRsZUNoYW5nZVBhc3N3b3JkKGV2ZW50KTtcbiAgfVxuXG4gIC8qKiBGbHVqbyBub3JtYWw6IGVsIHVzZXIgdGllbmUgY29udHJhc2XDsWEgeSBsYSBjYW1iaWEuICovXG4gIHByaXZhdGUgaGFuZGxlQ2hhbmdlUGFzc3dvcmQoZXZlbnQ6IEZvcm1TdWJtaXQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50UGFzc3dvcmQgPSBldmVudC5maWVsZHNbJ2N1cnJlbnRQYXNzd29yZCddO1xuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gZXZlbnQuZmllbGRzWyduZXdQYXNzd29yZCddO1xuXG4gICAgaWYgKCFjdXJyZW50UGFzc3dvcmQgfHwgIW5ld1Bhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ2NvbXBsZXRlQWxsRmllbGRzJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLldPUktJTkcpO1xuXG4gICAgdGhpcy5hdXRoLmNoYW5nZVBhc3N3b3JkKGN1cnJlbnRQYXNzd29yZCwgbmV3UGFzc3dvcmQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnQoJ3Bhc3N3b3JkQ2hhbmdlZFN1Y2Nlc3MnKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlZC5lbWl0KCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgIHRoaXMuX2Zvcm1TdGF0ZS5zZXQoQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpO1xuICAgICAgICB0aGlzLnNob3dUb2FzdCh0aGlzLnJlc29sdmVFcnJvcihlcnIpKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRmx1am8gT0F1dGgtb25seTogZWwgdXNlciBubyB0aWVuZSBjb250cmFzZcOxYS4gQW50ZXMgZGUgY3JlYXJsYSBwaWRlXG4gICAqIGNvbmZpcm1hY2nDs24gZXhwbMOtY2l0YSDigJQgZXMgdW4gY2FtYmlvIGRlIGN1ZW50YSwgYXVucXVlIGFkaXRpdm8gKGNvbnNlcnZhXG4gICAqIGVsIGFjY2VzbyBzb2NpYWwpLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTZXRQYXNzd29yZChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5ld1Bhc3N3b3JkID0gZXZlbnQuZmllbGRzWyduZXdQYXNzd29yZCddO1xuXG4gICAgaWYgKCFuZXdQYXNzd29yZCkge1xuICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy50KCdjb21wbGV0ZUFsbEZpZWxkcycpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybSh7XG4gICAgICB0aXRsZTogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1UaXRsZScpLFxuICAgICAgbWVzc2FnZTogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1NZXNzYWdlJyksXG4gICAgICBjb25maXJtQnV0dG9uOiB7IHRleHQ6IHRoaXMudCgnc2V0UGFzc3dvcmRDb25maXJtT2snKSwgcm9sZTogJ2NvbmZpcm0nIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50KCdzZXRQYXNzd29yZENvbmZpcm1DYW5jZWwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdC5jb25maXJtZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcblxuICAgIHRoaXMuYXV0aC5zZXRQYXNzd29yZEZvck9BdXRoVXNlcihuZXdQYXNzd29yZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgICAgIHRoaXMuc2hvd1RvYXN0KHRoaXMudCgncGFzc3dvcmRTZXRTdWNjZXNzJykpO1xuICAgICAgICB0aGlzLmNoYW5nZWQuZW1pdCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLl9mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICAgICAgdGhpcy5zaG93VG9hc3QodGhpcy5yZXNvbHZlRXJyb3IoZXJyKSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIE1hcGVhIGxvcyBjw7NkaWdvcyBkZSBlcnJvciBkZWwgYmFja2VuZCBhIG1lbnNhamVzIGRlbCBuYW1lc3BhY2UgYF9hdXRoYC4gKi9cbiAgcHJpdmF0ZSByZXNvbHZlRXJyb3IoZXJyOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb2RlID0gKGVyciBhcyB7IGNvZGU/OiBzdHJpbmcgfSk/LmNvZGU7XG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlICdBVVRIVjJfSU5WQUxJRF9DVVJSRU5UX1BBU1NXT1JEJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JDdXJyZW50UGFzc3dvcmRXcm9uZycpO1xuICAgICAgY2FzZSAnQVVUSFYyX1NBTUVfUEFTU1dPUkQnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvclNhbWVQYXNzd29yZCcpO1xuICAgICAgY2FzZSAnQVVUSFYyX1BBU1NXT1JEX0FMUkVBRFlfU0VUJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JQYXNzd29yZEFscmVhZHlTZXQnKTtcbiAgICAgIGNhc2UgJ1ZBTElEQVRJT05fTUlTU0lOR19SRVFVSVJFRF9GSUVMRFMnOlxuICAgICAgICByZXR1cm4gdGhpcy50KCdlcnJvclBhc3N3b3JkVG9vV2VhaycpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMudCgnZXJyb3JHZW5lcmljJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93VG9hc3QobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdC5zaG93KHsgbWVzc2FnZSwgZHVyYXRpb246IDM1MDAgfSk7XG4gIH1cbn1cbiIsIjxpb24tbW9kYWwgW2lzT3Blbl09XCJpc09wZW5cIiAoZGlkRGlzbWlzcyk9XCJjbG9zZSgpXCIgY3NzQ2xhc3M9XCJ2YWwtbW9kYWwtYWRhcHRpdmVcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIHNoYXBlPVwicm91bmRcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtZm9ybS1zZWN0aW9uXCI+XG4gICAgICAgIEBpZiAobW9kZSgpID09PSAnbG9hZGluZycpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWxvYWRpbmdcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cImZvcm1Qcm9wcygpXCIgKG9uU3VibWl0KT1cInN1Ym1pdEhhbmRsZXIoJGV2ZW50KVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8L2lvbi1jb250ZW50PlxuICA8L25nLXRlbXBsYXRlPlxuPC9pb24tbW9kYWw+XG4iXX0=
|