tango-app-ui-store-builder 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (21) hide show
  1. package/esm2022/lib/components/fixture-template/fixture-template.component.mjs +23 -9
  2. package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +84 -47
  3. package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +1 -1
  4. package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +4 -5
  5. package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +67 -10
  6. package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +27 -9
  7. package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +3 -2
  8. package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +4 -3
  9. package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +116 -54
  10. package/esm2022/lib/interfaces/fixture-template.interface.mjs +1 -1
  11. package/esm2022/lib/services/store-builder.service.mjs +4 -1
  12. package/fesm2022/tango-app-ui-store-builder.mjs +306 -113
  13. package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
  14. package/lib/components/fixture-template/fixture-template.component.d.ts +1 -0
  15. package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +9 -9
  16. package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +2 -0
  17. package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +7 -6
  18. package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +20 -12
  19. package/lib/interfaces/fixture-template.interface.d.ts +2 -2
  20. package/lib/services/store-builder.service.d.ts +1 -0
  21. package/package.json +1 -1
@@ -50,14 +50,14 @@ export class FixtureTemplateComponent {
50
50
  const id = params["templateId"];
51
51
  this.route.queryParamMap
52
52
  .pipe(takeUntil(this.destroy$))
53
- .subscribe(params => {
54
- this.isEditMode = params.get('isEdit') === 'true';
53
+ .subscribe((params) => {
54
+ this.isEditMode = params.get("isEdit") === "true";
55
55
  });
56
56
  if (!id) {
57
57
  this.router.navigate(["/manage/planogram/fixture-templates"]);
58
58
  return;
59
59
  }
60
- this.url = this.router.url.split('?')?.[0]?.split('/');
60
+ this.url = this.router.url.split("?")?.[0]?.split("/");
61
61
  this.router.events.subscribe((event) => {
62
62
  if (event instanceof NavigationEnd) {
63
63
  if (event.urlAfterRedirects) {
@@ -113,12 +113,11 @@ export class FixtureTemplateComponent {
113
113
  error: (err) => {
114
114
  if (typeof type != undefined) {
115
115
  this.toast.getErrorToast(err?.error?.error || "Failed to duplicate Template");
116
- console.log("@@ ~ duplicateFixtureTemplate [err]:", err);
117
116
  }
118
117
  else {
119
118
  this.toast.getErrorToast(err?.error?.error || "Failed to create variant");
120
- console.log("@@ ~ duplicateFixtureTemplate [err]:", err);
121
119
  }
120
+ console.log("@@ ~ duplicateFixtureTemplate [err]:", err);
122
121
  },
123
122
  });
124
123
  }
@@ -175,6 +174,7 @@ export class FixtureTemplateComponent {
175
174
  });
176
175
  }
177
176
  async onSubmit(data) {
177
+ this.validateFixtureData();
178
178
  this.canGoBack = data.goBack;
179
179
  this.errorTabs = this.ps.fixtureTemplateErrorTabs;
180
180
  const currentTab = this.router.url.split("?")[0].split("/").pop();
@@ -212,17 +212,19 @@ export class FixtureTemplateComponent {
212
212
  if ((this.fixtureTemplateDetails?.storeCount ?? 0) <= 0)
213
213
  return true;
214
214
  try {
215
- const modelRef = this.ngbModal.open(LayoutEditConfirmationComponent, { centered: true });
215
+ const modelRef = this.ngbModal.open(LayoutEditConfirmationComponent, {
216
+ centered: true,
217
+ });
216
218
  modelRef.componentInstance.title = `Edit template`;
217
219
  modelRef.componentInstance.description = `You are about to edit an active template. Please review and publish the changes`;
218
- return await modelRef.result.then((result) => result === 'ok');
220
+ return await modelRef.result.then((result) => result === "ok");
219
221
  }
220
222
  catch (error) {
221
223
  return false;
222
224
  }
223
225
  }
224
226
  async onClickEdit() {
225
- if (!await this.confirmEdit())
227
+ if (!(await this.confirmEdit()))
226
228
  return;
227
229
  this.isEditMode = true;
228
230
  this.router.navigate([], {
@@ -272,6 +274,18 @@ export class FixtureTemplateComponent {
272
274
  goBack() {
273
275
  this.location.back();
274
276
  }
277
+ validateFixtureData() {
278
+ this.fixtureTemplateDetails?.vmConfig?.forEach((vm) => {
279
+ if ((vm?.startYPosition ?? 1) > (this.fixtureTemplateDetails?.shelfConfig?.length ?? 1)) {
280
+ vm.startYPosition = null;
281
+ this.ps.fixtureTemplateErrorTabs.vms = true;
282
+ }
283
+ if ((vm?.endYPosition ?? 1) > (this.fixtureTemplateDetails?.shelfConfig?.length ?? 1)) {
284
+ vm.endYPosition = null;
285
+ this.ps.fixtureTemplateErrorTabs.vms = true;
286
+ }
287
+ });
288
+ }
275
289
  ngOnDestroy() {
276
290
  this.destroy$.next();
277
291
  this.destroy$.complete();
@@ -287,4 +301,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
287
301
  type: ViewChild,
288
302
  args: ["errorModal"]
289
303
  }] } });
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9maXh0dXJlLXRlbXBsYXRlL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvZml4dHVyZS10ZW1wbGF0ZS9maXh0dXJlLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQWtCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDMUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7QUFPeEgsTUFBTSxPQUFPLHdCQUF3QjtJQXdCekI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUE1QlYsYUFBYSxHQUFZLElB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WUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgRml4dHVyZVRlbXBsYXRlRGV0YWlscyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZml4dHVyZS10ZW1wbGF0ZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQbGFub0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGxhbm8tZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERlbGV0ZUNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3BvcHVwcy9kZWxldGUtY29uZmlybWF0aW9uL2RlbGV0ZS1jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2Fubm90UGVyZm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3BvcHVwcy9jYW5ub3QtcGVyZm9ybS9jYW5ub3QtcGVyZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYW5FeGl0R3VhcmQgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZXhpdC5ndWFyZCc7XHJcbmltcG9ydCB7IEV4aXRDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wb3B1cHMvZXhpdC1jb25maXJtYXRpb24vZXhpdC1jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3BsYW5vLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgVmFyaWFudFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wdXBzL3ZhcmlhbnQtcG9wdXAvdmFyaWFudC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IExheW91dEVkaXRDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wb3B1cHMvbGF5b3V0LWVkaXQtY29uZmlybWF0aW9uL2xheW91dC1lZGl0LWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWZpeHR1cmUtdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpeHR1cmVUZW1wbGF0ZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBDYW5FeGl0R3VhcmQsIE9uRGVzdHJveSB7XHJcbiAgaXNQYWdlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gaXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZml4dHVyZVRlbXBsYXRlRGV0YWlsczogRml4dHVyZVRlbXBsYXRlRGV0YWlscyB8IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsOiBzdHJpbmcgPSBcImZpeHR1cmVcIjtcclxuICBjYW5Hb0JhY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB1cmw6IGFueSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBAVmlld0NoaWxkKFwiZXJyb3JNb2RhbFwiKSBlcnJvck1vZGFsUmVmITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcblxyXG4gIGVycm9yVGFiczoge1xyXG4gICAgYmFzaWNEZXRhaWxzOiBib29sZWFuO1xyXG4gICAgcHJvZHVjdHM6IGJvb2xlYW47XHJcbiAgICB2bXM6IGJvb2xlYW47XHJcbiAgfTtcclxuICBpbnB1dFdpZHRoOiBudW1iZXIgPSA1MDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcHM6IFBsYW5vRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBuZ2JNb2RhbDogTmdiTW9kYWwsXHJcbiAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xyXG4gICAgY29uc3QgaWQgPSBwYXJhbXNbXCJ0ZW1wbGF0ZUlkXCJdO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcclxuICAgICAgICB0aGlzLmlzRWRpdE1vZGUgPSBwYXJhbXMuZ2V0KCdpc0VkaXQnKSA9PT0gJ3RydWUnO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoIWlkKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGVzXCJdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCc/Jyk/LlswXT8uc3BsaXQoJy8nKTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSB7XHJcbiAgICAgICAgICB0aGlzLnVybCA9IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzLnNwbGl0KFwiP1wiKT8uWzBdPy5zcGxpdChcIi9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXNbXCJsZXZlbFwiXSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RQbGFjZW1lbnRMZXZlbCA9IHBhcmFtc1tcImxldmVsXCJdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zW1widGVtcGxhdGVJZFwiXSksXHJcbiAgICAgICAgZmlsdGVyKChpZCkgPT4gISFpZCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIGFzeW5jIChpZCkgPT4gYXdhaXQgdGhpcy5wcy5mZXRjaEZpeHR1cmVUZW1wbGF0ZURldGFpbHMoaWQsIHRydWUpXHJcbiAgICAgICk7XHJcblxyXG4gICAgdGhpcy5wcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscyA9IGRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscykge1xyXG4gICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzLmZpeHR1cmVOYW1lPy5sZW5ndGggfHwgMTA7XHJcbiAgICAgICAgICB0aGlzLmlucHV0V2lkdGggPSBsZW5ndGggKiAxMCArIDEwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZpeHR1cmVOYW1lQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2FuR29CYWNrID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkR1cGxpY2F0ZSh0eXBlPzogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZW9mIHR5cGUgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpZiAoIShhd2FpdCB0aGlzLmNvbmZpcm1DcmVhdGlvbigpKSkgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEoYXdhaXQgdGhpcy5jb25maXJtRHVwbGljYXRlQ3JlYXRpb24oKSkpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZVxyXG4gICAgICAuZHVwbGljYXRlRml4dHVyZVRlbXBsYXRlKHtcclxuICAgICAgICB0ZW1wbGF0ZUlkOiB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/Ll9pZCxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzLmRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgICAgIFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYmFzaWMtZGV0YWlsc1wiXSxcclxuICAgICAgICAgICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHRlbXBsYXRlSWQ6IHJlcz8uZGF0YT8uaWQsIGlzRWRpdDogZmFsc2UgfSB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgICAgZXJyPy5lcnJvcj8uZXJyb3IgfHwgXCJGYWlsZWQgdG8gZHVwbGljYXRlIFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJAQCB+IGR1cGxpY2F0ZUZpeHR1cmVUZW1wbGF0ZSBbZXJyXTpcIiwgZXJyKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgICAgICBlcnI/LmVycm9yPy5lcnJvciB8fCBcIkZhaWxlZCB0byBjcmVhdGUgdmFyaWFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBkdXBsaWNhdGVGaXh0dXJlVGVtcGxhdGUgW2Vycl06XCIsIGVycik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb25maXJtQ3JlYXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubmdiTW9kYWwub3BlbihWYXJpYW50UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gXCJDcmVhdGUgVmFyaWFudFwiO1xyXG4gICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGVzY3JpcHRpb24gPSBgWW914oCZcmUgYWJvdXQgdG8gY3JlYXRlIGEgdmFyaWFudCBmcm9tIHRoZSBtYXN0ZXIgdGVtcGxhdGUg4oCcPGI+JHt0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVOYW1lfTwvYj7igJ0uIE9uY2UgY3JlYXRlZCwgeW91IGNhbiB1cGRhdGUgaXQgYW5kIG1hcCBpdCB0byBvbmUgb3IgbW9yZSBzdG9yZXMgZm9yIHRyYWNraW5nIGFuZCB1cGRhdGVzLmA7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IG1vZGVsUmVmLnJlc3VsdC50aGVuPGJvb2xlYW4+KChyZXN1bHQpID0+IHJlc3VsdCA9PT0gXCJva1wiKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbmZpcm1EdXBsaWNhdGVDcmVhdGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKFZhcmlhbnRQb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSBcIkR1cGxpY2F0ZSBmaXh0dXJlIHRlbXBsYXRlXCI7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kZXNjcmlwdGlvbiA9IGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZHVwbGljYXRlIHRoaXMgVGVtcGxhdGU/YDtcclxuXHJcbiAgICByZXR1cm4gYXdhaXQgbW9kZWxSZWYucmVzdWx0LnRoZW48Ym9vbGVhbj4oKHJlc3VsdCkgPT4gcmVzdWx0ID09PSBcIm9rXCIpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29uZmlybURlbGV0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oRGVsZXRlQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50aXRsZSA9IFwiRGVsZXRlIGZpeHR1cmUgdGVtcGxhdGVcIjtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID1cclxuICAgICAgXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgVGVtcGxhdGU/XCI7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IG1vZGVsUmVmLnJlc3VsdC50aGVuPGJvb2xlYW4+KChyZXN1bHQpID0+IHJlc3VsdCA9PT0gXCJva1wiKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uRGVsZXRlKCkge1xyXG4gICAgaWYgKHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc3RvcmUpIHtcclxuICAgICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oQ2Fubm90UGVyZm9ybUNvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSBgQ2FuJ3QgZGVsZXRlIEZpeHR1cmUgdGVtcGxhdGUhYDtcclxuICAgICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGVzY3JpcHRpb24gPSBgU2luY2UgdGhpcyB0ZW1wbGF0ZSBpcyBsaXZlIGluIFwiJHt0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0b3JlLmxlbmd0aH0gcGxhbm9ncmFtcyxcIiBkZWxldGluZyBpcyBub3QgYWxsb3dlZC5gO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCEoYXdhaXQgdGhpcy5jb25maXJtRGVsZXRpb24oKSkpIHJldHVybjtcclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZVxyXG4gICAgICAuZGVsZXRlRml4dHVyZVRlbXBsYXRlKHsgdGVtcGxhdGVJZDogdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5faWQgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJtYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGVzXCJdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgIGVycj8uZXJyb3I/LmVycm9yIHx8IFwiRmFpbGVkIHRvIGRlbGV0ZSBUZW1wbGF0ZVwiXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJAQCB+IGRlbGV0ZUZpeHR1cmVUZW1wbGF0ZSBbZXJyXTpcIiwgZXJyKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uU3VibWl0KGRhdGE6IHsgc3RhdHVzOiBzdHJpbmc7IGdvQmFjazogYm9vbGVhbiB9KSB7XHJcbiAgICB0eXBlIFRhYktleSA9IFwiYmFzaWMtZGV0YWlsc1wiIHwgXCJwcm9kdWN0c1wiIHwgXCJ2bXNcIjtcclxuICAgIHRoaXMuY2FuR29CYWNrID0gZGF0YS5nb0JhY2s7XHJcbiAgICB0aGlzLmVycm9yVGFicyA9IHRoaXMucHMuZml4dHVyZVRlbXBsYXRlRXJyb3JUYWJzO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRUYWIgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoXCI/XCIpWzBdLnNwbGl0KFwiL1wiKS5wb3AoKSBhcyBUYWJLZXk7XHJcblxyXG4gICAgY29uc3QgdGFiSGFzRXJyb3I6IFJlY29yZDxUYWJLZXksIGJvb2xlYW4+ID0ge1xyXG4gICAgICBcImJhc2ljLWRldGFpbHNcIjogdGhpcy5lcnJvclRhYnMuYmFzaWNEZXRhaWxzLFxyXG4gICAgICBwcm9kdWN0czogdGhpcy5lcnJvclRhYnMucHJvZHVjdHMsXHJcbiAgICAgIHZtczogdGhpcy5lcnJvclRhYnMudm1zLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvdGhlclRhYnNIYXZlRXJyb3JzID0gT2JqZWN0LnZhbHVlcyh0YWJIYXNFcnJvcikuc29tZShCb29sZWFuKTtcclxuICAgIGlmIChvdGhlclRhYnNIYXZlRXJyb3JzICYmICF0YWJIYXNFcnJvcltjdXJyZW50VGFiXSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnNob3dFcnJvckRpYWxvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHMudHJpZ2dlckZpeHR1cmVUZW1wbGF0ZUZvcm1TdWJtaXNzaW9uKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd0Vycm9yRGlhbG9nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jYW5Hb0JhY2sgPSBmYWxzZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLm5nYk1vZGFsLm9wZW4odGhpcy5lcnJvck1vZGFsUmVmLCB7IGNlbnRlcmVkOiB0cnVlIH0pLnJlc3VsdDtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZXJyb3JUYWJzLnZtc1xyXG4gICAgICA/IFwidm1zXCJcclxuICAgICAgOiB0aGlzLmVycm9yVGFicy5wcm9kdWN0c1xyXG4gICAgICAgID8gXCJwcm9kdWN0c1wiXHJcbiAgICAgICAgOiB0aGlzLmVycm9yVGFicy5iYXNpY0RldGFpbHNcclxuICAgICAgICAgID8gXCJiYXNpYy1kZXRhaWxzXCJcclxuICAgICAgICAgIDogXCJiYXNpYy1kZXRhaWxzXCI7IC8vIGZhbGxiYWNrXHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZVwiLCBwYXRoXSwge1xyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcInByZXNlcnZlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBhc3luYyBjb25maXJtRWRpdCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICgodGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdG9yZUNvdW50ID8/IDApIDw9IDApIHJldHVybiB0cnVlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oTGF5b3V0RWRpdENvbmZpcm1hdGlvbkNvbXBvbmVudCwgeyBjZW50ZXJlZDogdHJ1ZSB9KTtcclxuICAgICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSBgRWRpdCB0ZW1wbGF0ZWA7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gYFlvdSBhcmUgYWJvdXQgdG8gZWRpdCBhbiBhY3RpdmUgdGVtcGxhdGUuIFBsZWFzZSByZXZpZXcgYW5kIHB1Ymxpc2ggdGhlIGNoYW5nZXNgO1xyXG4gICAgICByZXR1cm4gYXdhaXQgbW9kZWxSZWYucmVzdWx0LnRoZW48Ym9vbGVhbj4oKHJlc3VsdCkgPT4gcmVzdWx0ID09PSAnb2snKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgb25DbGlja0VkaXQoKSB7XHJcbiAgICBpZiAoIWF3YWl0IHRoaXMuY29uZmlybUVkaXQoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0VkaXRNb2RlID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xyXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxyXG4gICAgICByZXBsYWNlVXJsOiB0cnVlLFxyXG4gICAgICBxdWVyeVBhcmFtczogeyBpc0VkaXQ6IHRydWUgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjYW5EZWFjdGl2YXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgdGhpcy5lcnJvclRhYnMgPSB0aGlzLnBzLmZpeHR1cmVUZW1wbGF0ZUVycm9yVGFicztcclxuICAgIGlmICh0aGlzLmNhbkdvQmFjayB8fCAhdGhpcy5pc0VkaXRNb2RlKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBpZ25vcmVVcGRhdGUsIC4uLm9yaWdpbmFsVHJpbW1lZCB9ID1cclxuICAgICAgdGhpcy5wcy5vcmlnaW5hbEZpeHR1cmVUZW1wbGF0ZURldGFpbHMhO1xyXG4gICAgY29uc3QgeyBpZ25vcmVVcGRhdGU6IF8sIC4uLmN1cnJlbnRUcmltbWVkIH0gPSB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMhO1xyXG5cclxuICAgIGlmICghZGVlcEVxdWFsKG9yaWdpbmFsVHJpbW1lZCwgY3VycmVudFRyaW1tZWQpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29uZmlybUV4aXQoKTtcclxuXHJcbiAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICB0aGlzLmNhbkdvQmFjayA9XHJcbiAgICAgICAgICAhdGhpcy5lcnJvclRhYnMuYmFzaWNEZXRhaWxzICYmXHJcbiAgICAgICAgICAhdGhpcy5lcnJvclRhYnMucHJvZHVjdHMgJiZcclxuICAgICAgICAgICF0aGlzLmVycm9yVGFicy52bXM7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5vblN1Ym1pdCh7IHN0YXR1czogXCJkcmFmdFwiLCBnb0JhY2s6IHRoaXMuY2FuR29CYWNrIH0pO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29uZmlybUV4aXQoKTogUHJvbWlzZTxib29sZWFuIHwgbnVsbD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oRXhpdENvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIGF3YWl0IG1vZGVsUmVmLnJlc3VsdC50aGVuPGJvb2xlYW4+KChyZXN1bHQpID0+IHJlc3VsdCA9PT0gXCJva1wiKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZmluZFJlcGxhY2UoKSB7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFxyXG4gICAgICBgbWFuYWdlL3BsYW5vZ3JhbS9maW5kQW5kUmVwbGFjZT9zZWxlY3RlZEZpeHR1cmU9JHt0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/Ll9pZH1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ29CYWNrKCkge1xyXG4gICAgdGhpcy5sb2NhdGlvbi5iYWNrKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gICAgdGhpcy5wcy51cGRhdGVGaXh0dXJlVGVtcGxhdGVEZXRhaWxzKG51bGwpO1xyXG4gIH1cclxufSIsIjxzZWN0aW9uIGlkPVwiZml4dHVyZS10ZW1wbGF0ZVwiICpuZ0lmPVwiIWlzUGFnZUxvYWRpbmdcIj5cclxuICA8IS0tIEhlYWRlciBzZWN0aW9uIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudHMtY2VudGVyIGdhcC01XCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHAtM1wiIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgZD1cIk0xNS44MzM0IDkuOTk5ODRINC4xNjY3NU00LjE2Njc1IDkuOTk5ODRMMTAuMDAwMSAxNS44MzMyTTQuMTY2NzUgOS45OTk4NEwxMC4wMDAxIDQuMTY2NVwiXHJcbiAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8c3BhblxyXG4gICAgICAgIFtuZ2JUb29sdGlwXT1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVOYW1lXCJcclxuICAgICAgICBzdHlsZT1cImFsbDogdW5zZXQ7IGZvbnQtc2l6ZTogMS41cmVtOyBmb250LXdlaWdodDogYm9sZDsgbWF4LXdpZHRoOiA2MDBweFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiKGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVOYW1lPy5sZW5ndGggPz8gMCkgPiAyMDAgPyAnZWxsaXBzaXMnIDogJydcIlxyXG4gICAgICAgID5cclxuICAgICAgICB7eyBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlTmFtZSB9fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDwhLS0gKm5nSWY9XCIhaXNFZGl0TW9kZVwiIC0tPlxyXG4gICAgICA8IS0tIDxpbnB1dFxyXG4gICAgICAgIGNsYXNzPVwibS0wXCJcclxuICAgICAgICBbKG5nTW9kZWwpXT1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHMhLmZpeHR1cmVOYW1lXCJcclxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpeHR1cmVOYW1lQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICpuZ0lmPVwiaXNFZGl0TW9kZVwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoLnB4XT1cImlucHV0V2lkdGggPCAyMDAgPyAyMDAgOiBpbnB1dFdpZHRoXCJcclxuICAgICAgICBzdHlsZT1cImFsbDogdW5zZXQ7IGZvbnQtc2l6ZTogMS41cmVtOyBmb250LXdlaWdodDogYm9sZFwiXHJcbiAgICAgIC8+IC0tPlxyXG4gICAgICBAaWYoZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udGVtcGxhdGVUeXBlICE9PSAnbWFzdGVyJykge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdDbGFzc109XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdGF0dXNcIj57eyBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdGF0dXMgfCB0aXRsZWNhc2UgfX08L2Rpdj5cclxuICAgICAgfSBAZWxzZSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnlcIj5NYXN0ZXI8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnRzLWNlbnRlciBnYXAtNVwiPlxyXG4gICAgICA8cFxyXG4gICAgICAgIGNsYXNzPVwibS0wXCJcclxuICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnVwZGF0ZWRBdCAmJiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZVR5cGUgIT09ICdtYXN0ZXInXCJcclxuICAgICAgICBbbmdiVG9vbHRpcF09XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy51cGRhdGVkQXQgfCBkYXRlIDogJ21lZGl1bSdcIlxyXG4gICAgICA+XHJcbiAgICAgICAgTGFzdCB1cGRhdGU6IHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnVwZGF0ZWRBdCB8IHRpbWVBZ28gfX1cclxuICAgICAgPC9wPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWlzRWRpdE1vZGVcIj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tFZGl0KClcIlxyXG4gICAgICAgICAgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZVR5cGUgIT09ICdtYXN0ZXInXCJcclxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cmwuaW5jbHVkZXMoJ2Fzc2lnbi1zdG9yZXMnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPCEtLSBbZGlzYWJsZWRdPVwidGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdGF0dXMgPT09ICdhY3RpdmUnXCIgLS0+XHJcbiAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xMzIyXzUzMjUpXCI+XHJcbiAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgIGQ9XCJNMTQuMTY2NyAyLjQ5OTkzQzE0LjM4NTYgMi4yODEwNiAxNC42NDU1IDIuMTA3NDQgMTQuOTMxNCAxLjk4ODk5QzE1LjIxNzQgMS44NzA1NCAxNS41MjM5IDEuODA5NTcgMTUuODMzNCAxLjgwOTU3QzE2LjE0MjkgMS44MDk1NyAxNi40NDk0IDEuODcwNTQgMTYuNzM1NCAxLjk4ODk5QzE3LjAyMTQgMi4xMDc0NCAxNy4yODEyIDIuMjgxMDYgMTcuNTAwMSAyLjQ5OTkzQzE3LjcxOSAyLjcxODggMTcuODkyNiAyLjk3ODYzIDE4LjAxMSAzLjI2NDZDMTguMTI5NSAzLjU1MDU3IDE4LjE5MDQgMy44NTcwNiAxOC4xOTA0IDQuMTY2NTlDMTguMTkwNCA0LjQ3NjEyIDE4LjEyOTUgNC43ODI2MiAxOC4wMTEgNS4wNjg1OUMxNy44OTI2IDUuMzU0NTUgMTcuNzE5IDUuNjE0MzkgMTcuNTAwMSA1LjgzMzI2TDYuMjUwMDggMTcuMDgzM0wxLjY2Njc1IDE4LjMzMzNMMi45MTY3NSAxMy43NDk5TDE0LjE2NjcgMi40OTk5M1pcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTMyMl81MzI1XCI+XHJcbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgRWRpdFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25EdXBsaWNhdGUoJ21hc3RlcicpXCJcclxuICAgICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udGVtcGxhdGVUeXBlID09PSAnbWFzdGVyJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgQ3JlYXRlIHZhcmlhbnRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nSWY9XCJpc0VkaXRNb2RlICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlVHlwZSAhPT0gJ21hc3RlcidcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGdhcC01IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcclxuICAgICAgPlxyXG4gICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdGF0dXMgIT09ICdhY3RpdmUnXCJcclxuICAgICAgICAgIG5nYlRvb2x0aXA9XCJTcG90IHByb2R1Y3QgcGxhY2VtZW50IGlzbid0IGF2YWlsYWJsZSB5ZXRcIlxyXG4gICAgICAgICAgW2Rpc2FibGVUb29sdGlwXT1cInNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsICE9PSAnc3BvdCdcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KHsgc3RhdHVzOiAnZHJhZnQnLCBnb0JhY2s6IGZhbHNlIH0pXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsID09PSAnc3BvdCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTYXZlIGFzIGRyYWZ0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBuZ2JUb29sdGlwPVwiU3BvdCBwcm9kdWN0IHBsYWNlbWVudCBpc24ndCBhdmFpbGFibGUgeWV0XCIgW2Rpc2FibGVUb29sdGlwXT1cInNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsICE9PSAnc3BvdCdcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0KHsgc3RhdHVzOiAnY29tcGxldGUnLCBnb0JhY2s6IGZhbHNlIH0pXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsID09PSAnc3BvdCcgfHwgdXJsLmluY2x1ZGVzKCdhc3NpZ24tc3RvcmVzJylcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlVHlwZSAhPT0gJ21hc3RlcidcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHAtM1wiIHR5cGU9XCJidXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTExIDEyQzExIDEyLjU1MjMgMTEuNDQ3NyAxMyAxMiAxM0MxMi41NTIzIDEzIDEzIDEyLjU1MjMgMTMgMTJDMTMgMTEuNDQ3NyAxMi41NTIzIDExIDEyIDExQzExLjQ0NzcgMTEgMTEgMTEuNDQ3NyAxMSAxMlpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTExIDE5QzExIDE5LjU1MjMgMTEuNDQ3NyAyMCAxMiAyMEMxMi41NTIzIDIwIDEzIDE5LjU1MjMgMTMgMTlDMTMgMTguNDQ3NyAxMi41NTIzIDE4IDEyIDE4QzExLjQ0NzcgMTggMTEgMTguNDQ3NyAxMSAxOVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICBkPVwiTTExIDVDMTEgNS41NTIyOCAxMS40NDc3IDYgMTIgNkMxMi41NTIzIDYgMTMgNS41NTIyOCAxMyA1QzEzIDQuNDQ3NzIgMTIuNTUyMyA0IDEyIDRDMTEuNDQ3NyA0IDExIDQuNDQ3NzIgMTEgNVpcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICA8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XHJcbiAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm9uRHVwbGljYXRlKClcIiAqbmdJZj1cIiFpc0VkaXRNb2RlXCI+IER1cGxpY2F0ZTwvYT48L2xpPlxyXG4gICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJmaW5kUmVwbGFjZSgpXCIgKm5nSWY9XCIhaXNFZGl0TW9kZVwiPiBGaW5kICYgUmVwbGFjZTwvYT48L2xpPlxyXG4gICAgICAgICAgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBjdXJzb3ItcG9pbnRlciB0ZXh0LWRhbmdlclwiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+RGVsZXRlPC9hPjwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPHVsIGNsYXNzPVwibXgtMyBteS01IG5hdiBuYXYtcGlsbHNcIiByb2xlPVwidGFibGlzdFwiPlxyXG4gICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL2Jhc2ljLWRldGFpbHMnXVwiXHJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgdGVtcGxhdGVJZDogZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkLCBpc0VkaXQ6IGlzRWRpdE1vZGUgfVwiXHJcbiAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInsgZXhhY3Q6IGZhbHNlIH1cIlxyXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxyXG4gICAgICAgIFtzdGF0ZV09XCJ7IHNraXBIaXN0b3J5OiB0cnVlIH1cIlxyXG4gICAgICAgIFtyZXBsYWNlVXJsXT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxyXG4gICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgQmFzaWMgZGV0YWlsc1xyXG4gICAgICA8L2E+XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL3Byb2R1Y3RzJ11cIlxyXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IHRlbXBsYXRlSWQ6IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/Ll9pZCwgaXNFZGl0OiBpc0VkaXRNb2RlIH1cIlxyXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxyXG4gICAgICAgIFtzdGF0ZV09XCJ7IHNraXBIaXN0b3J5OiB0cnVlIH1cIlxyXG4gICAgICAgIFtyZXBsYWNlVXJsXT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxyXG4gICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgUHJvZHVjdHNcclxuICAgICAgPC9hPlxyXG4gICAgPC9saT5cclxuICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxyXG4gICAgICA8YVxyXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZS92bXMnXVwiXHJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgdGVtcGxhdGVJZDogZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkLCBpc0VkaXQ6IGlzRWRpdE1vZGUgfVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgW3N0YXRlXT1cInsgc2tpcEhpc3Rvcnk6IHRydWUgfVwiXHJcbiAgICAgICAgW3JlcGxhY2VVcmxdPVwidHJ1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgID5cclxuICAgICAgICBWaXN1YWwgTWVyY2hhbmRpc2VcclxuICAgICAgPC9hPlxyXG4gICAgPC9saT5cclxuICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtXCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxyXG4gICAgICA8YVxyXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZS9zdW1tYXJ5J11cIlxyXG4gICAgICAgIFtxdWVyeVBhcmFtc109XCJ7IHRlbXBsYXRlSWQ6IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/Ll9pZCwgaXNFZGl0OiBpc0VkaXRNb2RlIH1cIlxyXG4gICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmVcIlxyXG4gICAgICAgIFtzdGF0ZV09XCJ7IHNraXBIaXN0b3J5OiB0cnVlIH1cIlxyXG4gICAgICAgIFtyZXBsYWNlVXJsXT1cInRydWVcIlxyXG4gICAgICAgIGNsYXNzPVwibmF2LWxpbmtcIlxyXG4gICAgICAgIHJvbGU9XCJ0YWJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgU3VtbWFyeVxyXG4gICAgICA8L2E+XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udGVtcGxhdGVUeXBlID09PSAnc3ViJ1wiIGNsYXNzPVwibmF2LWl0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL2Fzc2lnbi1zdG9yZXMnXVwiXHJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgdGVtcGxhdGVJZDogZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkLCBpc0VkaXQ6IGlzRWRpdE1vZGUgfVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgID5cclxuICAgICAgICBBc3NpZ24gU3RvcmVzXHJcbiAgICAgIDwvYT5cclxuICAgIDwvbGk+XHJcbiAgPC91bD5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQtd3JhcHBlclwiPlxyXG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48c2VjdGlvbiBpZD1cImZpeHR1cmUtdGVtcGxhdGUtc2tlbGV0b25cIiAqbmdJZj1cImlzUGFnZUxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPG5nLXRlbXBsYXRlICNlcnJvck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGg0IGNsYXNzPVwibWItM1wiPlRvIHNhdmUgZml4dHVyZSB0ZW1wbGF0ZSwgcGxlYXNlIHJlc29sdmUgdGhlIGVycm9ycyBpbiB0aGVzZSBzZWN0aW9uczo8L2g0PlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiZXJyb3JUYWJzLmJhc2ljRGV0YWlsc1wiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj48cD5CYXNpYyBEZXRhaWxzPC9wPjwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiZXJyb3JUYWJzLnByb2R1Y3RzXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxwPlByb2R1Y3RzPC9wPjwvbGk+XHJcbiAgICAgICAgPGxpICpuZ0lmPVwiZXJyb3JUYWJzLnZtc1wiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj48cD5WTTwvcD48L2xpPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuY2xvc2UoKVwiPk9rPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9maXh0dXJlLXRlbXBsYXRlL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFuZ28tc3RvcmUtYnVpbGRlci9zcmMvbGliL2NvbXBvbmVudHMvZml4dHVyZS10ZW1wbGF0ZS9maXh0dXJlLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWtDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQWtCLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBRXhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDMUcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVFQUF1RSxDQUFDOzs7Ozs7Ozs7QUFPeEgsTUFBTSxPQUFPLHdCQUF3QjtJQXdCekI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUEzQlYsYUFBYSxHQUFZLElB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R0FBRyxJQUFJLENBQUM7YUFDN0M7WUFFRCxJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO2dCQUNyRixFQUFFLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsRUFBRSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7d0dBelVVLHdCQUF3Qjs0RkFBeEIsd0JBQXdCLHlLQ3ZCckMsNjJXQTRRQTs7NEZEclBhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0I7a1BBa0JQLGFBQWE7c0JBQXJDLFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcclxuaW1wb3J0IHsgRml4dHVyZVRlbXBsYXRlRGV0YWlscyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZml4dHVyZS10ZW1wbGF0ZS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBQbGFub0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGxhbm8tZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERlbGV0ZUNvbmZpcm1hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3BvcHVwcy9kZWxldGUtY29uZmlybWF0aW9uL2RlbGV0ZS1jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2Fubm90UGVyZm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3BvcHVwcy9jYW5ub3QtcGVyZm9ybS9jYW5ub3QtcGVyZm9ybS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDYW5FeGl0R3VhcmQgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZXhpdC5ndWFyZCc7XHJcbmltcG9ydCB7IEV4aXRDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wb3B1cHMvZXhpdC1jb25maXJtYXRpb24vZXhpdC1jb25maXJtYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3BsYW5vLmZ1bmN0aW9uJztcclxuaW1wb3J0IHsgVmFyaWFudFBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wdXBzL3ZhcmlhbnQtcG9wdXAvdmFyaWFudC1wb3B1cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IExheW91dEVkaXRDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9wb3B1cHMvbGF5b3V0LWVkaXQtY29uZmlybWF0aW9uL2xheW91dC1lZGl0LWNvbmZpcm1hdGlvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwibGliLWZpeHR1cmUtdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2ZpeHR1cmUtdGVtcGxhdGUuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpeHR1cmVUZW1wbGF0ZUNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBDYW5FeGl0R3VhcmQsIE9uRGVzdHJveVxyXG57XHJcbiAgaXNQYWdlTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gaXNFcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZml4dHVyZVRlbXBsYXRlRGV0YWlsczogRml4dHVyZVRlbXBsYXRlRGV0YWlscyB8IG51bGw7XHJcblxyXG4gIHNlbGVjdGVkUHJvZHVjdFBsYWNlbWVudExldmVsOiBzdHJpbmcgPSBcImZpeHR1cmVcIjtcclxuICBjYW5Hb0JhY2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB1cmw6IGFueSA9IFtdO1xyXG5cclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBAVmlld0NoaWxkKFwiZXJyb3JNb2RhbFwiKSBlcnJvck1vZGFsUmVmITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgZXJyb3JUYWJzOiB7XHJcbiAgICBiYXNpY0RldGFpbHM6IGJvb2xlYW47XHJcbiAgICBwcm9kdWN0czogYm9vbGVhbjtcclxuICAgIHZtczogYm9vbGVhbjtcclxuICB9O1xyXG4gIGlucHV0V2lkdGg6IG51bWJlciA9IDUwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBwczogUGxhbm9EYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmVCdWlsZGVyU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHRvYXN0OiBUb2FzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5nYk1vZGFsOiBOZ2JNb2RhbCxcclxuICAgIHByaXZhdGUgbG9jYXRpb246IExvY2F0aW9uXHJcbiAgKSB7fVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xyXG4gICAgY29uc3QgaWQgPSBwYXJhbXNbXCJ0ZW1wbGF0ZUlkXCJdO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbU1hcFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNFZGl0TW9kZSA9IHBhcmFtcy5nZXQoXCJpc0VkaXRcIikgPT09IFwidHJ1ZVwiO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoIWlkKSB7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGVzXCJdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KFwiP1wiKT8uWzBdPy5zcGxpdChcIi9cIik7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgIGlmIChldmVudC51cmxBZnRlclJlZGlyZWN0cykge1xyXG4gICAgICAgICAgdGhpcy51cmwgPSBldmVudC51cmxBZnRlclJlZGlyZWN0cy5zcGxpdChcIj9cIik/LlswXT8uc3BsaXQoXCIvXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xyXG4gICAgICAgIGlmIChwYXJhbXNbXCJsZXZlbFwiXSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFByb2R1Y3RQbGFjZW1lbnRMZXZlbCA9IHBhcmFtc1tcImxldmVsXCJdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zW1widGVtcGxhdGVJZFwiXSksXHJcbiAgICAgICAgZmlsdGVyKChpZCkgPT4gISFpZCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgIGFzeW5jIChpZCkgPT4gYXdhaXQgdGhpcy5wcy5mZXRjaEZpeHR1cmVUZW1wbGF0ZURldGFpbHMoaWQsIHRydWUpXHJcbiAgICAgICk7XHJcblxyXG4gICAgdGhpcy5wcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscyA9IGRhdGE7XHJcbiAgICAgICAgaWYgKHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscykge1xyXG4gICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzLmZpeHR1cmVOYW1lPy5sZW5ndGggfHwgMTA7XHJcbiAgICAgICAgICB0aGlzLmlucHV0V2lkdGggPSBsZW5ndGggKiAxMCArIDEwO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkZpeHR1cmVOYW1lQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY2FuR29CYWNrID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkR1cGxpY2F0ZSh0eXBlPzogc3RyaW5nKSB7XHJcbiAgICBpZiAodHlwZW9mIHR5cGUgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpZiAoIShhd2FpdCB0aGlzLmNvbmZpcm1DcmVhdGlvbigpKSkgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKCEoYXdhaXQgdGhpcy5jb25maXJtRHVwbGljYXRlQ3JlYXRpb24oKSkpIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc3RvcmVCdWlsZGVyU2VydmljZVxyXG4gICAgICAuZHVwbGljYXRlRml4dHVyZVRlbXBsYXRlKHtcclxuICAgICAgICB0ZW1wbGF0ZUlkOiB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/Ll9pZCxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QocmVzLmRhdGEubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxyXG4gICAgICAgICAgICAgIFtcIi9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYmFzaWMtZGV0YWlsc1wiXSxcclxuICAgICAgICAgICAgICB7IHF1ZXJ5UGFyYW1zOiB7IHRlbXBsYXRlSWQ6IHJlcz8uZGF0YT8uaWQsIGlzRWRpdDogZmFsc2UgfSB9XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXHJcbiAgICAgICAgICAgICAgZXJyPy5lcnJvcj8uZXJyb3IgfHwgXCJGYWlsZWQgdG8gZHVwbGljYXRlIFRlbXBsYXRlXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0RXJyb3JUb2FzdChcclxuICAgICAgICAgICAgICBlcnI/LmVycm9yPy5lcnJvciB8fCBcIkZhaWxlZCB0byBjcmVhdGUgdmFyaWFudFwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkBAIH4gZHVwbGljYXRlRml4dHVyZVRlbXBsYXRlIFtlcnJdOlwiLCBlcnIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY29uZmlybUNyZWF0aW9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgbW9kZWxSZWYgPSB0aGlzLm5nYk1vZGFsLm9wZW4oVmFyaWFudFBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50aXRsZSA9IFwiQ3JlYXRlIFZhcmlhbnRcIjtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gYFlvdeKAmXJlIGFib3V0IHRvIGNyZWF0ZSBhIHZhcmlhbnQgZnJvbSB0aGUgbWFzdGVyIHRlbXBsYXRlIOKAnDxiPiR7dGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlTmFtZX08L2I+4oCdLiBPbmNlIGNyZWF0ZWQsIHlvdSBjYW4gdXBkYXRlIGl0IGFuZCBtYXAgaXQgdG8gb25lIG9yIG1vcmUgc3RvcmVzIGZvciB0cmFja2luZyBhbmQgdXBkYXRlcy5gO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBtb2RlbFJlZi5yZXN1bHQudGhlbjxib29sZWFuPigocmVzdWx0KSA9PiByZXN1bHQgPT09IFwib2tcIik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjb25maXJtRHVwbGljYXRlQ3JlYXRpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubmdiTW9kYWwub3BlbihWYXJpYW50UG9wdXBDb21wb25lbnQsIHtcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gXCJEdXBsaWNhdGUgZml4dHVyZSB0ZW1wbGF0ZVwiO1xyXG4gICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGVzY3JpcHRpb24gPSBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGR1cGxpY2F0ZSB0aGlzIFRlbXBsYXRlP2A7XHJcblxyXG4gICAgcmV0dXJuIGF3YWl0IG1vZGVsUmVmLnJlc3VsdC50aGVuPGJvb2xlYW4+KChyZXN1bHQpID0+IHJlc3VsdCA9PT0gXCJva1wiKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbmZpcm1EZWxldGlvbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKERlbGV0ZUNvbmZpcm1hdGlvbkNvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UudGl0bGUgPSBcIkRlbGV0ZSBmaXh0dXJlIHRlbXBsYXRlXCI7XHJcbiAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS5kZXNjcmlwdGlvbiA9XHJcbiAgICAgIFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFRlbXBsYXRlP1wiO1xyXG5cclxuICAgIHJldHVybiBhd2FpdCBtb2RlbFJlZi5yZXN1bHQudGhlbjxib29sZWFuPigocmVzdWx0KSA9PiByZXN1bHQgPT09IFwib2tcIik7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkRlbGV0ZSgpIHtcclxuICAgIGlmICh0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0b3JlKSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKENhbm5vdFBlcmZvcm1Db21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLnRpdGxlID0gYENhbid0IGRlbGV0ZSBGaXh0dXJlIHRlbXBsYXRlIWA7XHJcbiAgICAgIG1vZGVsUmVmLmNvbXBvbmVudEluc3RhbmNlLmRlc2NyaXB0aW9uID0gYFNpbmNlIHRoaXMgdGVtcGxhdGUgaXMgbGl2ZSBpbiBcIiR7dGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zdG9yZS5sZW5ndGh9IHBsYW5vZ3JhbXMsXCIgZGVsZXRpbmcgaXMgbm90IGFsbG93ZWQuYDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghKGF3YWl0IHRoaXMuY29uZmlybURlbGV0aW9uKCkpKSByZXR1cm47XHJcbiAgICB0aGlzLnN0b3JlQnVpbGRlclNlcnZpY2VcclxuICAgICAgLmRlbGV0ZUZpeHR1cmVUZW1wbGF0ZSh7IHRlbXBsYXRlSWQ6IHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3QuZ2V0U3VjY2Vzc1RvYXN0KHJlcy5tZXNzYWdlKTtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlc1wiXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KFxyXG4gICAgICAgICAgICBlcnI/LmVycm9yPy5lcnJvciB8fCBcIkZhaWxlZCB0byBkZWxldGUgVGVtcGxhdGVcIlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBkZWxldGVGaXh0dXJlVGVtcGxhdGUgW2Vycl06XCIsIGVycik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBvblN1Ym1pdChkYXRhOiB7IHN0YXR1czogc3RyaW5nOyBnb0JhY2s6IGJvb2xlYW4gfSkge1xyXG4gICAgdGhpcy52YWxpZGF0ZUZpeHR1cmVEYXRhKCk7XHJcbiAgICB0eXBlIFRhYktleSA9IFwiYmFzaWMtZGV0YWlsc1wiIHwgXCJwcm9kdWN0c1wiIHwgXCJ2bXNcIjtcclxuICAgIHRoaXMuY2FuR29CYWNrID0gZGF0YS5nb0JhY2s7XHJcbiAgICB0aGlzLmVycm9yVGFicyA9IHRoaXMucHMuZml4dHVyZVRlbXBsYXRlRXJyb3JUYWJzO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRUYWIgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoXCI/XCIpWzBdLnNwbGl0KFwiL1wiKS5wb3AoKSBhcyBUYWJLZXk7XHJcblxyXG4gICAgY29uc3QgdGFiSGFzRXJyb3I6IFJlY29yZDxUYWJLZXksIGJvb2xlYW4+ID0ge1xyXG4gICAgICBcImJhc2ljLWRldGFpbHNcIjogdGhpcy5lcnJvclRhYnMuYmFzaWNEZXRhaWxzLFxyXG4gICAgICBwcm9kdWN0czogdGhpcy5lcnJvclRhYnMucHJvZHVjdHMsXHJcbiAgICAgIHZtczogdGhpcy5lcnJvclRhYnMudm1zLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBvdGhlclRhYnNIYXZlRXJyb3JzID0gT2JqZWN0LnZhbHVlcyh0YWJIYXNFcnJvcikuc29tZShCb29sZWFuKTtcclxuICAgIGlmIChvdGhlclRhYnNIYXZlRXJyb3JzICYmICF0YWJIYXNFcnJvcltjdXJyZW50VGFiXSkge1xyXG4gICAgICBhd2FpdCB0aGlzLnNob3dFcnJvckRpYWxvZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucHMudHJpZ2dlckZpeHR1cmVUZW1wbGF0ZUZvcm1TdWJtaXNzaW9uKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd0Vycm9yRGlhbG9nKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5jYW5Hb0JhY2sgPSBmYWxzZTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLm5nYk1vZGFsLm9wZW4odGhpcy5lcnJvck1vZGFsUmVmLCB7IGNlbnRlcmVkOiB0cnVlIH0pLnJlc3VsdDtcclxuICAgIH0gY2F0Y2gge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGF0aCA9IHRoaXMuZXJyb3JUYWJzLnZtc1xyXG4gICAgICA/IFwidm1zXCJcclxuICAgICAgOiB0aGlzLmVycm9yVGFicy5wcm9kdWN0c1xyXG4gICAgICA/IFwicHJvZHVjdHNcIlxyXG4gICAgICA6IHRoaXMuZXJyb3JUYWJzLmJhc2ljRGV0YWlsc1xyXG4gICAgICA/IFwiYmFzaWMtZGV0YWlsc1wiXHJcbiAgICAgIDogXCJiYXNpYy1kZXRhaWxzXCI7IC8vIGZhbGxiYWNrXHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS9wbGFub2dyYW0vZml4dHVyZS10ZW1wbGF0ZVwiLCBwYXRoXSwge1xyXG4gICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiBcInByZXNlcnZlXCIsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbmZpcm1FZGl0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgaWYgKCh0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0b3JlQ291bnQgPz8gMCkgPD0gMCkgcmV0dXJuIHRydWU7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBtb2RlbFJlZiA9IHRoaXMubmdiTW9kYWwub3BlbihMYXlvdXRFZGl0Q29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBtb2RlbFJlZi5jb21wb25lbnRJbnN0YW5jZS50aXRsZSA9IGBFZGl0IHRlbXBsYXRlYDtcclxuICAgICAgbW9kZWxSZWYuY29tcG9uZW50SW5zdGFuY2UuZGVzY3JpcHRpb24gPSBgWW91IGFyZSBhYm91dCB0byBlZGl0IGFuIGFjdGl2ZSB0ZW1wbGF0ZS4gUGxlYXNlIHJldmlldyBhbmQgcHVibGlzaCB0aGUgY2hhbmdlc2A7XHJcbiAgICAgIHJldHVybiBhd2FpdCBtb2RlbFJlZi5yZXN1bHQudGhlbjxib29sZWFuPigocmVzdWx0KSA9PiByZXN1bHQgPT09IFwib2tcIik7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBvbkNsaWNrRWRpdCgpIHtcclxuICAgIGlmICghKGF3YWl0IHRoaXMuY29uZmlybUVkaXQoKSkpIHJldHVybjtcclxuICAgIHRoaXMuaXNFZGl0TW9kZSA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcclxuICAgICAgcmVwbGFjZVVybDogdHJ1ZSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHsgaXNFZGl0OiB0cnVlIH0sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6IFwibWVyZ2VcIixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHRoaXMuZXJyb3JUYWJzID0gdGhpcy5wcy5maXh0dXJlVGVtcGxhdGVFcnJvclRhYnM7XHJcbiAgICBpZiAodGhpcy5jYW5Hb0JhY2sgfHwgIXRoaXMuaXNFZGl0TW9kZSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgaWdub3JlVXBkYXRlLCAuLi5vcmlnaW5hbFRyaW1tZWQgfSA9XHJcbiAgICAgIHRoaXMucHMub3JpZ2luYWxGaXh0dXJlVGVtcGxhdGVEZXRhaWxzITtcclxuICAgIGNvbnN0IHsgaWdub3JlVXBkYXRlOiBfLCAuLi5jdXJyZW50VHJpbW1lZCB9ID0gdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzITtcclxuXHJcbiAgICBpZiAoIWRlZXBFcXVhbChvcmlnaW5hbFRyaW1tZWQsIGN1cnJlbnRUcmltbWVkKSkge1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1FeGl0KCk7XHJcblxyXG4gICAgICBpZiAocmVzdWx0ID09PSBudWxsKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5jYW5Hb0JhY2sgPVxyXG4gICAgICAgICAgIXRoaXMuZXJyb3JUYWJzLmJhc2ljRGV0YWlscyAmJlxyXG4gICAgICAgICAgIXRoaXMuZXJyb3JUYWJzLnByb2R1Y3RzICYmXHJcbiAgICAgICAgICAhdGhpcy5lcnJvclRhYnMudm1zO1xyXG4gICAgICAgIGF3YWl0IHRoaXMub25TdWJtaXQoeyBzdGF0dXM6IFwiZHJhZnRcIiwgZ29CYWNrOiB0aGlzLmNhbkdvQmFjayB9KTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGNvbmZpcm1FeGl0KCk6IFByb21pc2U8Ym9vbGVhbiB8IG51bGw+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IG1vZGVsUmVmID0gdGhpcy5uZ2JNb2RhbC5vcGVuKEV4aXRDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBhd2FpdCBtb2RlbFJlZi5yZXN1bHQudGhlbjxib29sZWFuPigocmVzdWx0KSA9PiByZXN1bHQgPT09IFwib2tcIik7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZpbmRSZXBsYWNlKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcclxuICAgICAgYG1hbmFnZS9wbGFub2dyYW0vZmluZEFuZFJlcGxhY2U/c2VsZWN0ZWRGaXh0dXJlPSR7dGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5faWR9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdvQmFjaygpIHtcclxuICAgIHRoaXMubG9jYXRpb24uYmFjaygpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGaXh0dXJlRGF0YSgpIHtcclxuICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udm1Db25maWc/LmZvckVhY2goKHZtKSA9PiB7XHJcbiAgICAgIGlmICgodm0/LnN0YXJ0WVBvc2l0aW9uID8/IDEpID4gKHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWc/Lmxlbmd0aCA/PyAxKSkge1xyXG4gICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBzLmZpeHR1cmVUZW1wbGF0ZUVycm9yVGFicy52bXMgPSB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoKHZtPy5lbmRZUG9zaXRpb24gPz8gMSkgPiAodGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID8/IDEpKSB7XHJcbiAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgICB0aGlzLnBzLmZpeHR1cmVUZW1wbGF0ZUVycm9yVGFicy52bXMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLnBzLnVwZGF0ZUZpeHR1cmVUZW1wbGF0ZURldGFpbHMobnVsbCk7XHJcbiAgfVxyXG59IiwiPHNlY3Rpb24gaWQ9XCJmaXh0dXJlLXRlbXBsYXRlXCIgKm5nSWY9XCIhaXNQYWdlTG9hZGluZ1wiPlxyXG4gIDwhLS0gSGVhZGVyIHNlY3Rpb24gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50cy1jZW50ZXIgZ2FwLTVcIj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcC0zXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICBkPVwiTTE1LjgzMzQgOS45OTk4NEg0LjE2Njc1TTQuMTY2NzUgOS45OTk4NEwxMC4wMDAxIDE1LjgzMzJNNC4xNjY3NSA5Ljk5OTg0TDEwLjAwMDEgNC4xNjY1XCJcclxuICAgICAgICAgICAgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L3N2Zz5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgW25nYlRvb2x0aXBdPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZU5hbWVcIlxyXG4gICAgICAgIHN0eWxlPVwiYWxsOiB1bnNldDsgZm9udC1zaXplOiAxLjVyZW07IGZvbnQtd2VpZ2h0OiBib2xkOyBtYXgtd2lkdGg6IDYwMHB4XCJcclxuICAgICAgICBbbmdDbGFzc109XCIoZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uZml4dHVyZU5hbWU/Lmxlbmd0aCA/PyAwKSA+IDIwMCA/ICdlbGxpcHNpcycgOiAnJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVOYW1lIH19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPCEtLSAqbmdJZj1cIiFpc0VkaXRNb2RlXCIgLS0+XHJcbiAgICAgIDwhLS0gPGlucHV0XHJcbiAgICAgICAgY2xhc3M9XCJtLTBcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscyEuZml4dHVyZU5hbWVcIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRml4dHVyZU5hbWVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgKm5nSWY9XCJpc0VkaXRNb2RlXCJcclxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiaW5wdXRXaWR0aCA8IDIwMCA/IDIwMCA6IGlucHV0V2lkdGhcIlxyXG4gICAgICAgIHN0eWxlPVwiYWxsOiB1bnNldDsgZm9udC1zaXplOiAxLjVyZW07IGZvbnQtd2VpZ2h0OiBib2xkXCJcclxuICAgICAgLz4gLS0+XHJcbiAgICAgIEBpZihmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZVR5cGUgIT09ICdtYXN0ZXInKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ0NsYXNzXT1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0YXR1c1wiPnt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0YXR1cyB8IHRpdGxlY2FzZSB9fTwvZGl2PlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLXNlY29uZGFyeVwiPk1hc3RlcjwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudHMtY2VudGVyIGdhcC01XCI+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJtLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udXBkYXRlZEF0ICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlVHlwZSAhPT0gJ21hc3RlcidcIlxyXG4gICAgICAgIFtuZ2JUb29sdGlwXT1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnVwZGF0ZWRBdCB8IGRhdGUgOiAnbWVkaXVtJ1wiXHJcbiAgICAgID5cclxuICAgICAgICBMYXN0IHVwZGF0ZToge3sgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udXBkYXRlZEF0IHwgdGltZUFnbyB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhaXNFZGl0TW9kZVwiPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25DbGlja0VkaXQoKVwiXHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnRlbXBsYXRlVHlwZSAhPT0gJ21hc3RlcidcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInVybC5pbmNsdWRlcygnYXNzaWduLXN0b3JlcycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8IS0tIFtkaXNhYmxlZF09XCJ0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0YXR1cyA9PT0gJ2FjdGl2ZSdcIiAtLT5cclxuICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzEzMjJfNTMyNSlcIj5cclxuICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgZD1cIk0xNC4xNjY3IDIuNDk5OTNDMTQuMzg1NiAyLjI4MTA2IDE0LjY0NTUgMi4xMDc0NCAxNC45MzE0IDEuOTg4OTlDMTUuMjE3NCAxLjg3MDU0IDE1LjUyMzkgMS44MDk1NyAxNS44MzM0IDEuODA5NTdDMTYuMTQyOSAxLjgwOTU3IDE2LjQ0OTQgMS44NzA1NCAxNi43MzU0IDEuOTg4OTlDMTcuMDIxNCAyLjEwNzQ0IDE3LjI4MTIgMi4yODEwNiAxNy41MDAxIDIuNDk5OTNDMTcuNzE5IDIuNzE4OCAxNy44OTI2IDIuOTc4NjMgMTguMDExIDMuMjY0NkMxOC4xMjk1IDMuNTUwNTcgMTguMTkwNCAzLjg1NzA2IDE4LjE5MDQgNC4xNjY1OUMxOC4xOTA0IDQuNDc2MTIgMTguMTI5NSA0Ljc4MjYyIDE4LjAxMSA1LjA2ODU5QzE3Ljg5MjYgNS4zNTQ1NSAxNy43MTkgNS42MTQzOSAxNy41MDAxIDUuODMzMjZMNi4yNTAwOCAxNy4wODMzTDEuNjY2NzUgMTguMzMzM0wyLjkxNjc1IDEzLjc0OTlMMTQuMTY2NyAyLjQ5OTkzWlwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xMzIyXzUzMjVcIj5cclxuICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICBFZGl0XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgIChjbGljayk9XCJvbkR1cGxpY2F0ZSgnbWFzdGVyJylcIlxyXG4gICAgICAgICAgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZVR5cGUgPT09ICdtYXN0ZXInXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBDcmVhdGUgdmFyaWFudFxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXZcclxuICAgICAgICAqbmdJZj1cImlzRWRpdE1vZGUgJiYgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udGVtcGxhdGVUeXBlICE9PSAnbWFzdGVyJ1wiXHJcbiAgICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTUganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LnN0YXR1cyAhPT0gJ2FjdGl2ZSdcIlxyXG4gICAgICAgICAgbmdiVG9vbHRpcD1cIlNwb3QgcHJvZHVjdCBwbGFjZW1lbnQgaXNuJ3QgYXZhaWxhYmxlIHlldFwiXHJcbiAgICAgICAgICBbZGlzYWJsZVRvb2x0aXBdPVwic2VsZWN0ZWRQcm9kdWN0UGxhY2VtZW50TGV2ZWwgIT09ICdzcG90J1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoeyBzdGF0dXM6ICdkcmFmdCcsIGdvQmFjazogZmFsc2UgfSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRQcm9kdWN0UGxhY2VtZW50TGV2ZWwgPT09ICdzcG90J1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNhdmUgYXMgZHJhZnRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IG5nYlRvb2x0aXA9XCJTcG90IHByb2R1Y3QgcGxhY2VtZW50IGlzbid0IGF2YWlsYWJsZSB5ZXRcIiBbZGlzYWJsZVRvb2x0aXBdPVwic2VsZWN0ZWRQcm9kdWN0UGxhY2VtZW50TGV2ZWwgIT09ICdzcG90J1wiPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25TdWJtaXQoeyBzdGF0dXM6ICdjb21wbGV0ZScsIGdvQmFjazogZmFsc2UgfSlcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VsZWN0ZWRQcm9kdWN0UGxhY2VtZW50TGV2ZWwgPT09ICdzcG90JyB8fCB1cmwuaW5jbHVkZXMoJ2Fzc2lnbi1zdG9yZXMnKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIFNhdmVcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiZml4dHVyZVRlbXBsYXRlRGV0YWlscz8udGVtcGxhdGVUeXBlICE9PSAnbWFzdGVyJ1wiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgcC0zXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIj5cclxuICAgICAgICAgIDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTEgMTJDMTEgMTIuNTUyMyAxMS40NDc3IDEzIDEyIDEzQzEyLjU1MjMgMTMgMTMgMTIuNTUyMyAxMyAxMkMxMyAxMS40NDc3IDEyLjU1MjMgMTEgMTIgMTFDMTEuNDQ3NyAxMSAxMSAxMS40NDc3IDExIDEyWlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTEgMTlDMTEgMTkuNTUyMyAxMS40NDc3IDIwIDEyIDIwQzEyLjU1MjMgMjAgMTMgMTkuNTUyMyAxMyAxOUMxMyAxOC40NDc3IDEyLjU1MjMgMTggMTIgMThDMTEuNDQ3NyAxOCAxMSAxOC40NDc3IDExIDE5WlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgIGQ9XCJNMTEgNUMxMSA1LjU1MjI4IDExLjQ0NzcgNiAxMiA2QzEyLjU1MjMgNiAxMyA1LjU1MjI4IDEzIDVDMTMgNC40NDc3MiAxMi41NTIzIDQgMTIgNEMxMS40NDc3IDQgMTEgNC40NDc3MiAxMSA1WlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cclxuICAgICAgICAgIDxsaT48YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25EdXBsaWNhdGUoKVwiICpuZ0lmPVwiIWlzRWRpdE1vZGVcIj4gRHVwbGljYXRlPC9hPjwvbGk+XHJcbiAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImZpbmRSZXBsYWNlKClcIiAqbmdJZj1cIiFpc0VkaXRNb2RlXCI+IEZpbmQgJiBSZXBsYWNlPC9hPjwvbGk+XHJcbiAgICAgICAgICA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGN1cnNvci1wb2ludGVyIHRleHQtZGFuZ2VyXCIgKGNsaWNrKT1cIm9uRGVsZXRlKClcIj5EZWxldGU8L2E+PC9saT5cclxuICAgICAgICA8L3VsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8dWwgY2xhc3M9XCJteC0zIG15LTUgbmF2IG5hdi1waWxsc1wiIHJvbGU9XCJ0YWJsaXN0XCI+XHJcbiAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cclxuICAgICAgPGFcclxuICAgICAgICBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYmFzaWMtZGV0YWlscyddXCJcclxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyB0ZW1wbGF0ZUlkOiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5faWQsIGlzRWRpdDogaXNFZGl0TW9kZSB9XCJcclxuICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwieyBleGFjdDogZmFsc2UgfVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgW3N0YXRlXT1cInsgc2tpcEhpc3Rvcnk6IHRydWUgfVwiXHJcbiAgICAgICAgW3JlcGxhY2VVcmxdPVwidHJ1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgID5cclxuICAgICAgICBCYXNpYyBkZXRhaWxzXHJcbiAgICAgIDwvYT5cclxuICAgIDwvbGk+XHJcbiAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cclxuICAgICAgPGFcclxuICAgICAgICBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvcHJvZHVjdHMnXVwiXHJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgdGVtcGxhdGVJZDogZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkLCBpc0VkaXQ6IGlzRWRpdE1vZGUgfVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgW3N0YXRlXT1cInsgc2tpcEhpc3Rvcnk6IHRydWUgfVwiXHJcbiAgICAgICAgW3JlcGxhY2VVcmxdPVwidHJ1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgID5cclxuICAgICAgICBQcm9kdWN0c1xyXG4gICAgICA8L2E+XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL3ZtcyddXCJcclxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyB0ZW1wbGF0ZUlkOiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5faWQsIGlzRWRpdDogaXNFZGl0TW9kZSB9XCJcclxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcclxuICAgICAgICBbc3RhdGVdPVwieyBza2lwSGlzdG9yeTogdHJ1ZSB9XCJcclxuICAgICAgICBbcmVwbGFjZVVybF09XCJ0cnVlXCJcclxuICAgICAgICBjbGFzcz1cIm5hdi1saW5rXCJcclxuICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgPlxyXG4gICAgICAgIFZpc3VhbCBNZXJjaGFuZGlzZVxyXG4gICAgICA8L2E+XHJcbiAgICA8L2xpPlxyXG4gICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XHJcbiAgICAgIDxhXHJcbiAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3BsYW5vZ3JhbS9maXh0dXJlLXRlbXBsYXRlL3N1bW1hcnknXVwiXHJcbiAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cInsgdGVtcGxhdGVJZDogZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uX2lkLCBpc0VkaXQ6IGlzRWRpdE1vZGUgfVwiXHJcbiAgICAgICAgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZVwiXHJcbiAgICAgICAgW3N0YXRlXT1cInsgc2tpcEhpc3Rvcnk6IHRydWUgfVwiXHJcbiAgICAgICAgW3JlcGxhY2VVcmxdPVwidHJ1ZVwiXHJcbiAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgcm9sZT1cInRhYlwiXHJcbiAgICAgID5cclxuICAgICAgICBTdW1tYXJ5XHJcbiAgICAgIDwvYT5cclxuICAgIDwvbGk+XHJcbiAgICA8bGkgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy50ZW1wbGF0ZVR5cGUgPT09ICdzdWInXCIgY2xhc3M9XCJuYXYtaXRlbVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cclxuICAgICAgPGFcclxuICAgICAgICBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvcGxhbm9ncmFtL2ZpeHR1cmUtdGVtcGxhdGUvYXNzaWduLXN0b3JlcyddXCJcclxuICAgICAgICBbcXVlcnlQYXJhbXNdPVwieyB0ZW1wbGF0ZUlkOiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5faWQsIGlzRWRpdDogaXNFZGl0TW9kZSB9XCJcclxuICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlXCJcclxuICAgICAgICBjbGFzcz1cIm5hdi1saW5rXCJcclxuICAgICAgICByb2xlPVwidGFiXCJcclxuICAgICAgPlxyXG4gICAgICAgIEFzc2lnbiBTdG9yZXNcclxuICAgICAgPC9hPlxyXG4gICAgPC9saT5cclxuICA8L3VsPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudC13cmFwcGVyXCI+XHJcbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxzZWN0aW9uIGlkPVwiZml4dHVyZS10ZW1wbGF0ZS1za2VsZXRvblwiICpuZ0lmPVwiaXNQYWdlTG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI2Vycm9yTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8aDQgY2xhc3M9XCJtYi0zXCI+VG8gc2F2ZSBmaXh0dXJlIHRlbXBsYXRlLCBwbGVhc2UgcmVzb2x2ZSB0aGUgZXJyb3JzIGluIHRoZXNlIHNlY3Rpb25zOjwvaDQ+XHJcbiAgICAgIDx1bD5cclxuICAgICAgICA8bGkgKm5nSWY9XCJlcnJvclRhYnMuYmFzaWNEZXRhaWxzXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxwPkJhc2ljIERldGFpbHM8L3A+PC9saT5cclxuICAgICAgICA8bGkgKm5nSWY9XCJlcnJvclRhYnMucHJvZHVjdHNcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+PHA+UHJvZHVjdHM8L3A+PC9saT5cclxuICAgICAgICA8bGkgKm5nSWY9XCJlcnJvclRhYnMudm1zXCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPjxwPlZNPC9wPjwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5jbG9zZSgpXCI+T2s8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=