vc-create-dashboard 2.8.20 → 2.8.22

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.
@@ -1,5 +1,4 @@
1
1
  import { Component, EventEmitter, HostListener, Input, Output, ViewChild } from '@angular/core';
2
- import * as dayjs from 'dayjs';
3
2
  import { TextCountPipe } from './pipes/text-count.pipe';
4
3
  import * as i0 from "@angular/core";
5
4
  import * as i1 from "./services/create-dashboard.service";
@@ -685,7 +684,7 @@ export class CreateDashboardComponent {
685
684
  if (!this.dashboardForm.dashboardName || this.dashboardForm.dashboardName.trim() == ''
686
685
  || (this.dashboardForm.dashboardName.length > 30)
687
686
  || (this.textCount.transform(this.dashboardForm?.dashboardDescriptionText) > 250)
688
- || (this.dashboardForm?.selectedFromDate && (!this.dashboardForm.selectedToDate))
687
+ || (this.dashboardForm?.selectedFromDate && (!this.dashboardForm?.selectedToDate))
689
688
  || (this.dashboardForm.selectedResponsibilityCenters.length == 0 &&
690
689
  this.dashboardForm.selectedResponsibilityCategories.length == 0 &&
691
690
  this.dashboardForm.selectedRiskCategories.length == 0)) {
@@ -797,8 +796,8 @@ export class CreateDashboardComponent {
797
796
  this.dashboardForm.selectedResponsibilityCategories = this.setList(this.allComplianceCategories, data?.responsibility_category, 'category_id');
798
797
  this.dashboardForm.selectedRiskCategories = this.setList(this.allRiskCategories, data?.risk_category, 'category_id');
799
798
  this.dashboardForm.displayCriteria = (data?.display_criteria === "BOTH_RC_AND_CATEGORY") ? 'and' : 'or';
800
- this.dashboardForm.selectedFromDate = (data?.timeframe?.start_date) ? dayjs(data?.timeframe?.start_date)?.toDate() : undefined;
801
- this.dashboardForm.selectedToDate = (data?.timeframe?.end_date) ? dayjs(data?.timeframe?.end_date)?.toDate() : undefined;
799
+ this.dashboardForm.selectedFromDate = (data?.timeframe?.start_date) ? new Date(data?.timeframe?.start_date) : undefined;
800
+ this.dashboardForm.selectedToDate = (data?.timeframe?.end_date) ? new Date(data?.timeframe?.end_date) : undefined;
802
801
  this.vLoader = false;
803
802
  this.dashboardForm.configureWidget = data.widget_details;
804
803
  this.selectedWidgets = data.widget_details.length > 0 ? [...new Set(data.widget_details)] : [];
@@ -944,4 +943,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImpor
944
943
  type: HostListener,
945
944
  args: ['document:keydown.escape', ['$event']]
946
945
  }] } });
947
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVl0SSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUcvQixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3hELG1DQUFtQztBQVFuQyxNQUFNLE9BQU8sd0JBQXdCO0lBa0luQyxZQUNVLHNCQUE4QyxFQUM5QyxpQkFBb0MsRUFDcEMsR0FBc0IsRUFDdEIsUUFBeUIsRUFDMUIsY0FBOEIsRUFDN0IsdUJBQWdELEVBQ2hELFNBQXdCO1FBTnhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBdElsQyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQUcsS0FBSyxD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QUFFLE9BQU8sQ0FBRSxDQUFDLFVBQWUsRUFBRSxFQUFFO2dCQUNoRCxRQUFPLFVBQVUsRUFBRSxJQUFJLEVBQUU7b0JBQ3ZCLEtBQUssTUFBTSxDQUFDLENBQUM7d0JBQ1gsSUFBRyxVQUFVLEVBQUUsaUJBQWlCLElBQUUsQ0FBQyxJQUFJLFVBQVUsRUFBRSxNQUFNLElBQUUsQ0FBQyxFQUFFOzRCQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQzt5QkFDMUI7d0JBQUEsQ0FBQzt3QkFDRixNQUFNO3FCQUNQO2lCQUNGO1lBQ0gsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7O3FIQXA4QlUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isa1NBRnhCLENBQUMsYUFBYSxDQUFDLGdRQ3RCNUIseXMyQ0F1ZndCOzJGRC9kWCx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGFBR3JCLENBQUMsYUFBYSxDQUFDOzBTQUdqQixPQUFPO3NCQUFmLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNO2dCQUNFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRXVCLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNBLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFFaEIsZUFBZTtzQkFBdkIsS0FBSztnQkFxSStDLGdCQUFnQjtzQkFBcEUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEVkaXRvckNvbmZpZyB9IGZyb20gJ3Zjb21wbHktZWRpdG9yJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCwgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICduZzItZGF0ZS1waWNrZXInO1xyXG5pbXBvcnQgeyBDcmVhdGVEYXNoYm9hcmRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jcmVhdGUtZGFzaGJvYXJkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcGFnaW5hdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlckxpc3RDb25maWd1cmF0aW9uIH0gZnJvbSAnLi91c2VyLWxpc3QvdXNlci1saXN0LmNvbmZpZyc7XHJcbmltcG9ydCB7IENyZWF0ZURhc2hib2FyZEZvcm0gfSBmcm9tICcuL2NyZWF0ZS1kYXNoYm9hcmQtY29uZmlnJztcclxuaW1wb3J0IHsgU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3NuYWNrLWJhci9zbmFjay1iYXIuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25maWd1cmUtd2lkZ2V0cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZmluZEluZGV4IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuXHJcbmltcG9ydCAqIGFzIGRheWpzIGZyb20gJ2RheWpzJztcclxuLy8gaW1wb3J0ICogYXMgY3VzdG9tUGFyc2VGb3JtYXQgZnJvbSAnZGF5anMvcGx1Z2luL2N1c3RvbVBhcnNlRm9ybWF0JztcclxuaW1wb3J0IHsgUG9wb3ZlclNlcnZpY2UgfSBmcm9tICcuLi91aS1raXQvcG9wb3Zlci9wb3BvdmVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUZXh0Q291bnRQaXBlIH0gZnJvbSAnLi9waXBlcy90ZXh0LWNvdW50LnBpcGUnO1xyXG4vLyBkYXlqcy5leHRlbmQoY3VzdG9tUGFyc2VGb3JtYXQpO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY3JlYXRlLWRhc2hib2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1kYXNoYm9hcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1kYXNoYm9hcmQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBwcm92aWRlcnM6IFtUZXh0Q291bnRQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlRGFzaGJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcclxuXHJcbiAgYWN0aXZlU2VsZWN0b3IgPSAnJztcclxuICBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1vZGUgPSAnQ1JFQVRFJztcclxuICBASW5wdXQoKSBkYXNoYm9hcmRJZCA9ICcnO1xyXG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSBjcmVhdGVkQnkgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdmcm9tRGF0ZVBpY2tlcicpIGZyb21EYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCd0b0RhdGVQaWNrZXInKSB0b0RhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xyXG4gIGFuaW1hdGlvbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY29uZmlndXJlV2lkZ2V0ID0gZmFsc2VcclxuXHJcbiAgdG90YWxQYWdlcyA9IDE7XHJcbiAgdG90YWxMaXN0ID0gMTtcclxuICB1c2Vyc0xpc3Q6IGFueVtdID0gW107XHJcbiAgdkxvYWRlciA9IHRydWU7XHJcbiAgdXNlckxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByY0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBjb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSBmYWxzZTtcclxuICByaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gIGxpc3REZXRhaWxzOiBVc2VyTGlzdENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBzZWxlY3RlZFVzZXJzTGlzdDogW10sXHJcbiAgICBzZWxlY3RlZEdyb3VwTGlzdDpbXSxcclxuICAgIG5vblJlbW92YWJsZVVzZXJzTGlzdDogW10sXHJcbiAgICBkaXNwbGF5RWxlbWVudEtleTogJ21lbWJlcl9uYW1lJyxcclxuICAgIGRpc3BsYXlHcm91cEtleTonZ3JvdXBfbmFtZScsXHJcbiAgICBncm91cElka2V5Oidncm91cF9pZCcsXHJcbiAgICBlbGVtZW50SWRLZXk6ICdtZW1iZXJfaWQnLFxyXG4gICAgdG9vbHRpcEtleTogJ21lbWJlcl9lbWFpbCcsXHJcbiAgfTtcclxuICBkYXNoYm9hcmREZXNjcmlwdGlvbjogRWRpdG9yQ29uZmlnID0ge1xyXG4gICAgcGxhY2Vob2xkZXI6ICdEZXNjcmlwdGlvbiAoTWF4IGxpbWl0OiAyNTAgY2hhcmFjdGVycyknLFxyXG4gICAgbW9kZTogJ3ByaW1lJyxcclxuICAgIGlkOiAnZGVzY3JpcHRpb24nXHJcbiAgfVxyXG4gIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWU6IGFueSA9IHtcclxuICAgIHJlZ3VsYXRpb25zOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhcmRzOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdXHJcbiAgICB9LFxyXG4gICAgaW50ZXJuYWxDb250cm9sczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIG90aGVyczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfVxyXG4gIH07XHJcbiAgYWxsQ29tcGxpYW5jZUNhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgYWxsUmlza0NhdGVnb3JpZXM6IGFueVtdID0gW107XHJcbiAgc2hvd1Jpc2tDYXRlZ29yeSA9IGZhbHNlO1xyXG4gIHNob3dDcml0ZXJpYSA9IHRydWU7XHJcblxyXG4gIGRhc2hib2FyZEZvcm06IENyZWF0ZURhc2hib2FyZEZvcm0gPSB7XHJcbiAgICBkYXNoYm9hcmROYW1lOiAnJyxcclxuICAgIGRhc2hib2FyZERlc2NyaXB0aW9uVGV4dDogJycsXHJcbiAgICBzZWxlY3RlZFZpZXdlcnM6IFtdLFxyXG4gICAgc2VsZWN0ZWRHcm91cDpbXSxcclxuICAgIHNlbGVjdGVkRnJvbURhdGU6IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkVG9EYXRlOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyczogW10sXHJcbiAgICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllczogW10sXHJcbiAgICBzZWxlY3RlZFJpc2tDYXRlZ29yaWVzOiBbXSxcclxuICAgIGRpc3BsYXlDcml0ZXJpYTogJ29yJyxcclxuICAgIGNvbmZpZ3VyZVdpZGdldDogW10sXHJcbiAgICBmcmVxdWVuY3lEZXRhaWxzOiAnJyxcclxuICAgIHNlbGVjdGVkRnJlcXVlbmN5VHlwZTogJycsXHJcbiAgICBzZWxlY3RlZEZyZXF1ZW5jaWVzOiBbMF0sXHJcbiAgICBmcmVxdWVuY3lNZXNzYWdlOiAnJyxcclxuICAgIGZyZXF1ZW5jeURhdGU6IDFcclxuICB9XHJcblxyXG5cclxuICBvcGVuQ29uZmlndXJlV2lkZ2V0cyA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkV2lkZ2V0czogYW55ID0gW107XHJcbiAgZGlzcGxheWVkV2lkZ2V0czogYW55ID0gW11cclxuXHJcblxyXG4gIHJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QgPSBbXTtcclxuICBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gIGRheU5hbWVzID0gWydNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5JywgJ1N1bmRheSddO1xyXG4gIG1vbnRoTmFtZXMgPSBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFyY2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLCAnSnVseScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1iZXInXTtcclxuICBxdWFydGVycyA9IFsnSmFudWFyeSwgQXByaWwsIEp1bHksIE9jdG9iZXInLCAnRmVicnVhcnksIE1heSwgQXVndXN0LCBOb3ZlbWJlcicsICdNYXJjaCwgSnVuZSwgU2VwdGVtYmVyLCBEZWNlbWJlciddO1xyXG5cclxuICBjYXRlZ29yeUxpc3RMb2FkZWQgPSBmYWxzZTtcclxuICBzaG93Umlza1dpZGdldHMgPSBmYWxzZTtcclxuICBzaG93Q29tcGxpYW5jZVdpZGdldHMgPSBmYWxzZTtcclxuICBpc01hbmFnZVJpc2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcmlza0NhdGVnb3J5TGlzdCA9IHtcclxuICAgIHN0cmF0ZWdpYzoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIG9wZXJhdGlvbmFsOiB7XHJcbiAgICAgIGxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3RlZExpc3Q6IFtdXHJcbiAgICB9LFxyXG4gICAgY29tcGxpYW5jZToge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIG90aGVyczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBmcm9tRGF0ZVBpY2tlckNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XHJcbiAgICBtaW46IHRoaXMuZ2V0Q3VycmVudERhdGUoKVxyXG4gIH1cclxuXHJcbiAgdG9EYXRlUGlja2VyQ29uZmlnOiBJRGF0ZVBpY2tlckNvbmZpZyA9IHtcclxuICB9XHJcblxyXG4gIGlzU21pbGV5ITogYm9vbGVhbjtcclxuICBzbWlsZXlNZXNzYWdlOiBzdHJpbmcgPSAnJztcclxuICBncm91cExpc3Q6IGFueTtcclxuICBncm91cHNFbmFibGVkOiBib29sZWFuPWZhbHNlO1xyXG4gIHRvdGFsZ3JvdXBzOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjcmVhdGVEYXNoYm9hcmRTZXJ2aWNlOiBDcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBwYWdpbmF0aW9uU2VydmljZTogUGFnaW5hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBTbmFja0JhclNlcnZpY2UsXHJcbiAgICBwdWJsaWMgcG9wb3ZlclNlcnZpY2U6IFBvcG92ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25maWd1cmVXaWRnZXRzU2VydmljZTogQ29uZmlndXJlV2lkZ2V0c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRleHRDb3VudDogVGV4dENvdW50UGlwZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgaWYgKHRoaXMuY3JlYXRlZEJ5KSB7XHJcbiAgICAgIHRoaXMubGlzdERldGFpbHMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LnB1c2godGhpcy5jcmVhdGVkQnkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICB0aGlzLmNsb3NlLmVtaXQoeyBtb2RlOiAnZGlzY2FyZCcgfSk7XHJcbiAgICB0aGlzLmlzU21pbGV5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3JvdXBzRW5hYmxlZD10aGlzLmZlYXR1cmU/LmlzRmVhdHVyZUVuYWJsZWQoXCJmZl9ncm91cHNfaW1wcm92ZW1lbnRzXCIpO1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gICAgdGhpcy5nZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KCcnKTtcclxuICAgIHRoaXMuZ2V0Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLmdldFJDTGlzdCgpO1xyXG4gICAgdGhpcy5nZXRDb21wbGlhbmNlQ2F0ZWdvcnlMaXN0KCk7XHJcbiAgICB0aGlzLnNldEZyZXF1ZW5jeShcIjJ+MX4wfjBcIiwgJ2ltcG9ydCcpO1xyXG4gICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgdGhpcy5nZXRVc2Vyc0xpc3QoJycpO1xyXG4gICAgdGhpcy5nZXRHcm91cExpc3QoKTtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRVc2VySW5mb3JtYXRpb24oKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0UGVybWlzc2lvbihyZXM/LnJvbGVBY3Rpb25zKTtcclxuICAgICAgY29uc3QgcXVpY2tMaW5rID0gcmVzLnF1aWNrX2xpbms7XHJcbiAgICAgIGlmIChxdWlja0xpbmsucmlzaykge1xyXG4gICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Umlza0NhdGVnb3J5ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0sIGVycm9yID0+IHsgY29uc29sZS5sb2coZXJyb3IpIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERpc3BsYXlzIHRoZSBsaXN0aW5nIHBhZ2VzIHRoZSBsZWZ0IHNpZGUgb2YgcG9saWN5IGZvcm0gdG8gc2V0IGFuZCBlZGl0IHRoZSBkcm9wZG93biBmaWVsZHMgdmFsdWVzXHJcbiAgICogQHBhcmFtIHR5cGUgaG9sZHMgbmFtZSBvZiBwYXJ0aWN1bGFyIGxpc3QgaXMgdG8gYmUgZGlzcGxheWVkXHJcbiAgICogQHBhcmFtIGV2ZW50IGNvbnRhaW5zIGJvb2xlYW4gdmFsdWUgdG8gZGlzcGxheSB0aGUgbGlzdCBvciBub3RcclxuICAgKi9cclxuICBhY3RpdmF0ZVNlbGVjdG9yKHR5cGU6IGFueSwgZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlID09ICdmcmVxdWVuY3knIHx8IHRoaXMuYWN0aXZlU2VsZWN0b3IgPT0gJ2ZyZXF1ZW5jeScpIHtcclxuICAgICAgdGhpcy5zaG93Q3JpdGVyaWEgPSBmYWxzZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zaG93Q3JpdGVyaWEgPSB0cnVlO1xyXG4gICAgICB9LCAxKTtcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZlU2VsZWN0b3IgPSBldmVudCA/IHR5cGUgOiAnJztcclxuICB9XHJcblxyXG4gIG9wZW5Gcm9tRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMuZnJvbURhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvcGVuVG9EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy50b0RhdGVQaWNrZXI/LmFwaT8ub3BlbigpO1xyXG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XHJcbiAgfVxyXG4gIGNsb3NlRnJvbURhdGVQaWNrZXIoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlKSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWRlVG9EYXRlID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9EYXRlID0gZmFsc2U7XHJcbiAgICAgIH0sIDIwKTtcclxuICAgICAgdGhpcy5mcm9tRGF0ZVBpY2tlci5hcGkuY2xvc2UoKTtcclxuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGxldCBtaW5Ub0RhdGUgPSB0aGlzLnNldFRvRGF0ZSh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSlcclxuICAgIHRoaXMudG9EYXRlUGlja2VyQ29uZmlnID0geyBtaW46IG1pblRvRGF0ZSB9O1xyXG5cclxuICAgIGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUobWluVG9EYXRlLnNwbGl0KCctJykucmV2ZXJzZSgpLmpvaW4oJy0nKSk7XHJcbiAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUpXHJcbiAgICBjb25zdCBpblZhbGlkRGF0ZSA9IChmcm9tRGF0ZSA+PSB0b0RhdGUpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgaWYgKGluVmFsaWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5oaWRlVG9EYXRlID0gdHJ1ZTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlVG9EYXRlID0gZmFsc2U7XHJcbiAgICAgIH0sIDIwKTtcclxuICAgIH1cclxuICAgIHRoaXMuZnJvbURhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsb3NlVG9EYXRlUGlja2VyKCkge1xyXG4gICAgdGhpcy50b0RhdGVQaWNrZXI/LmFwaT8uY2xvc2UoKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIGFuaW1hdGVJbWFnZSgpIHtcclxuICAgIGNvbnN0IGNpcmNsZUltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnaW1hZ2UnKVxyXG4gIH1cclxuXHJcbiAgc2F2ZUZyZXF1ZW5jeShldmVudFZhbHVlczogYW55KSB7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlID0gZXZlbnRWYWx1ZXMuZnJlcXVlbmN5VHlwZTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzID0gZXZlbnRWYWx1ZXMuZnJlcXVlbmNpZXM7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZSA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jeVN0cmluZztcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID0gZXZlbnRWYWx1ZXMuc2VsZWN0ZWREYXRlO1xyXG4gICAgdGhpcy5hY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcclxuICB9XHJcblxyXG4gIGdldEN1cnJlbnREYXRlKCkge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgIHJldHVybiB0b2RheS5nZXREYXRlKCkgKyAnLScgKyAodG9kYXkuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbiAgc2V0VG9EYXRlKGRhdGE6IHN0cmluZykge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoZGF0YSk7XHJcbiAgICByZXR1cm4gdG9kYXkuZ2V0RGF0ZSgpICsgMSArICctJyArICh0b2RheS5nZXRNb250aCgpICsgMSkgKyAnLScgKyB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxuICBnZXRGcm9tRGF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIHRvZGF5LmdldERhdGUoKSArICctJyArICh0b2RheS5nZXRNb250aCgpICsgMSkgKyAnLScgKyB0b2RheS5nZXRGdWxsWWVhcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSXQgdGFrZXMgYSBzdHJpbmcsIGNvbnZlcnRzIGl0IHRvIGEgZGF0ZSwgdGhlbiByZXR1cm5zIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgWVlZWS1NTS1ERC5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIHRoZSBkYXRlIHlvdSB3YW50IHRvIGZvcm1hdFxyXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nIGluIHRoZSBmb3JtYXQgb2YgWVlZWS1NTS1ERFxyXG4gICAqL1xyXG4gIGdldERhdGVGb3JtYXRlKGRhdGE6IHN0cmluZykge1xyXG4gICAgbGV0IHRvZGF5ID0gbmV3IERhdGUoZGF0YSk7XHJcbiAgICByZXR1cm4gdG9kYXkuZ2V0RnVsbFllYXIoKSArICctJyArICBTdHJpbmcoKHRvZGF5LmdldE1vbnRoKCkgKyAxKSkucGFkU3RhcnQoMiwgJzAnKSsgJy0nICArICBTdHJpbmcodG9kYXkuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlRGFzaGJvYXJkKCkge1xyXG4gICAgbGV0IGZpZWxkc1N0YXR1cyA9IHRoaXMudmFsaWRhdGVEYXNoYm9hcmQoKTtcclxuICAgIGlmIChmaWVsZHNTdGF0dXMpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogJydcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmNoZWNrRHVwbGljYXRlRGFzaGJvYXJkTmFtZShwYXlsb2FkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgIGlmICghcmVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dSaXNrV2lkZ2V0cyA9ICh0aGlzLmlzTWFuYWdlUmlzayAmJiB0aGlzLnNob3dSaXNrQ2F0ZWdvcnkgJiYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aCA+IDAgfHwgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDApKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Q29tcGxpYW5jZVdpZGdldHMgPSAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA+IDAgfHwgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA+IDApID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ0EgZGFzaGJvYXJkIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiBTcGVjaWZ5IGEgZGlmZmVyZW50IG5hbWUgZm9yIHRoZSBkYXNoYm9hcmQuJywnYWxlcnQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gdHJ1ZTtcclxuICAgICAgICBjb25zdCBwYXlsb2FkID0ge1xyXG4gICAgICAgICAgZGFzaGJvYXJkX25hbWU6IHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLFxyXG4gICAgICAgICAgZGFzaGJvYXJkX2lkOiB0aGlzLmRhc2hib2FyZElkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5jaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Umlza1dpZGdldHMgPSAodGhpcy5pc01hbmFnZVJpc2sgJiYgdGhpcy5zaG93Umlza0NhdGVnb3J5ICYmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0NvbXBsaWFuY2VXaWRnZXRzID0gKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuQ29uZmlndXJlV2lkZ2V0cyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdBIGRhc2hib2FyZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gU3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZGFzaGJvYXJkLicsJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgICogRmV0Y2hlcyBvcmdhbml6YXRpb24gdXNlcnMgY291bnQgYXBpIHRvIGdldCB0b3RhbCBudW1iZXIgb2YgcGFnZXNcclxuICAgICogQHBhcmFtIFVybCBjb250YWlucyBwcmFtc1xyXG4gICAgKi9cclxuICBnZXRPcmdhbml6YXRpb25Vc2Vyc0NvdW50KFVybDogYW55KSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudChVcmwpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICB0aGlzLnRvdGFsTGlzdCA9IHJlcy50b3RhbF9tZW1iZXJzO1xyXG4gICAgICBpZiAocmVzLnRvdGFsX21lbWJlcnMgJiYgcmVzLmxpbWl0X3Blcl9wYWdlID4gMSkge1xyXG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IHJlcy5jcmVhdGVfcGFnZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBHZXQgdXNlcnMgbGlzdCBieSBtYWtpbmcgYXBpIGNhbGwgYW5kIHByZSBzZWxlY3RzIGFsbCBhZG1pbnMgYnkgYWRkaW5nIHRvIHZpZXdlcnNcclxuICogQHBhcmFtIHVybCBjb250YWlucyBxdWVyeSBwYXJhbXMgZm9yIG9yZ2FuaXphdGlvbiB1c2VycyBhcGlcclxuICovXHJcbiAgZ2V0VXNlcnNMaXN0KHVybDogYW55KSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0QWxsVXNlcnMoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcblxyXG4gICAgICB0aGlzLnVzZXJzTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy51c2VyTGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMgPSB0aGlzLnNldExpc3QodGhpcy51c2Vyc0xpc3QsIFt0aGlzLmNyZWF0ZWRCeV0sICdtZW1iZXJfaWQnKTtcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkVXNlcnNMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycztcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGdldEdyb3VwTGlzdCgpe1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbEdyb3VwcygpLnN1YnNjcmliZSgocmVzOmFueSk9PntcclxuICAgICAgdGhpcy50b3RhbGdyb3VwcyA9IHJlcy50b3RhbF9pdGVtcztcclxuICAgICAgdGhpcy5ncm91cExpc3Q9cmVzLmRhdGE7XHJcbiAgICAgIHRoaXMudXNlckxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwID0gdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBMaXN0LCBbdGhpcy5jcmVhdGVkQnldLCAnZ3JvdXBfaWQnKTtcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBnZXRDb21wbGlhbmNlQ2F0ZWdvcnlMaXN0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldENvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdEZyb21HbG9iYWwoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSByZXM7XHJcbiAgICAgIHRoaXMuYWxsQ29tcGxpYW5jZUNhdGVnb3JpZXMgPSBPYmplY3QuYXNzaWduKHJlcylcclxuICAgICAgLy8gY2xvbmVEZWVwKHJlcyk7XHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlLm90aGVycy5saXN0LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDEpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZS5yZWd1bGF0aW9ucy5saXN0LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDIpIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZS5zdGFuZGFyZHMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAzKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUuaW50ZXJuYWxDb250cm9scy5saXN0LnB1c2goZWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSwgKGVycjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5jb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc29sZS5sb2coXCJldmVudD09Pj4+XCIsIGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRDYXRlZ29yeUxpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdC5zdHJhdGVnaWMubGlzdCA9IHJlcy5zdHJhdGVnaWNfYXJyO1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Qub3BlcmF0aW9uYWwubGlzdCA9IHJlcy5vcGVyYXRpb25hbF9hcnI7XHJcbiAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdC5jb21wbGlhbmNlLmxpc3QgPSByZXMuY29tcGxpYW5jZV9hcnI7XHJcbiAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdC5vdGhlcnMubGlzdCA9IHJlcy5vdGhlcnNfYXJyO1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLmFsbFJpc2tDYXRlZ29yaWVzID0gWy4uLm5ldyBTZXQodGhpcy5hbGxSaXNrQ2F0ZWdvcmllcy5jb25jYXQocmVzLnN0cmF0ZWdpY19hcnIsIHJlcy5vcGVyYXRpb25hbF9hcnIsIHJlcy5jb21wbGlhbmNlX2FyciwgcmVzLm90aGVyc19hcnIpKV1cclxuXHJcbiAgICB9LCBlcnIgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMucmlza0NhdGVnb3J5TGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIEl0IGlzIHRvIGVuc3VyZSB3aGV0aGVyIGFsbCByZXF1aXJlZCBsaXN0cyBvbiBQb2xpY3kgZnJvbSBpcyBsb2FkZWQgZnJvbSB0aGUgYXBpIGNhbGwgb3Igbm90XHJcbiAgKi9cclxuICBjaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpIHtcclxuICAgIGlmICh0aGlzLnJjTGlzdExvYWRlZCAmJiB0aGlzLmNvbXBsaWFuY2VDYXRlZ29yaWVzTGlzdExvYWRlZCAmJiB0aGlzLnJpc2tDYXRlZ29yeUxpc3RMb2FkZWQgJiYgdGhpcy51c2VyTGlzdExvYWRlZCkge1xyXG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgICB0aGlzLmVkaXREYXNoYm9hcmQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jaGVja1doZXRoZXJBbGxMaXN0c0xvYWRlZCgpO1xyXG4gICAgICB9LCAzMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRXaWRnZXRzKGRhdGE6IGFueSkge1xyXG4gICAgaWYgKHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcclxuICAgICAgY29uc3Qgd2lkZ2V0c0FycmF5OiBhbnkgPSBbXVxyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmo6IGFueSA9IHt9XHJcbiAgICAgICAgb2JqLm1vZHVsZV9uYW1lID0gZWxlbWVudC5tb2R1bGU7XHJcbiAgICAgICAgb2JqLl9pZCA9ICcnO1xyXG4gICAgICAgIG9iai53aWRnZXRfbmFtZSA9IGVsZW1lbnQudGl0bGVcclxuICAgICAgICBvYmoud2lkZ2V0X2NvZGUgPSBlbGVtZW50LmlkO1xyXG4gICAgICAgIG9iai5zdWJfd2lkZ2V0cyA9IFtdO1xyXG4gICAgICAgIG9iai5zdGF0ZSA9ICdBQ1RJVkUnXHJcbiAgICAgICAgaWYgKGVsZW1lbnQuc3ViV2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBlbGVtZW50LnN1YldpZGdldHMuZm9yRWFjaCgoc3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IHN1YldpZGdldE9iamVjdDogYW55ID0ge31cclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0Ll9pZCA9ICcnO1xyXG4gICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X25hbWUgPSBzdWJXaWRnZXQudGl0bGVcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9jb2RlID0gc3ViV2lkZ2V0LmlkO1xyXG4gICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Quc3RhdGUgPSAoc3ViV2lkZ2V0LnZhbHVlKSA/ICdBQ1RJVkUnIDogJ0lOQUNUSVZFJ1xyXG4gICAgICAgICAgICBvYmouc3ViX3dpZGdldHMucHVzaChPYmplY3QuYXNzaWduKHN1YldpZGdldE9iamVjdCkpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2lkZ2V0c0FycmF5LnB1c2gob2JqKVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQgPSB3aWRnZXRzQXJyYXk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgIGNvbnN0IHdpZGdldHNBcnJheTogYW55ID0gW11cclxuXHJcbiAgICAgIGRhdGEuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKCFKU09OLnN0cmluZ2lmeSh0aGlzLmRhc2hib2FyZEZvcm0uY29uZmlndXJlV2lkZ2V0KS5pbmNsdWRlcyhlbGVtZW50LmlkKSkge1xyXG4gICAgICAgICAgbGV0IG9iajogYW55ID0ge31cclxuICAgICAgICAgIG9iai5tb2R1bGVfbmFtZSA9IGVsZW1lbnQubW9kdWxlO1xyXG4gICAgICAgICAgb2JqLl9pZCA9ICcnO1xyXG4gICAgICAgICAgb2JqLndpZGdldF9uYW1lID0gZWxlbWVudC50aXRsZVxyXG4gICAgICAgICAgb2JqLndpZGdldF9jb2RlID0gZWxlbWVudC5pZDtcclxuICAgICAgICAgIG9iai5zdWJfd2lkZ2V0cyA9IFtdO1xyXG4gICAgICAgICAgb2JqLnN0YXRlID0gJ0FDVElWRSdcclxuICAgICAgICAgIGlmIChlbGVtZW50LnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnN1YldpZGdldHMuZm9yRWFjaCgoc3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgc3ViV2lkZ2V0T2JqZWN0OiBhbnkgPSB7fVxyXG4gICAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5faWQgPSAnJztcclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X25hbWUgPSBzdWJXaWRnZXQudGl0bGVcclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3Qud2lkZ2V0X2NvZGUgPSBzdWJXaWRnZXQuaWQ7XHJcbiAgICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LnN0YXRlID0gKHN1YldpZGdldC52YWx1ZSkgPyAnQUNUSVZFJyA6ICdJTkFDVElWRSdcclxuICAgICAgICAgICAgICBvYmouc3ViX3dpZGdldHMucHVzaChzdWJXaWRnZXRPYmplY3QpXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldC5wdXNoKG9iailcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGUud2lkZ2V0X2NvZGUgPT0gZWxlbWVudC5pZClcclxuICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0c1tpbmRleF0uc3RhdGUgPSAnQUNUSVZFJ1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFdpZGdldHNbaW5kZXhdLnN1Yl93aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0c1tpbmRleF0uc3ViX3dpZGdldHMuZm9yRWFjaCgoc3ViV2lkZ2V0RGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50SW5kZXggPSBlbGVtZW50LnN1YldpZGdldHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09IHN1YldpZGdldERhdGEud2lkZ2V0X2NvZGUpXHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YldpZGdldERhdGEuc3RhdGUgPSAoZWxlbWVudC5zdWJXaWRnZXRzW2VsZW1lbnRJbmRleF0udmFsdWUpID8gJ0FDVElWRScgOiAnSU5BQ1RJVkUnXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldC5mb3JFYWNoKChzYXZlZFdpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBkYXRhLmZpbmRJbmRleCgoZGF0YUVsZW1lbnQ6IGFueSkgPT4gZGF0YUVsZW1lbnQuaWQgPT0gc2F2ZWRXaWRnZXQud2lkZ2V0X2NvZGUpXHJcbiAgICAgICAgaWYgKGluZGV4ID09IC0xKSB7XHJcbiAgICAgICAgICBzYXZlZFdpZGdldC5zdGF0ZSA9ICdJTkFDVElWRSc7XHJcbiAgICAgICAgICBpZiAoc2F2ZWRXaWRnZXQuc3ViX3dpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBzYXZlZFdpZGdldC5zdWJfd2lkZ2V0cy5mb3JFYWNoKChzYXZlU3ViV2lkZ2V0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBzYXZlU3ViV2lkZ2V0LnN0YXRlID0gJ0lOQUNUSVZFJ1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gZGF0YVxyXG4gICAgdGhpcy5vcGVuQ29uZmlndXJlV2lkZ2V0cyA9IGZhbHNlO1xyXG4gICAgdGhpcy5zdWJtaXREYXNoYm9hcmQoKTtcclxuXHJcbiAgfVxyXG5cclxuICBjbG9zZUNvbmZpZ3VyZVdpZGdldHMoZXZlbnQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMub3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBldmVudDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciBsaXN0IHVzZXIncyBsaXN0IGJhc2VkIG9uIHBhZ2luYXRpb24gYnkgbWFraW5nIGFwaSBjYWxsXHJcbiAgICogQHBhcmFtIGV2ZW50IHNwZWNpZmllcyBhIGJvb2xlYW4gdmFsdWUgdG8gY2FsbCBhcGlcclxuICAgKi9cclxuICBwYWdpbmF0aW9uRmlsdGVyKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCkge1xyXG4gICAgICB0aGlzLmdldFVzZXJzTGlzdCh7XHJcbiAgICAgICAgcDogdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jdXJyZW50UGFnZSA9PT0gMSA/ICcnIDogdGhpcy5wYWdpbmF0aW9uU2VydmljZS5jdXJyZW50UGFnZSxcclxuICAgICAgICB0eXBlOiAnYWxsX2V4Y2VwdF9leGVjdXRpdmUnLFxyXG4gICAgICAgIHE6ICghdGhpcy5wYWdpbmF0aW9uU2VydmljZS5zZWFyY2hWYWx1ZSkgPyAnJyA6IHRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2VhcmNoVmFsdWUsXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0UkNMaXN0KCkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldFJlc3BvbnNpYmlsaXR5Q2VudGVyTGlzdCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gcmVzO1xyXG4gICAgICB0aGlzLnJjTGlzdExvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSwgKGVycjogYW55KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gKiAjIyMjIERlc2NyaXB0aW9uXHJcbiAqXHJcbiAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxyXG4gKiBAcGFyYW0gYXJyYXlcclxuICogQHBhcmFtIGtleVxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuICAgICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgICAgYXJyYXlcclxuICAgICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgICAgaXRlbSAmJiBpdGVtW2tleV0gJiYgYWNjLnNldChpdGVtW2tleV0sIGl0ZW0pLFxyXG4gICAgICAgICAgICAgIGFjY1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBuZXcgTWFwKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC52YWx1ZXMoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICBzYXZlU2VsZWN0ZWRMaXN0KHR5cGU6IHN0cmluZywgc2VsZWN0ZWRJdGVtczogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsIHNlbGVjdGVkSXRlbXMsICdpdGVtX2lkJyk7XHJcbiAgICAgICAgaWYodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J0NPTVBMSUFOQ0UnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nUklTSycpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd3aG9DYW5WaWV3JzpcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzID0gdGhpcy51bmlxdWVCeVByb3Aoc2VsZWN0ZWRJdGVtcz8udXNlcnMsICdtZW1iZXJfaWQnKVxyXG4gICAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRVc2Vyc0xpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwID0gdGhpcy51bmlxdWVCeVByb3Aoc2VsZWN0ZWRJdGVtcz8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxyXG4gICAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRHcm91cExpc3Q9dGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICBpZih0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nQ09NUExJQU5DRScpXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdSSVNLJylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Jpc2tDYXRlZ29yeSc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMgPSBzZWxlY3RlZEl0ZW1zO1xyXG4gICAgICAgIGlmKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdDT01QTElBTkNFJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J1JJU0snKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignJywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKHR5cGU6IGFueSwgZXZlbnQ6IGFueSwgcmVtb3ZlSW5kZXg/OiBhbnkpIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdyYyc6XHJcbiAgICAgICAgY29uc3QgcmNJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5maW5kSW5kZXgoKHJjOiBhbnkpID0+IHJjLnJjX2lkID09IGV2ZW50LnJjX2lkKTtcclxuICAgICAgICBpZiAocmNJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IHBhcmVudFJjOiBhbnkgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNbcmNJbmRleF07XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuc3BsaWNlKHJjSW5kZXgsIDEpO1xyXG5cclxuICAgICAgICAgIGlmIChwYXJlbnRSYz8uaXRlbV9jaGlsZF9pZHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyZW50UmMuaXRlbV9jaGlsZF9pZHMuZm9yRWFjaCgoY2hpbGRFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZW1vdmVJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5maW5kSW5kZXgoKHJlbW92ZUVsZW1lbnQ6IGFueSkgPT4gcmVtb3ZlRWxlbWVudC5yY19pZCA9PSBjaGlsZEVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J0NPTVBMSUFOQ0UnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nUklTSycpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAnd2hvQ2FuVmlldyc6XHJcbiAgICAgICAgY29uc3QgcmV2aWV3ZXJJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMuZmluZEluZGV4KCh2aWV3ZXI6IGFueSkgPT4gdmlld2VyLm1lbWJlcl9pZCA9PSBldmVudC5tZW1iZXJfaWQpO1xyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnMuc3BsaWNlKHJldmlld2VySW5kZXgsIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3dob0NhblZpZXdHcm91cCc6XHJcbiAgICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cC5maW5kSW5kZXgoKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkID09IGV2ZW50Py5ncm91cF9pZCk7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cC5zcGxpY2UoZ3JvdXBzLCAxKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyc6XHJcbiAgICAgICAgY29uc3QgQ0NjYXRlZ29yeUluZGV4ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmZpbmRJbmRleCgoQ0NjYXRlZ29yeTogYW55KSA9PiBDQ2NhdGVnb3J5LmNhdGVnb3J5X2lkID09IGV2ZW50LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMuc3BsaWNlKENDY2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgICAgaWYodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J0NPTVBMSUFOQ0UnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nUklTSycpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSAncmlza0NhdGVnb3J5JzpcclxuICAgICAgICBjb25zdCByaXNrQ2F0ZWdvcnlJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmZpbmRJbmRleCgocmlza0NhdGVnb3J5OiBhbnkpID0+IHJpc2tDYXRlZ29yeS5jYXRlZ29yeV9pZCA9PSBldmVudC5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgaWYgKHJpc2tDYXRlZ29yeUluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgICAgY29uc3QgcGFyZW50OiBhbnkgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllc1tyaXNrQ2F0ZWdvcnlJbmRleF07XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5zcGxpY2Uocmlza0NhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgICAgaWYgKHBhcmVudD8uY2hpbGRfY2F0X2lkcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBwYXJlbnQuY2hpbGRfY2F0X2lkcy5mb3JFYWNoKChjaGlsZEVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUluZGV4ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuZmluZEluZGV4KChyZW1vdmVFbGVtZW50OiBhbnkpID0+IHJlbW92ZUVsZW1lbnQuY2F0ZWdvcnlfaWQgPT0gY2hpbGRFbGVtZW50KTtcclxuICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuc3BsaWNlKHJpc2tDYXRlZ29yeUluZGV4LCAxKTtcclxuICAgICAgICBpZih0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nQ09NUExJQU5DRScpXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdSSVNLJylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0TGlzdChsaXN0OiBhbnlbXSwgaWRzOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xyXG5cclxuICAgIGlkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleCgobGlzdEVsZW1lbnQ6IGFueSkgPT4gbGlzdEVsZW1lbnRba2V5XSA9PSBlbGVtZW50KTtcclxuICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIHN1Ym1pdHRlZCA9IGZhbHNlXHJcblxyXG4gIC8qKlxyXG4gICogUmV0dXJucyBpZCdzIGZyb20gYSBwYXJ0aWN1bGFyIGxpc3QgZWxlbWVudHNcclxuICAqIEBwYXJhbSBsaXN0IGFjdHVhbCBzZWxlY3RlZCBsaXN0XHJcbiAgKiBAcGFyYW0ga2V5IGNvbnRhaW5zIGtleSB0byBleHRyYWN0IGlkIGZyb20gdGhlIGxpc3RcclxuICAqL1xyXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBsaXN0Py5tYXAoZWxlID0+IHsgaWYgKGVsZVtrZXldKSB7IHJldHVybiBlbGVba2V5XTsgfSB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICogVmFsaWRhdGVzIHRoZSBkYXRhIHN1Ym1pdHRlZCBvbiBjcmVhdGUgZGFzaGJvYXJkIGZvcm1cclxuICAqL1xyXG4gIHZhbGlkYXRlRGFzaGJvYXJkKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc3VibWl0dGVkID0gdHJ1ZTtcclxuXHJcbiAgICB9LCAxMDApO1xyXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZTtcclxuICAgIGNvbnN0IHJlID0gLyZuYnNwO3w8YnI+L2c7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSA9IGV2ZW50LnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQ7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0ID0gZGVzY3JpcHRpb24ucmVwbGFjZShyZSwgJycpLnRyaW0oKTtcclxuICAgIGlmICghdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgfHwgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUudHJpbSgpID09ICcnXHJcbiAgICAgIHx8ICh0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZS5sZW5ndGggPiAzMClcclxuICAgICAgfHwgKHRoaXMudGV4dENvdW50LnRyYW5zZm9ybSh0aGlzLmRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCkgPiAyNTApXHJcbiAgICAgIHx8ICh0aGlzLmRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJvbURhdGUgJiYgKCF0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUpKVxyXG4gICAgICB8fCAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBNYWtlcyBhbiBhcGkgY2FsbCB0byBjcmVhdGUgYSBwb2xpY3lcclxuICAqIEBwYXJhbSBkYXNoYm9hcmQgY29udGFpbnMgZGFzaGJvYXJkRm9ybSBkYXRhXHJcbiAgKi9cclxuICBzdWJtaXREYXNoYm9hcmQoKSB7XHJcblxyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHZhbGlkID0gdGhpcy52YWxpZGF0ZURhc2hib2FyZCgpO1xyXG4gICAgaWYgKCF2YWxpZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgY29uc3QgZGFzaGJvYXJkID0gdGhpcy5kYXNoYm9hcmRGb3JtO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBkYXNoYm9hcmRfbmFtZTogZGFzaGJvYXJkLmRhc2hib2FyZE5hbWUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29udGVudDogZGFzaGJvYXJkLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCxcclxuICAgICAgICAgIGF0dGFjaG1lbnRzOiBbXVxyXG4gICAgICAgIH1cclxuICAgICAgXSxcclxuICAgICAgdmlzaWJsZV90b191c2VyczogdGhpcy5yZXR1cm5JZHMoZGFzaGJvYXJkLnNlbGVjdGVkVmlld2VycywgJ21lbWJlcl9pZCcpLFxyXG4gICAgICB2aXNpYmxlX3RvX2dyb3Vwczp0aGlzLnJldHVybklkcyhkYXNoYm9hcmQuc2VsZWN0ZWRHcm91cCwnZ3JvdXBfaWQnKSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlfY2VudGVyOiB0aGlzLnJldHVybklkcyhkYXNoYm9hcmQuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMsICdpdGVtX2lkJyksXHJcbiAgICAgIHJlc3BvbnNpYmlsaXR5X2NhdGVnb3J5OiB0aGlzLnJldHVybklkcyhkYXNoYm9hcmQuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMsICdjYXRlZ29yeV9pZCcpLFxyXG4gICAgICByaXNrX2NhdGVnb3J5OiB0aGlzLnJldHVybklkcyhkYXNoYm9hcmQuc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcywgJ2NhdGVnb3J5X2lkJyksXHJcbiAgICAgIGRpc3BsYXlfY3JpdGVyaWE6IChkYXNoYm9hcmQuZGlzcGxheUNyaXRlcmlhID09PSAnYW5kJykgPyAnQk9USF9SQ19BTkRfQ0FURUdPUlknIDogJ1JDX09SX0NBVEVHT1JZJyxcclxuICAgICAgdGltZWZyYW1lOiB7XHJcbiAgICAgICAgc3RhcnRfZGF0ZTogKGRhc2hib2FyZC5zZWxlY3RlZEZyb21EYXRlKSA/IHRoaXMuZ2V0RGF0ZUZvcm1hdGUoZGFzaGJvYXJkPy5zZWxlY3RlZEZyb21EYXRlKSA6ICcnLFxyXG4gICAgICAgIGVuZF9kYXRlOiAoZGFzaGJvYXJkLnNlbGVjdGVkVG9EYXRlKSA/IHRoaXMuZ2V0RGF0ZUZvcm1hdGUoZGFzaGJvYXJkPy5zZWxlY3RlZFRvRGF0ZSkgOiAnJyxcclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIGVtYWlsX3N1bW1hcnk6IHRoaXMuc2V0RnJlcXVlbmN5KCcnLCAnZXhwb3J0JyksIC8vc2V0Rm9ybWF0XHJcbiAgICAgIHdpZGdldF9kZXRhaWxzOiBkYXNoYm9hcmQuY29uZmlndXJlV2lkZ2V0XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZSA9PSAnQ1JFQVRFJykge1xyXG4gICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2Uuc3VibWl0RGFzaGJvYXJkKHBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gY3JlYXRlZC4nLCdpbmZvJyk7XHJcbiAgICAgICAgdGhpcy5pc1NtaWxleSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gY3JlYXRlZC4nXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlLmVtaXQoeyBtb2RlOiAnY3JlYXRlZCcsIGlkOiByZXMuX2lkIH0pO1xyXG4gICAgICAgIH0sIDMwMDApO1xyXG5cclxuICAgICAgfSxcclxuICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IDQwOSkge1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ0EgZGFzaGJvYXJkIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzLiBTcGVjaWZ5IGEgZGlmZmVyZW50IG5hbWUgZm9yIHRoZSBkYXNoYm9hcmQuJywnYWxlcnQnKTtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcclxuICAgICAgcGF5bG9hZC53aWRnZXRfdXBkYXRlX2ZsYWcgPSB0cnVlXHJcbiAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS51cGRhdGVEYXNoYm9hcmQodGhpcy5kYXNoYm9hcmRJZCwgcGF5bG9hZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgLy8gdGhpcy5zbmFja0Jhci5zaG93KCdUaGUgZGFzaGJvYXJkIGhhcyBiZWVuIHVwZGF0ZWQnLCdpbmZvJyk7XHJcbiAgICAgICAgICB0aGlzLmlzU21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuc21pbGV5TWVzc2FnZSA9ICdUaGUgZGFzaGJvYXJkIGhhcyBiZWVuIHVwZGF0ZWQnO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZS5lbWl0KHsgbW9kZTogJ3VwZGF0ZWQnIH0pO1xyXG4gICAgICAgICAgfSwgMzAwMCk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdPT1BTISBTb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgdGhlIHBhZ2UgY291bGQgbm90IGJlIGxvYWRlZC4gQ291bGQgeW91IHBsZWFzZSB0cnkgb25lIG1vcmUgdGltZT8nLCdhbGVydCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVkaXREYXNoYm9hcmQoKSB7XHJcbiAgICBpZiAodGhpcy5kYXNoYm9hcmRJZCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZmV0Y2hEYXNoYm9hcmQodGhpcy5kYXNoYm9hcmRJZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5ub25SZW1vdmFibGVVc2Vyc0xpc3QgPSBbcmVzLmNyZWF0ZWRfYnldXHJcbiAgICAgICAgZGF0YS52aXNpYmxlX3RvX2dyb3VwcyA9IChkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyAmJiBkYXRhLnZpc2libGVfdG9fZ3JvdXBzLmxlbmd0aCkgPyBkYXRhLnZpc2libGVfdG9fZ3JvdXBzIDogW107XHJcbiAgICAgICAgdGhpcy5wb3B1bGF0ZURhc2hib2FyZEZvcm0oZGF0YSk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwb3B1bGF0ZURhc2hib2FyZEZvcm0oZGF0YTogYW55KSB7XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiIGRhdGF0dHR0dGEgPT09PiBcIixkYXRhLHRoaXMuZ3JvdXBMaXN0KTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lID0gZGF0YT8uZGFzaGJvYXJkX25hbWUsXHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQgPSBkYXRhPy5kZXNjcmlwdGlvblswXT8uY29udGVudCA/PyBcIlwiICxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycyA9IHRoaXMuc2V0TGlzdCh0aGlzLnVzZXJzTGlzdCwgZGF0YT8udmlzaWJsZV90b191c2VycywgJ21lbWJlcl9pZCcpO1xyXG4gICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkVXNlcnNMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycztcclxuICAgICAgZGF0YS52aXNpYmxlX3RvX2dyb3VwcyA9IChkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyAmJiBkYXRhPy52aXNpYmxlX3RvX2dyb3Vwcy5sZW5ndGgpID8gZGF0YT8udmlzaWJsZV90b19ncm91cHMgOiBbXTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwID0gdGhpcy5zZXRMaXN0KHRoaXMuZ3JvdXBMaXN0LCBkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyA/PyBbXSAsJ2dyb3VwX2lkJyk7XHJcbiAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXA7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSB0aGlzLnNldExpc3QodGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LCBkYXRhPy5yZXNwb25zaWJpbGl0eV9jZW50ZXIsICdpdGVtX2lkJyk7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxDb21wbGlhbmNlQ2F0ZWdvcmllcywgZGF0YT8ucmVzcG9uc2liaWxpdHlfY2F0ZWdvcnksICdjYXRlZ29yeV9pZCcpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMgPSB0aGlzLnNldExpc3QodGhpcy5hbGxSaXNrQ2F0ZWdvcmllcywgZGF0YT8ucmlza19jYXRlZ29yeSwgJ2NhdGVnb3J5X2lkJyk7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhID0gKGRhdGE/LmRpc3BsYXlfY3JpdGVyaWEgPT09IFwiQk9USF9SQ19BTkRfQ0FURUdPUllcIikgPyAnYW5kJyA6ICdvcic7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSA9IChkYXRhPy50aW1lZnJhbWU/LnN0YXJ0X2RhdGUpID8gZGF5anMoZGF0YT8udGltZWZyYW1lPy5zdGFydF9kYXRlKT8udG9EYXRlKCkgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUgPSAoZGF0YT8udGltZWZyYW1lPy5lbmRfZGF0ZSkgPyBkYXlqcyhkYXRhPy50aW1lZnJhbWU/LmVuZF9kYXRlKT8udG9EYXRlKCkgOiB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQgPSBkYXRhLndpZGdldF9kZXRhaWxzXHJcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IGRhdGEud2lkZ2V0X2RldGFpbHMubGVuZ3RoID4gMCA/IFsuLi5uZXcgU2V0KGRhdGEud2lkZ2V0X2RldGFpbHMpXSA6IFtdO1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRXaWRnZXRzID0gZGF0YS5hbGxfd2lkZ2V0cy5sZW5ndGggPiAwID8gWy4uLm5ldyBTZXQoZGF0YS5hbGxfd2lkZ2V0cyldIDogW107XHJcbiAgICB0aGlzLnNldEZyZXF1ZW5jeShkYXRhPy5lbWFpbF9zdW1tYXJ5LCAnaW1wb3J0Jyk7XHJcbiAgICBsZXQgbWluVG9EYXRlID0gdGhpcy5zZXRUb0RhdGUoZGF0YT8udGltZWZyYW1lPy5zdGFydF9kYXRlKTtcclxuICAgIHRoaXMudG9EYXRlUGlja2VyQ29uZmlnID0geyBtaW46IG1pblRvRGF0ZSB9O1xyXG4gICAgdGhpcy5oaWRlVG9EYXRlID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICAgIH0sIDIwKTtcclxuICB9XHJcbiAgY2F0Y2goZXJyb3Ipe1xyXG4gICAgY29uc29sZS5sb2coXCJwb3B1bGF0ZSBkYXNoYm9hcmQgZXJyb3IgPT5cIiwgZXJyb3IpXHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RnJlcXVlbmN5KGV2ZW50OiBhbnksIG1vZGU6IGFueSkge1xyXG4gICAgaWYgKG1vZGUgPT09ICdleHBvcnQnKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3dlZWtseSc6XHJcbiAgICAgICAgICBjb25zdCB3ZWVrbHlWYWx1ZURhdGEgPSB0aGlzLmRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJlcXVlbmNpZXM/Lm1hcCgoZWxlOiBhbnkpID0+IE51bWJlcihlbGUpICsgMSk7XHJcbiAgICAgICAgICBjb25zdCB3ZWVrbHlWYWx1ZSA9IHdlZWtseVZhbHVlRGF0YT8uam9pbigpO1xyXG4gICAgICAgICAgcmV0dXJuICcyficgKyB3ZWVrbHlWYWx1ZSArICd+MH4wJ1xyXG4gICAgICAgIGNhc2UgJ21vbnRobHknOlxyXG4gICAgICAgICAgY29uc3QgbW9udGhseVZhbHVlRGF0YSA9IHRoaXMuZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcmVxdWVuY2llcz8ubWFwKChlbGU6IGFueSkgPT4gTnVtYmVyKGVsZSkgKyAxKTtcclxuICAgICAgICAgIGNvbnN0IG1vbnRobHlWYWx1ZSA9IG1vbnRobHlWYWx1ZURhdGE/LmpvaW4oKTtcclxuICAgICAgICAgIHJldHVybiAnM34nICsgdGhpcy5kYXNoYm9hcmRGb3JtPy5mcmVxdWVuY3lEYXRlICsgJ34nICsgbW9udGhseVZhbHVlICsgJ34wJ1xyXG4gICAgICAgIGNhc2UgJ3F1YXJ0ZXJseSc6XHJcbiAgICAgICAgICBjb25zdCBxdWFydGVybHlWYWx1ZURhdGEgPSBOdW1iZXIodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMpICsgMTtcclxuICAgICAgICAgIHJldHVybiAnN34nICsgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgKyAnficgKyBxdWFydGVybHlWYWx1ZURhdGEgKyAnfjAnXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobW9kZSA9PT0gJ2ltcG9ydCcpIHtcclxuICAgICAgY29uc3QgdmFsID0gZXZlbnQuc3BsaXQoJ34nKVxyXG4gICAgICBzd2l0Y2ggKHZhbFswXSkge1xyXG4gICAgICAgIGNhc2UgJzInOiB7XHJcbiAgICAgICAgICBsZXQgc3RyaW5nVmFsID0gXCJFdmVyeSBcIjtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUgPSAnd2Vla2x5J1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMgPSB2YWxbMV0/LnNwbGl0KCcsJyk/Lm1hcCgoZWxlbWVudDogYW55KSA9PiBOdW1iZXIoZWxlbWVudCkgLSAxKTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzPy5mb3JFYWNoKChkYXlJbmRleDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHN0cmluZ1ZhbCArPSBpbmRleCA9PT0gMCA/IHRoaXMuZGF5TmFtZXNbZGF5SW5kZXhdIDogJywgJyArIHRoaXMuZGF5TmFtZXNbZGF5SW5kZXhdO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID0gc3RyaW5nVmFsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzMnOiB7XHJcbiAgICAgICAgICBsZXQgc3RyaW5nVmFsID0gXCJldmVyeSBcIjtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUgPSAnbW9udGhseSdcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID0gdmFsWzFdXHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IHZhbFsyXT8uc3BsaXQoJywnKT8ubWFwKChlbGVtZW50OiBhbnkpID0+IE51bWJlcihlbGVtZW50KSAtIDEpO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMuZm9yRWFjaCgobW9udGhJbmRleDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHN0cmluZ1ZhbCArPSBpbmRleCA9PT0gMCA/IHRoaXMubW9udGhOYW1lc1ttb250aEluZGV4XSA6ICcsICcgKyB0aGlzLm1vbnRoTmFtZXNbbW9udGhJbmRleF07XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgbGV0IG1vbnRoRGF0ZU5hbWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gXCIxXCIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcxc3QnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSBcIjJcIikge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzJuZCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09IFwiM1wiKSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnM3JkJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSArICd0aCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID0gbW9udGhEYXRlTmFtZSArICcgb2YgJyArIHN0cmluZ1ZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgJzcnOiB7XHJcbiAgICAgICAgICBsZXQgc3RyaW5nVmFsID0gXCJldmVyeSBcIjtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUgPSAncXVhcnRlcmx5J1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPSB2YWxbMV07XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IE51bWJlcih2YWxbMl0uc3BsaXQoJywnKVswXSkgLSAxO1xyXG4gICAgICAgICAgc3RyaW5nVmFsICs9IHRoaXMucXVhcnRlcnNbdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXNdO1xyXG4gICAgICAgICAgbGV0IG1vbnRoRGF0ZU5hbWU7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gXCIxXCIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcxc3QnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSBcIjJcIikge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzJuZCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09IFwiM1wiKSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnM3JkJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSArICd0aCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlID0gbW9udGhEYXRlTmFtZSArICcgb2YgJyArIHN0cmluZ1ZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xyXG4gICAgLy95b3VyIGNvZGUgdG8gdXBkYXRlIHRoZSBtb2RlbFxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGVybWlzc2lvbihyb2xlQWN0aW9uczogYW55KXtcclxuICAgIGxldCBpZkV4aXN0UmlzayA9IHJvbGVBY3Rpb25zPy5maW5kKChlbDphbnkpPT4gZWwubW9kdWxlTmFtZSA9PSBcInJpc2tcIik7XHJcbiAgICBpZkV4aXN0Umlzaz8uc3ViTW9kdWxlPy5mb3JFYWNoKCAobW9kdWxlOiBhbnkpID0+IHtcclxuICAgICAgbW9kdWxlPy5wZXJtaXNzaW9ucz8uZm9yRWFjaCggKHBlcm1pc3Npb246IGFueSkgPT4ge1xyXG4gICAgICAgIHN3aXRjaChwZXJtaXNzaW9uPy5jb2RlKSB7XHJcbiAgICAgICAgICBjYXNlICdSUk1SJzoge1xyXG4gICAgICAgICAgICBpZihwZXJtaXNzaW9uPy5kZWZhdWx0UGVybWlzc2lvbj09MSB8fCBwZXJtaXNzaW9uPy5lbmFibGU9PTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmlzTWFuYWdlUmlzayA9IHRydWU7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtc25hY2stYmFyPjwvYXBwLXNuYWNrLWJhcj5cclxuPGRpdiBjbGFzcz1cImNyZWF0ZS1kYXNoYm9hcmRcIiAqbmdJZj1cIiFvcGVuQ29uZmlndXJlV2lkZ2V0c1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZS1kYXNoYm9hcmQtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWVuZFwiIFtjbGFzcy5hbmltYXRlLXNsaWRlSW5SaWdodF09XCJhbmltYXRpb25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9yZS1vcHRpb25cIiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yIT09J25hbWUnXCI+XHJcbiAgICAgICAgICAgIDxhcHAtdXNlci1saXN0ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0nd2hvQ2FuVmlldydcIlxyXG4gICAgICAgICAgICAgICAgKHNhdmVTZWxlY3RlZFVzZXJzKT1cInNhdmVTZWxlY3RlZExpc3QoJ3dob0NhblZpZXcnLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGNsb3NlVXNlckxpc3QpPVwiYWN0aXZhdGVTZWxlY3RvcignJywgZmFsc2UpXCIgW3RvdGFsUGFnZXNdPVwidG90YWxQYWdlc1wiIFt0b3RhbExpc3RdPVwidG90YWxMaXN0XCJcclxuICAgICAgICAgICAgICAgIFtsaXN0RGV0YWlsc109XCJsaXN0RGV0YWlsc1wiIFt0b3RhbGdyb3Vwc2NvdW50XT1cInRvdGFsZ3JvdXBzXCIgW2ZlYXR1cmVdPVwiZmVhdHVyZVwiID48L2FwcC11c2VyLWxpc3Q+XHJcbiAgICAgICAgICAgIDxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVyICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0ncmNMaXN0J1wiXHJcbiAgICAgICAgICAgICAgICBbcmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdF09XCJyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XCIgW3JhZGlvU2VsZWN0aW9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyc109XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXCIgW3JjSWRLZXldPVwiJ2l0ZW1faWQnXCJcclxuICAgICAgICAgICAgICAgIChzYXZlU2VsZWN0ZWRMaXN0KT1cInNhdmVTZWxlY3RlZExpc3QoJ3JjJywkZXZlbnQpXCIgKGNsb3NlUmNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiPlxyXG4gICAgICAgICAgICA8L2FwcC1yZXNwb25zaWJpbGl0eS1jZW50ZXI+XHJcbiAgICAgICAgICAgIDxhcHAtY2F0ZWdvcmllcyAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgW2NhdGVnb3J5TGlzdF09XCJyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlXCIgW2FsbENhdGVnb3JpZXNdPVwiYWxsQ29tcGxpYW5jZUNhdGVnb3JpZXNcIlxyXG4gICAgICAgICAgICAgICAgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiIFtzZWxlY3RlZENhdGVnb3JpZXNdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1wiXHJcbiAgICAgICAgICAgICAgICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJywkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiPjwvYXBwLWNhdGVnb3JpZXM+XHJcbiAgICAgICAgICAgIDxhcHAtcmlzay1jYXRlZ29yaWVzICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0ncmlza0NhdGVnb3JpZXMnXCIgW2NhdGVnb3J5TGlzdF09XCJyaXNrQ2F0ZWdvcnlMaXN0XCJcclxuICAgICAgICAgICAgICAgIFthbGxDYXRlZ29yaWVzXT1cImFsbFJpc2tDYXRlZ29yaWVzXCIgW2NhdGVnb3J5SWRLZXldPVwiJ2NhdGVnb3J5X2lkJ1wiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllc1wiXHJcbiAgICAgICAgICAgICAgICAoc2F2ZVNlbGVjdGVkQ2F0ZWdvcnkpPVwic2F2ZVNlbGVjdGVkTGlzdCgncmlza0NhdGVnb3J5JywkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjbG9zZUNhdGVnb3JpZXNMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiPjwvYXBwLXJpc2stY2F0ZWdvcmllcz5cclxuXHJcbiAgICAgICAgICAgIDxhcHAtZnJlcXVlbmN5ICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3I9PT0nZnJlcXVlbmN5J1wiIChjbG9zZUZyZXF1ZW5jeVBvcHVwKT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAoc2F2ZUZyZXF1ZW5jeSk9XCJzYXZlRnJlcXVlbmN5KCRldmVudClcIiBbc2F2ZWRGcmVxdWVuY3lUYWJdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRGF0ZV09XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGVcIiBbc2F2ZWRGcmVxdWVuY2llc109XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXNcIj5cclxuICAgICAgICAgICAgPC9hcHAtZnJlcXVlbmN5PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kaWFsb2ctY29udGFpbmVyIHNpZGUtZGlhbG9nXCI+XHJcblxyXG4gICAgICAgICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJ2TG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kaWFsb2ctYm9keS1jb250YWluZXJcIiAoc2Nyb2xsKT1cImFuaW1hdGVJbWFnZSgpXCIgW2NsYXNzLmhpZGRlbi1zY3JvbGxdPVwicG9wb3ZlclNlcnZpY2Uuc3RvcFNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvd2hhdC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ25hbWUnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTE2IHZ4LWQtYmxvY2sgdngtdHQtdXBwZXJjYXNlIHZ4LW10LTEgdngtbWItMSB2eC13LTEwMCB2eC10ZXh0LWxlZnRcIj5EYXNoYm9hcmQgTmFtZTxzcGFuIGNsYXNzPVwicmVxdWlyZSB2eC10eHQtcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5wdXQtZ3JvdXAgdngtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ2eC1mcy0xMyB2eC1mdy00MDAgdngtbGgtMjAgdngtcHQtMSB2eC1wYi0xIHZ4LXBsLTMgdngtcHItMyB2eC1iZy13aGl0ZSB2eC13LTEwMCB2eC1wYXJhZ3JhcGgtdHh0XCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkFkZCBkYXNoYm9hcmQgbmFtZSAoTWF4IGxpbWl0OiAzMCBjaGFyYWN0ZXJzKS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWVcIiAoa2V5ZG93bik9XCJhY3RpdmVTZWxlY3RvciA9ICduYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNpbik9XCJhY3RpdmF0ZVNlbGVjdG9yKCduYW1lJyx0cnVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsZmFsc2UpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRlclwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZT8ubGVuZ3RoID4gMFwiPnt7MzAgLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLmxlbmd0aH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidngtdHh0LWVycm9yXCIgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKCBkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmROYW1lPy5sZW5ndGg+MzAgfHwgIWRhc2hib2FyZEZvcm0/LmRhc2hib2FyZE5hbWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7KGRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZS5sZW5ndGg+MzApPydZb3UgaGF2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgbGltaXQgb2YgMzAgY2hhcmFjdGVycy4nOidQbGVhc2UgZW50ZXIgYSBuYW1lIGZvciB0aGlzIERhc2hib2FyZC4nfX0gPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbnB1dC1ncm91cCB2eC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXJ4LWVkaXRvciBbZWRpdG9yQ29uZmlnXT1cImRhc2hib2FyZERlc2NyaXB0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmREZXNjcmlwdGlvblRleHRcIj48L21hcngtZWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQ/Lmxlbmd0aCA+IDBcIj57ezI1MCAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0IHwgdGV4dENvdW50KX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidngtdHh0LWVycm9yXCIgW2FwcFNjcm9sbEluVmlld109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudCkgPiAyNTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IG9mIDI1MCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAnd2hvQ2FuVmlldydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnd2hvQ2FuVmlldycgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3doby5zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGg9PTAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICd3aG9DYW5WaWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoPjAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICd3aG9DYW5WaWV3J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTQgdngtZC1ibG9jayB2eC1tYi0yIHZ4LXR0LXVwcGVyY2FzZSB2eC13LTEwMCB2eC10ZXh0LWxlZnQgdngtbGFiZWwtdHh0IHZ4LW10LTFcIj5XaG8gY2FuIHZpZXcgdGhpcyBkYXNoYm9hcmQ/PHNwYW4gY2xhc3M9XCJyZXF1aXJlIHZ4LXR4dC1yZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rib3ggdngtZnMtMTMgdngtZnctNDAwIHZ4LXBhcmFncmFwaC10eHRcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cInZ4LWZzLTEzIHZ4LWZ3LTQwMCB2eC1saC0yMCB2eC1wdC0xIHZ4LXBiLTEgdngtcGwtMyB2eC1wci0zIHZ4LWJnLXdoaXRlIHZ4LXctMTAwIHZ4LXBhcmFncmFwaC10eHRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiV2hvIGNhbiB2aWV3IHRoaXMgZGFzaGJvYXJkP1wiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignd2hvQ2FuVmlldycsIHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZCB2eC1wLTIgdngtZnMtMTMgdngtZnctNDAwIHZ4LXctMTAwIHZ4LWQtZmxleCB2eC10ZXh0LWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGFyYWdyYXBoLXR4dCB2eC1saC01XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aD4wXCI+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwib25seXVzZXJzbGlzdFwiICpuZ0lmPVwiIWdyb3Vwc0VuYWJsZWRcIiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwIHZ4LXR4dC1ibHVlIHZ4LWZzLTEyIHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1wbC0yIHZ4LXByLTIgdngtYmctd2hpdGUgdngtZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHVzZXIgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5zbGljZSgwLDIpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyB2eC1mcy0xMCB2eC1mdy00MDAgdngtbXItMlwiIChjbGljayk9XCJyZW1vdmUoJ3dob0NhblZpZXcnLHVzZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWUgXCI+e3t1c2VyLm1lbWJlcl9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50IHZ4LXR4dC13aGl0ZSB2eC1mdy01MDAgdngtbWwtMSB2eC1saC01IHZ4LWJnLWJsdWVcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoID4gMiAmJiAhZ3JvdXBzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInVzZXJMaXN0LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItZ3JvdXAtY2hpcC1jb250YWluZXJcIiAqbmdJZj1cImdyb3Vwc0VuYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIiA+VVNFUihTKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyQ291bnQucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwibGVmdFwiPnt7ZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEdyb3VwPy5sZW5ndGggJiYgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGhcIj4mPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcFwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRHcm91cD8ubGVuZ3RoXCIgaWQ9XCJ1c2Vyc2FuZGdyb3Vwc1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj5VU0VSIEdST1VQKFMpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cENvdW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj57e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXA/Lmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAgKm5nSWY9XCIhbGlzdERldGFpbHMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKGRhdGEubWVtYmVyX2lkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCd3aG9DYW5WaWV3JyxkYXRhKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5tZW1iZXJfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXBDb3VudCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRHcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlld0dyb3VwJyxkYXRhKVwiID4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YS5ncm91cF9uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICd3aG9DYW5WaWV3J1wiIGNsYXNzPVwiZWRpdCB2eC10dC11cHBlcmNhc2UgdngtZnMtMTEgdngtZnctNTAwIHZ4LXB0LTAgdngtcGItMCB2eC1wbC0xIHZ4LXByLTEgdngtZC1ibG9jayB2eC10eHQtYmx1ZSB2eC1kLWJsb2NrXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcignd2hvQ2FuVmlldycsdHJ1ZSlcIj48aSBjbGFzcz1cImljb25zIHZ4LWZzLTggdngtZnctNDAwIHZ4LW1yLTFcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjdXNlckxpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgdXNlciBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnMgfCBzbGljZTogMjsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGlzdERldGFpbHMubm9uUmVtb3ZhYmxlVXNlcnNMaXN0LmluY2x1ZGVzKHVzZXIubWVtYmVyX2lkKSAmJiAhZ3JvdXBzRW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3dob0NhblZpZXcnLHVzZXIpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdXNlcj8ubWVtYmVyX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3JjTGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmNMaXN0JyAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg9PTAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvcmVzcG9uc2liaWxpdHktY2VudGVyLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg+MCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjTGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTQgdngtZC1ibG9jayB2eC1tYi0yIHZ4LXR0LXVwcGVyY2FzZSB2eC13LTEwMCB2eC10ZXh0LWxlZnQgdngtbGFiZWwtdHh0IHZ4LW10LTFcIj5SRVNQT05TSUJJTElUWSBDRU5URVIoUyk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rib3hcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg9PTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbnB1dCB2eC1iZy13aGl0ZSB2eC1mcy0xMyB2eC1mdy00MDAgdngtcGFyYWdyYXBoLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgdGhhdCB5b3Ugd291bGQgbGlrZSBkaXNwbGF5ZWQgaW4gdGhlIERhc2hib2FyZCwgaWYgYW55LlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmNMaXN0JywgdHJ1ZSlcIiBbY2xhc3MuZXJyb3JdPVwic3VibWl0dGVkICYmIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg9PTAgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg9PTAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aD09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgdngtcC0yIHZ4LWZzLTEzIHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1kLWZsZXggdngtdGV4dC1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNVwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcCB2eC10eHQtYmx1ZSB2eC1mcy0xMiB2eC1mdy00MDAgdngtdy0xMDAgdngtcGwtMiB2eC1wci0yIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoMCwyKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEwIHZ4LWZ3LTQwMCB2eC1tci0yXCIgKGNsaWNrKT1cInJlbW92ZSgncmMnLHJjKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tyYy5pdGVtX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnQgdngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1tbC0xIHZ4LWxoLTUgdngtYmctYmx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoID4gMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJjTGlzdC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmNMaXN0J1wiIGNsYXNzPVwiZWRpdCB2eC10dC11cHBlcmNhc2UgdngtZnMtMTEgdngtZnctNTAwIHZ4LXB0LTAgdngtcGItMCB2eC1wbC0xIHZ4LXByLTEgdngtZC1ibG9jayB2eC10eHQtYmx1ZSB2eC1kLWJsb2NrXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmNMaXN0Jyx0cnVlKVwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtOCB2eC1mdy00MDAgdngtbXItMVwiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JjTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJjIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzIHwgc2xpY2U6IDI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3JjJyxyYylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByYz8uaXRlbV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL2NhdGVnb3J5LnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg+MCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTQgdngtZC1ibG9jayB2eC1tYi0yIHZ4LXR0LXVwcGVyY2FzZSB2eC13LTEwMCB2eC10ZXh0LWxlZnQgdngtbGFiZWwtdHh0IHZ4LW10LTFcIj5QUk9HUkFNPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Ym94XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXQgdngtYmctd2hpdGUgdngtZnMtMTMgdngtZnctNDAwIHZ4LXBhcmFncmFwaC10eHRucHV0IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUHJvZ3JhbShzKSB0aGF0IHlvdSB3b3VsZCBsaWtlIGRpc3BsYXllZCBpbiB0aGUgRGFzaGJvYXJkLCBpZiBhbnkuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnLCB0cnVlKVwiIFtjbGFzcy5lcnJvcl09XCJzdWJtaXR0ZWQgJiYgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aD09MCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aD09MCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPT0wXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkIHZ4LXAtMiB2eC1mcy0xMyB2eC1mdy00MDAgdngtdy0xMDAgdngtZC1mbGV4IHZ4LXRleHQtY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTVcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAgdngtdHh0LWJsdWUgdngtZnMtMTIgdngtZnctNDAwIHZ4LXctMTAwIHZ4LXBsLTIgdngtcHItMiB2eC1iZy13aGl0ZSB2eC1kLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgckNhdGVnb3J5IG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5zbGljZSgwLDIpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgdngtZnMtMTAgdngtZnctNDAwIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJyxyQ2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e3JDYXRlZ29yeS5pdGVtX25hbWV9fTwvc3Bhbj48L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY291bnQgdngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1tbC0xIHZ4LWxoLTUgdngtYmctYmx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoID4gMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJDYXRlZ29yeUxpc3QucG9wb3ZlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1wiIGNsYXNzPVwiZWRpdCB2eC10dC11cHBlcmNhc2UgdngtZnMtMTEgdngtZnctNTAwIHZ4LXB0LTAgdngtcGItMCB2eC1wbC0xIHZ4LXByLTEgdngtZC1ibG9jayB2eC10eHQtYmx1ZSB2eC1kLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJyx0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyB2eC1mcy04IHZ4LWZ3LTQwMCB2eC1tci0xXCI+JiN4ZTliYTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjckNhdGVnb3J5TGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyB8IHNsaWNlOiAyOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnLHJDYXRlZ29yeSlcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByQ2F0ZWdvcnk/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhdGVnb3JpZXMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Umlza0NhdGVnb3J5ICYmIGlzTWFuYWdlUmlza1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIgYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2F0ZWdvcmllcycgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGg9PTAgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICdyaXNrQ2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL2ltYWdlcy9jYXRlZ29yeS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGg+MCAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3Jpc2tDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGVja0ljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiICpuZ0lmPVwiaXNNYW5hZ2VSaXNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+UklTSyBDQVRFR09SSUVTPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Ym94XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGg9PTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbnB1dCB2eC1iZy13aGl0ZSB2eC1mcy0xMyB2eC1mdy00MDAgdngtcGFyYWdyYXBoLXR4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLXBsYWNlaG9sZGVyPVwiU2VsZWN0IHRoZSBSaXNrIENhdGVnb3JpZXMgdGhhdCB5b3Ugd291bGQgbGlrZSBkaXNwbGF5ZWQgaW4gdGhlIERhc2hib2FyZCwgaWYgYW55LlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3Rvcigncmlza0NhdGVnb3JpZXMnLCB0cnVlKVwiIFtjbGFzcy5lcnJvcl09XCJzdWJtaXR0ZWQgJiYgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aD09MCAmJiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aD09MCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPT0wXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkIHZ4LXAtMiB2eC1mcy0xMyB2eC1mdy00MDAgdngtdy0xMDAgdngtZC1mbGV4IHZ4LXRleHQtY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTUgICAgICAgIFwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwIHZ4LXR4dC1ibHVlIHZ4LWZzLTEyIHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1wbC0yIHZ4LXByLTIgdngtYmctd2hpdGUgdngtZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZSgwLDIpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgdngtZnMtMTAgdngtZnctNDAwIHZ4LW1yLTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmlza0NhdGVnb3J5JyxyaXNrQ2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57e3Jpc2tDYXRlZ29yeS5jYXRlZ29yeV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50IHZ4LXR4dC13aGl0ZSB2eC1mdy01MDAgdngtbWwtMSB2eC1saC01IHZ4LWJnLWJsdWVcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aCA+IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyaXNrTGlzdC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/LnNsaWNlKDIpLmxlbmd0aH19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2F0ZWdvcmllcydcIiBjbGFzcz1cImVkaXQgdngtdHQtdXBwZXJjYXNlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wdC0wIHZ4LXBiLTAgdngtcGwtMSB2eC1wci0xIHZ4LWQtYmxvY2sgdngtdHh0LWJsdWUgdngtZC1ibG9ja1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYXRlZ29yaWVzJyx0cnVlKVwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtOCB2eC1mdy00MDAgdngtbXItMVwiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3Jpc2tMaXN0IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmlza0NhdGVnb3J5IG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXMgfCBzbGljZTogMjsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmlza0NhdGVnb3J5JyxyaXNrQ2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmlza0NhdGVnb3J5Py5jYXRlZ29yeV9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGlzcGxheUNyaXRlcmlhPy5sZW5ndGg9PTBcIiBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvd2hvLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImRhc2hib2FyZEZvcm0/LmRpc3BsYXlDcml0ZXJpYT8ubGVuZ3RoPjAgXCIgY2xhc3M9XCJjaGVja0ljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+RElTUExBWSBDUklURVJJQTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwXCIgKm5nSWY9XCJzaG93Q3JpdGVyaWFcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY3MtcmFkaW8gW2NoZWNrZWRdPVwiZGFzaGJvYXJkRm9ybS5kaXNwbGF5Q3JpdGVyaWE9PSdvcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhPSdvcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhvc2UgSXRlbXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gZWl0aGVyIHRoZSBzZWxlY3RlZCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgb3IgdGhlIHNlbGVjdGVkIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW8+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtjaGVja2VkXT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhPT0nYW5kJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwiZGFzaGJvYXJkRm9ybS5kaXNwbGF5Q3JpdGVyaWE9J2FuZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhvc2UgSXRlbXMgdGhhdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYm90aCB0aGUgc2VsZWN0ZWQgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIGFuZCB0aGUgc2VsZWN0ZWQgQ2F0ZWdvcmllcy48L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAgKm5nSWY9XCIhZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSB8fCAhZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRUb0RhdGVcIiBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvd2hlbi5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSAmJiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZVwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTQgdngtZC1ibG9jayB2eC1tYi0yIHZ4LXR0LXVwcGVyY2FzZSB2eC13LTEwMCB2eC10ZXh0LWxlZnQgdngtbGFiZWwtdHh0IHZ4LW10LTFcIj5USU1FRlJBTUU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwtc3ViLWxhYmVsXCI+U2VsZWN0IGhvdyBsb25nIHlvdSB3b3VsZCBsaWtlIHRoZSBpbmZvcm1hdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCB0byBiZSBkaXNwbGF5ZWQgZm9yLiBJZiBubyB0aW1lZnJhbWUgaXMgc2VsZWN0ZWQsIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZCBwZXJtYW5lbnRseS48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXNlbGVjdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInRnJvbSdcIiAoY2xpY2spPVwib3BlbkZyb21EYXRlUGlja2VyKClcIiByZWFkb25seT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkcC1kYXRlLXBpY2tlciAjZnJvbURhdGVQaWNrZXIgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJvbURhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJjbG9zZUZyb21EYXRlUGlja2VyKCk7IGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwiZnJvbURhdGVQaWNrZXJDb25maWdcIj48L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VGcm9tRGF0ZVBpY2tlcigpXCIgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1zZWxlY3RcIiAqbmdJZj1cIiFoaWRlVG9EYXRlXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW3ZhbHVlXT1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVG9EYXRlIHwgZGF0ZTogJ2RkIE1NTSB5eXl5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidUbydcIiAoY2xpY2spPVwib3BlblRvRGF0ZVBpY2tlcigpXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXIgI3RvRGF0ZVBpY2tlciBbKG5nTW9kZWwpXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IERhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJjbG9zZVRvRGF0ZVBpY2tlcigpOyBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInRvRGF0ZVBpY2tlckNvbmZpZ1wiPjwvZHAtZGF0ZS1waWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheVwiIChjbGljayk9XCJjbG9zZVRvRGF0ZVBpY2tlcigpXCIgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidngtdHh0LWVycm9yXCIgIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIChkYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJvbURhdGUgJiYgKCFkYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0IGEgdGltZS1mcmFtZS48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ2ZyZXF1ZW5jeSdcIiBcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnZnJlcXVlbmN5JyAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIiBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvc2VuZC1yZXNvbHV0aW9uLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mb3JtLWdyb3VwIHZ4LWQtYmxvY2sgdngtbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTQgdngtZC1ibG9jayB2eC1tYi0yIHZ4LXR0LXVwcGVyY2FzZSB2eC13LTEwMCB2eC10ZXh0LWxlZnQgdngtbGFiZWwtdHh0IHZ4LW10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRW1haWwgU3VtbWFyaWVzIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbC1zdWItbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdvdWxkIGxpa2UgdG8gc2VuZCBhIHN1bW1hcnkgb2YgdGhpcyBEYXNoYm9hcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsZWFzZSBzZWxlY3QgYSBmcmVxdWVuY3koQnkgZGVmYXVsdCBWQ29tcGx5IHNlbmRzIGEgd2Vla2x5IFN1bW1hcnkpLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGJveFwiICpuZ0lmPVwiIWRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkVtYWlsIFN1bW1hcmllc1wiIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5JywgdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgdngtcC0yIHZ4LWZzLTE0IHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1kLWZsZXggdngtdGV4dC1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNVwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0IGZyZXF1ZW5jeS1sZWZ0IHZ4LXRleHQtbGVmdCBcIiBbaW5uZXJIVE1MXT1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiICBbYXJUb29sdGlwXT1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldID1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCIgY2xhc3M9XCJlZGl0IHZ4LXR0LXVwcGVyY2FzZSB2eC1mcy0xMSB2eC1mdy01MDAgdngtcHQtMCB2eC1wYi0wIHZ4LXBsLTEgdngtcHItMSB2eC1kLWJsb2NrIHZ4LXR4dC1ibHVlIHZ4LWQtYmxvY2tcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdmcmVxdWVuY3knLHRydWUpXCI+PGkgY2xhc3M9XCJpY29ucyB2eC1mcy04IHZ4LWZ3LTQwMCB2eC1tci0xXCI+JiN4ZTliYTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInZ4LWJ0biBibG9jayBwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIiAoY2xpY2spPVwiY29uZmlndXJlRGFzaGJvYXJkKClcIj5OZXh0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgV2lkZ2V0czwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjbG9zZS1kaWFsb2dcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIiAoY2xpY2spPVwiY2xvc2UuZW1pdCh7bW9kZTonZGlzY2FyZCd9KVwiIFthclRvb2x0aXBdPVwiJ1tFc2NdIHRvIGNsb3NlJ1wiIHBsYWNlbWVudD1cImxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV0gPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5M2Y7PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb25maXJtYXRpb24tYWxlcnRcIiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoPT0wICYmIFxyXG4gICAgICAgICAgICAgICAgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aD09MCAmJlxyXG4gICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aD09MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb25maXJtYXRpb24tYWxlcnQtdG9wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTMwOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0XCIgKm5nSWY9XCJzaG93Umlza0NhdGVnb3J5XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyLCBQcm9ncmFtIG9yIFJpc2sgQ2F0ZWdvcnkuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwiIXNob3dSaXNrQ2F0ZWdvcnlcIj5TZWxlY3QgYSBSZXNwb25zaWJpbGl0eSBDZW50ZXIgb3IgUHJvZ3JhbS48L3A+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2xvYmFsLWNvbmZpcm1hdGlvbi1hbGVydC1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1lc3NhZ2VcIj48L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZmlsbFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic3VibWl0dGVkPWZhbHNlXCI+T0tBWTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGFwcC1zbWlsZXktZGlhbG9nIFxyXG4gICAgKm5nSWY9XCJpc1NtaWxleVwiXHJcbiAgICBbbWVzc2FnZV09XCJzbWlsZXlNZXNzYWdlXCI+XHJcbjwvYXBwLXNtaWxleS1kaWFsb2c+XHJcblxyXG48YXBwLWNvbmZpZ3VyZS13aWRnZXRzICpuZ0lmPVwib3BlbkNvbmZpZ3VyZVdpZGdldHNcIiBbbW9kZV09XCJtb2RlXCIgW2Rpc3BsYXllZFdpZGdldHNdPVwiZGlzcGxheWVkV2lkZ2V0c1wiXHJcbiBbc2hvd1Jpc2tdPVwic2hvd1Jpc2tXaWRnZXRzXCIgW3Nob3dDb21wbGlhbmNlXT1cInNob3dDb21wbGlhbmNlV2lkZ2V0c1wiIFtzZWxlY3RlZFdpZGdldHNEYXRhXT1cInNlbGVjdGVkV2lkZ2V0c1wiXHJcbiAgICAod2lkZ2V0c0RhdGFNb2RpZmllZCk9XCJzZXRTZWxlY3RlZFdpZGdldHMoJGV2ZW50KVwiIChjbG9zZUNvbmZpZ3VyZVdpZGdldHMpPVwiY2xvc2VDb25maWd1cmVXaWRnZXRzKCRldmVudClcIj5cclxuPC9hcHAtY29uZmlndXJlLXdpZGdldHM+Il19
946
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcmVhdGUtZGFzaGJvYXJkL3NyYy9saWIvY3JlYXRlLWRhc2hib2FyZC1jb250YWluZXIvY3JlYXRlLWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWV0SSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3hELG1DQUFtQztBQVFuQyxNQUFNLE9BQU8sd0JBQXdCO0lBa0luQyxZQUNVLHNCQUE4QyxFQUM5QyxpQkFBb0MsRUFDcEMsR0FBc0IsRUFDdEIsUUFBeUIsRUFDMUIsY0FBOEIsRUFDN0IsdUJBQWdELEVBQ2hELFNBQXdCO1FBTnhCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUMxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDN0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBdElsQyxtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ1IsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixn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SUFBSSxFQUFFO29CQUN2QixLQUFLLE1BQU0sQ0FBQyxDQUFDO3dCQUNYLElBQUcsVUFBVSxFQUFFLGlCQUFpQixJQUFFLENBQUMsSUFBSSxVQUFVLEVBQUUsTUFBTSxJQUFFLENBQUMsRUFBRTs0QkFDNUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7eUJBQzFCO3dCQUFBLENBQUM7d0JBQ0YsTUFBTTtxQkFDUDtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOztxSEFwOEJVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLGtTQUZ4QixDQUFDLGFBQWEsQ0FBQyxnUUN0QjVCLHlzMkNBdWZ3QjsyRkQvZFgsd0JBQXdCO2tCQU5wQyxTQUFTOytCQUNFLHNCQUFzQixhQUdyQixDQUFDLGFBQWEsQ0FBQzswU0FHakIsT0FBTztzQkFBZixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUV1QixjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDQSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBRWhCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBcUkrQyxnQkFBZ0I7c0JBQXBFLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0b3JDb25maWcgfSBmcm9tICd2Y29tcGx5LWVkaXRvcic7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJDb21wb25lbnQsIElEYXRlUGlja2VyQ29uZmlnIH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcclxuaW1wb3J0IHsgQ3JlYXRlRGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY3JlYXRlLWRhc2hib2FyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFnaW5hdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3BhZ2luYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFVzZXJMaXN0Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vdXNlci1saXN0L3VzZXItbGlzdC5jb25maWcnO1xyXG5pbXBvcnQgeyBDcmVhdGVEYXNoYm9hcmRGb3JtIH0gZnJvbSAnLi9jcmVhdGUtZGFzaGJvYXJkLWNvbmZpZyc7XHJcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uL3VpLWtpdC9zbmFjay1iYXIvc25hY2stYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWd1cmVXaWRnZXRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29uZmlndXJlLXdpZGdldHMuc2VydmljZSc7XHJcbmltcG9ydCB7IGZpbmRJbmRleCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcblxyXG5pbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbi8vIGltcG9ydCAqIGFzIGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XHJcbmltcG9ydCB7IFBvcG92ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdWkta2l0L3BvcG92ZXIvcG9wb3Zlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVGV4dENvdW50UGlwZSB9IGZyb20gJy4vcGlwZXMvdGV4dC1jb3VudC5waXBlJztcclxuLy8gZGF5anMuZXh0ZW5kKGN1c3RvbVBhcnNlRm9ybWF0KTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1kYXNoYm9hcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtZGFzaGJvYXJkLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgcHJvdmlkZXJzOiBbVGV4dENvdW50UGlwZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZURhc2hib2FyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBmZWF0dXJlOiBhbnk7XHJcblxyXG4gIGFjdGl2ZVNlbGVjdG9yID0gJyc7XHJcbiAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtb2RlID0gJ0NSRUFURSc7XHJcbiAgQElucHV0KCkgZGFzaGJvYXJkSWQgPSAnJztcclxuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgY3JlYXRlZEJ5ID0gMDtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZnJvbURhdGVQaWNrZXInKSBmcm9tRGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgndG9EYXRlUGlja2VyJykgdG9EYXRlUGlja2VyITogRGF0ZVBpY2tlckNvbXBvbmVudDtcclxuICBhbmltYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGNvbmZpZ3VyZVdpZGdldCA9IGZhbHNlXHJcblxyXG4gIHRvdGFsUGFnZXMgPSAxO1xyXG4gIHRvdGFsTGlzdCA9IDE7XHJcbiAgdXNlcnNMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIHZMb2FkZXIgPSB0cnVlO1xyXG4gIHVzZXJMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgcmNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgY29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgcmlza0NhdGVnb3J5TGlzdExvYWRlZCA9IGZhbHNlO1xyXG4gIGhpZGVUb0RhdGUgPSBmYWxzZTtcclxuICBsaXN0RGV0YWlsczogVXNlckxpc3RDb25maWd1cmF0aW9uID0ge1xyXG4gICAgc2VsZWN0ZWRVc2Vyc0xpc3Q6IFtdLFxyXG4gICAgc2VsZWN0ZWRHcm91cExpc3Q6W10sXHJcbiAgICBub25SZW1vdmFibGVVc2Vyc0xpc3Q6IFtdLFxyXG4gICAgZGlzcGxheUVsZW1lbnRLZXk6ICdtZW1iZXJfbmFtZScsXHJcbiAgICBkaXNwbGF5R3JvdXBLZXk6J2dyb3VwX25hbWUnLFxyXG4gICAgZ3JvdXBJZGtleTonZ3JvdXBfaWQnLFxyXG4gICAgZWxlbWVudElkS2V5OiAnbWVtYmVyX2lkJyxcclxuICAgIHRvb2x0aXBLZXk6ICdtZW1iZXJfZW1haWwnLFxyXG4gIH07XHJcbiAgZGFzaGJvYXJkRGVzY3JpcHRpb246IEVkaXRvckNvbmZpZyA9IHtcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpcHRpb24gKE1heCBsaW1pdDogMjUwIGNoYXJhY3RlcnMpJyxcclxuICAgIG1vZGU6ICdwcmltZScsXHJcbiAgICBpZDogJ2Rlc2NyaXB0aW9uJ1xyXG4gIH1cclxuICByZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlOiBhbnkgPSB7XHJcbiAgICByZWd1bGF0aW9uczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIHN0YW5kYXJkczoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIGludGVybmFsQ29udHJvbHM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW11cclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW11cclxuICAgIH1cclxuICB9O1xyXG4gIGFsbENvbXBsaWFuY2VDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIGFsbFJpc2tDYXRlZ29yaWVzOiBhbnlbXSA9IFtdO1xyXG4gIHNob3dSaXNrQ2F0ZWdvcnkgPSBmYWxzZTtcclxuICBzaG93Q3JpdGVyaWEgPSB0cnVlO1xyXG5cclxuICBkYXNoYm9hcmRGb3JtOiBDcmVhdGVEYXNoYm9hcmRGb3JtID0ge1xyXG4gICAgZGFzaGJvYXJkTmFtZTogJycsXHJcbiAgICBkYXNoYm9hcmREZXNjcmlwdGlvblRleHQ6ICcnLFxyXG4gICAgc2VsZWN0ZWRWaWV3ZXJzOiBbXSxcclxuICAgIHNlbGVjdGVkR3JvdXA6W10sXHJcbiAgICBzZWxlY3RlZEZyb21EYXRlOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZFRvRGF0ZTogdW5kZWZpbmVkLFxyXG4gICAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM6IFtdLFxyXG4gICAgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM6IFtdLFxyXG4gICAgc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllczogW10sXHJcbiAgICBkaXNwbGF5Q3JpdGVyaWE6ICdvcicsXHJcbiAgICBjb25maWd1cmVXaWRnZXQ6IFtdLFxyXG4gICAgZnJlcXVlbmN5RGV0YWlsczogJycsXHJcbiAgICBzZWxlY3RlZEZyZXF1ZW5jeVR5cGU6ICcnLFxyXG4gICAgc2VsZWN0ZWRGcmVxdWVuY2llczogWzBdLFxyXG4gICAgZnJlcXVlbmN5TWVzc2FnZTogJycsXHJcbiAgICBmcmVxdWVuY3lEYXRlOiAxXHJcbiAgfVxyXG5cclxuXHJcbiAgb3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBmYWxzZTtcclxuICBzZWxlY3RlZFdpZGdldHM6IGFueSA9IFtdO1xyXG4gIGRpc3BsYXllZFdpZGdldHM6IGFueSA9IFtdXHJcblxyXG5cclxuICByZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0ID0gW107XHJcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICBkYXlOYW1lcyA9IFsnTW9uZGF5JywgJ1R1ZXNkYXknLCAnV2VkbmVzZGF5JywgJ1RodXJzZGF5JywgJ0ZyaWRheScsICdTYXR1cmRheScsICdTdW5kYXknXTtcclxuICBtb250aE5hbWVzID0gWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ107XHJcbiAgcXVhcnRlcnMgPSBbJ0phbnVhcnksIEFwcmlsLCBKdWx5LCBPY3RvYmVyJywgJ0ZlYnJ1YXJ5LCBNYXksIEF1Z3VzdCwgTm92ZW1iZXInLCAnTWFyY2gsIEp1bmUsIFNlcHRlbWJlciwgRGVjZW1iZXInXTtcclxuXHJcbiAgY2F0ZWdvcnlMaXN0TG9hZGVkID0gZmFsc2U7XHJcbiAgc2hvd1Jpc2tXaWRnZXRzID0gZmFsc2U7XHJcbiAgc2hvd0NvbXBsaWFuY2VXaWRnZXRzID0gZmFsc2U7XHJcbiAgaXNNYW5hZ2VSaXNrOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHJpc2tDYXRlZ29yeUxpc3QgPSB7XHJcbiAgICBzdHJhdGVnaWM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW11cclxuICAgIH0sXHJcbiAgICBvcGVyYXRpb25hbDoge1xyXG4gICAgICBsaXN0OiBbXSxcclxuICAgICAgc2VsZWN0ZWRMaXN0OiBbXVxyXG4gICAgfSxcclxuICAgIGNvbXBsaWFuY2U6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW11cclxuICAgIH0sXHJcbiAgICBvdGhlcnM6IHtcclxuICAgICAgbGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGVkTGlzdDogW11cclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgZnJvbURhdGVQaWNrZXJDb25maWc6IElEYXRlUGlja2VyQ29uZmlnID0ge1xyXG4gICAgbWluOiB0aGlzLmdldEN1cnJlbnREYXRlKClcclxuICB9XHJcblxyXG4gIHRvRGF0ZVBpY2tlckNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XHJcbiAgfVxyXG5cclxuICBpc1NtaWxleSE6IGJvb2xlYW47XHJcbiAgc21pbGV5TWVzc2FnZTogc3RyaW5nID0gJyc7XHJcbiAgZ3JvdXBMaXN0OiBhbnk7XHJcbiAgZ3JvdXBzRW5hYmxlZDogYm9vbGVhbj1mYWxzZTtcclxuICB0b3RhbGdyb3VwczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgY3JlYXRlRGFzaGJvYXJkU2VydmljZTogQ3JlYXRlRGFzaGJvYXJkU2VydmljZSxcclxuICAgIHByaXZhdGUgcGFnaW5hdGlvblNlcnZpY2U6IFBhZ2luYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzbmFja0JhcjogU25hY2tCYXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIHBvcG92ZXJTZXJ2aWNlOiBQb3BvdmVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZmlndXJlV2lkZ2V0c1NlcnZpY2U6IENvbmZpZ3VyZVdpZGdldHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0ZXh0Q291bnQ6IFRleHRDb3VudFBpcGVcclxuICApIHsgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIGlmICh0aGlzLmNyZWF0ZWRCeSkge1xyXG4gICAgICB0aGlzLmxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5wdXNoKHRoaXMuY3JlYXRlZEJ5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgdGhpcy5jbG9zZS5lbWl0KHsgbW9kZTogJ2Rpc2NhcmQnIH0pO1xyXG4gICAgdGhpcy5pc1NtaWxleSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdyb3Vwc0VuYWJsZWQ9dGhpcy5mZWF0dXJlPy5pc0ZlYXR1cmVFbmFibGVkKFwiZmZfZ3JvdXBzX2ltcHJvdmVtZW50c1wiKTtcclxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgfSwgMzAwKTtcclxuICAgIHRoaXMuZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudCgnJyk7XHJcbiAgICB0aGlzLmdldENhdGVnb3J5TGlzdCgpO1xyXG4gICAgdGhpcy5nZXRSQ0xpc3QoKTtcclxuICAgIHRoaXMuZ2V0Q29tcGxpYW5jZUNhdGVnb3J5TGlzdCgpO1xyXG4gICAgdGhpcy5zZXRGcmVxdWVuY3koXCIyfjF+MH4wXCIsICdpbXBvcnQnKTtcclxuICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgIHRoaXMuZ2V0VXNlcnNMaXN0KCcnKTtcclxuICAgIHRoaXMuZ2V0R3JvdXBMaXN0KCk7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0VXNlckluZm9ybWF0aW9uKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNldFBlcm1pc3Npb24ocmVzPy5yb2xlQWN0aW9ucyk7XHJcbiAgICAgIGNvbnN0IHF1aWNrTGluayA9IHJlcy5xdWlja19saW5rO1xyXG4gICAgICBpZiAocXVpY2tMaW5rLnJpc2spIHtcclxuICAgICAgICB0aGlzLnNob3dSaXNrQ2F0ZWdvcnkgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9LCBlcnJvciA9PiB7IGNvbnNvbGUubG9nKGVycm9yKSB9KTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEaXNwbGF5cyB0aGUgbGlzdGluZyBwYWdlcyB0aGUgbGVmdCBzaWRlIG9mIHBvbGljeSBmb3JtIHRvIHNldCBhbmQgZWRpdCB0aGUgZHJvcGRvd24gZmllbGRzIHZhbHVlc1xyXG4gICAqIEBwYXJhbSB0eXBlIGhvbGRzIG5hbWUgb2YgcGFydGljdWxhciBsaXN0IGlzIHRvIGJlIGRpc3BsYXllZFxyXG4gICAqIEBwYXJhbSBldmVudCBjb250YWlucyBib29sZWFuIHZhbHVlIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb3Igbm90XHJcbiAgICovXHJcbiAgYWN0aXZhdGVTZWxlY3Rvcih0eXBlOiBhbnksIGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICBpZiAodHlwZSA9PSAnZnJlcXVlbmN5JyB8fCB0aGlzLmFjdGl2ZVNlbGVjdG9yID09ICdmcmVxdWVuY3knKSB7XHJcbiAgICAgIHRoaXMuc2hvd0NyaXRlcmlhID0gZmFsc2U7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd0NyaXRlcmlhID0gdHJ1ZTtcclxuICAgICAgfSwgMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2ZVNlbGVjdG9yID0gZXZlbnQgPyB0eXBlIDogJyc7XHJcbiAgfVxyXG5cclxuICBvcGVuRnJvbURhdGVQaWNrZXIoKSB7XHJcbiAgICB0aGlzLmZyb21EYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgb3BlblRvRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMudG9EYXRlUGlja2VyPy5hcGk/Lm9wZW4oKTtcclxuICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSB0cnVlO1xyXG4gIH1cclxuICBjbG9zZUZyb21EYXRlUGlja2VyKCkge1xyXG4gICAgaWYgKCF0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcm9tRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9LCAyMCk7XHJcbiAgICAgIHRoaXMuZnJvbURhdGVQaWNrZXIuYXBpLmNsb3NlKCk7XHJcbiAgICAgIHRoaXMuZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBsZXQgbWluVG9EYXRlID0gdGhpcy5zZXRUb0RhdGUodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJvbURhdGUpXHJcbiAgICB0aGlzLnRvRGF0ZVBpY2tlckNvbmZpZyA9IHsgbWluOiBtaW5Ub0RhdGUgfTtcclxuXHJcbiAgICBjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKG1pblRvRGF0ZS5zcGxpdCgnLScpLnJldmVyc2UoKS5qb2luKCctJykpO1xyXG4gICAgY29uc3QgdG9EYXRlID0gbmV3IERhdGUodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlKVxyXG4gICAgY29uc3QgaW5WYWxpZERhdGUgPSAoZnJvbURhdGUgPj0gdG9EYXRlKSA/IHRydWUgOiBmYWxzZTtcclxuICAgIGlmIChpblZhbGlkRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRUb0RhdGUgPSB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IHRydWU7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZVRvRGF0ZSA9IGZhbHNlO1xyXG4gICAgICB9LCAyMCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZyb21EYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbG9zZVRvRGF0ZVBpY2tlcigpIHtcclxuICAgIHRoaXMudG9EYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XHJcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhbmltYXRlSW1hZ2UoKSB7XHJcbiAgICBjb25zdCBjaXJjbGVJbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2ltYWdlJylcclxuICB9XHJcblxyXG4gIHNhdmVGcmVxdWVuY3koZXZlbnRWYWx1ZXM6IGFueSkge1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmN5VHlwZSA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jeVR5cGU7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcyA9IGV2ZW50VmFsdWVzLmZyZXF1ZW5jaWVzO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2UgPSBldmVudFZhbHVlcy5mcmVxdWVuY3lTdHJpbmc7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9IGV2ZW50VmFsdWVzLnNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMuYWN0aXZhdGVTZWxlY3RvcignJywgZmFsc2UpXHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50RGF0ZSgpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gdG9kYXkuZ2V0RGF0ZSgpICsgJy0nICsgKHRvZGF5LmdldE1vbnRoKCkgKyAxKSArICctJyArIHRvZGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgfVxyXG4gIHNldFRvRGF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIHRvZGF5LmdldERhdGUoKSArIDEgKyAnLScgKyAodG9kYXkuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcbiAgZ2V0RnJvbURhdGUoZGF0YTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdG9kYXkgPSBuZXcgRGF0ZShkYXRhKTtcclxuICAgIHJldHVybiB0b2RheS5nZXREYXRlKCkgKyAnLScgKyAodG9kYXkuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgdG9kYXkuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEl0IHRha2VzIGEgc3RyaW5nLCBjb252ZXJ0cyBpdCB0byBhIGRhdGUsIHRoZW4gcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0IG9mIFlZWVktTU0tREQuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRhdGEgLSB0aGUgZGF0ZSB5b3Ugd2FudCB0byBmb3JtYXRcclxuICAgKiBAcmV0dXJucyBBIHN0cmluZyBpbiB0aGUgZm9ybWF0IG9mIFlZWVktTU0tRERcclxuICAgKi9cclxuICBnZXREYXRlRm9ybWF0ZShkYXRhOiBzdHJpbmcpIHtcclxuICAgIGxldCB0b2RheSA9IG5ldyBEYXRlKGRhdGEpO1xyXG4gICAgcmV0dXJuIHRvZGF5LmdldEZ1bGxZZWFyKCkgKyAnLScgKyAgU3RyaW5nKCh0b2RheS5nZXRNb250aCgpICsgMSkpLnBhZFN0YXJ0KDIsICcwJykrICctJyAgKyAgU3RyaW5nKHRvZGF5LmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZURhc2hib2FyZCgpIHtcclxuICAgIGxldCBmaWVsZHNTdGF0dXMgPSB0aGlzLnZhbGlkYXRlRGFzaGJvYXJkKCk7XHJcbiAgICBpZiAoZmllbGRzU3RhdHVzKSB7XHJcbiAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ0NSRUFURScpIHtcclxuICAgICAgICB0aGlzLnZMb2FkZXIgPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgICAgICBkYXNoYm9hcmRfbmFtZTogdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUsXHJcbiAgICAgICAgICBkYXNoYm9hcmRfaWQ6ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5jaGVja0R1cGxpY2F0ZURhc2hib2FyZE5hbWUocGF5bG9hZCkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgICAgICBpZiAoIXJlcykge1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Umlza1dpZGdldHMgPSAodGhpcy5pc01hbmFnZVJpc2sgJiYgdGhpcy5zaG93Umlza0NhdGVnb3J5ICYmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKSkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0NvbXBsaWFuY2VXaWRnZXRzID0gKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGggPiAwIHx8IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPiAwKSA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5vcGVuQ29uZmlndXJlV2lkZ2V0cyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5zaG93KCdBIGRhc2hib2FyZCB3aXRoIHRoaXMgbmFtZSBhbHJlYWR5IGV4aXN0cy4gU3BlY2lmeSBhIGRpZmZlcmVudCBuYW1lIGZvciB0aGUgZGFzaGJvYXJkLicsJ2FsZXJ0Jyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tb2RlID09ICdFRElUJykge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHtcclxuICAgICAgICAgIGRhc2hib2FyZF9uYW1lOiB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZSxcclxuICAgICAgICAgIGRhc2hib2FyZF9pZDogdGhpcy5kYXNoYm9hcmRJZFxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuY2hlY2tEdXBsaWNhdGVEYXNoYm9hcmROYW1lKHBheWxvYWQpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgaWYgKCFyZXMpIHtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd1Jpc2tXaWRnZXRzID0gKHRoaXMuaXNNYW5hZ2VSaXNrICYmIHRoaXMuc2hvd1Jpc2tDYXRlZ29yeSAmJiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoID4gMCB8fCB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID4gMCkpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dDb21wbGlhbmNlV2lkZ2V0cyA9ICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID4gMCB8fCB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID4gMCkgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkNvbmZpZ3VyZVdpZGdldHMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnQSBkYXNoYm9hcmQgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuIFNwZWNpZnkgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIGRhc2hib2FyZC4nLCdhbGVydCcpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICAqIEZldGNoZXMgb3JnYW5pemF0aW9uIHVzZXJzIGNvdW50IGFwaSB0byBnZXQgdG90YWwgbnVtYmVyIG9mIHBhZ2VzXHJcbiAgICAqIEBwYXJhbSBVcmwgY29udGFpbnMgcHJhbXNcclxuICAgICovXHJcbiAgZ2V0T3JnYW5pemF0aW9uVXNlcnNDb3VudChVcmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldE9yZ2FuaXphdGlvblVzZXJzQ291bnQoVXJsKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy50b3RhbExpc3QgPSByZXMudG90YWxfbWVtYmVycztcclxuICAgICAgaWYgKHJlcy50b3RhbF9tZW1iZXJzICYmIHJlcy5saW1pdF9wZXJfcGFnZSA+IDEpIHtcclxuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSByZXMuY3JlYXRlX3BhZ2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogR2V0IHVzZXJzIGxpc3QgYnkgbWFraW5nIGFwaSBjYWxsIGFuZCBwcmUgc2VsZWN0cyBhbGwgYWRtaW5zIGJ5IGFkZGluZyB0byB2aWV3ZXJzXHJcbiAqIEBwYXJhbSB1cmwgY29udGFpbnMgcXVlcnkgcGFyYW1zIGZvciBvcmdhbml6YXRpb24gdXNlcnMgYXBpXHJcbiAqL1xyXG4gIGdldFVzZXJzTGlzdCh1cmw6IGFueSkge1xyXG4gICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLmdldEFsbFVzZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG5cclxuICAgICAgdGhpcy51c2Vyc0xpc3QgPSByZXM7XHJcbiAgICAgIHRoaXMudXNlckxpc3RMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBbdGhpcy5jcmVhdGVkQnldLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZFVzZXJzTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFZpZXdlcnM7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRHcm91cExpc3QoKXtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRBbGxHcm91cHMoKS5zdWJzY3JpYmUoKHJlczphbnkpPT57XHJcbiAgICAgIHRoaXMudG90YWxncm91cHMgPSByZXMudG90YWxfaXRlbXM7XHJcbiAgICAgIHRoaXMuZ3JvdXBMaXN0PXJlcy5kYXRhO1xyXG4gICAgICB0aGlzLnVzZXJMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cCA9IHRoaXMuc2V0TGlzdCh0aGlzLmdyb3VwTGlzdCwgW3RoaXMuY3JlYXRlZEJ5XSwgJ2dyb3VwX2lkJyk7XHJcbiAgICAgICAgdGhpcy5saXN0RGV0YWlscy5zZWxlY3RlZEdyb3VwTGlzdCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0Q29tcGxpYW5jZUNhdGVnb3J5TGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRDb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RGcm9tR2xvYmFsKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCBkYXRhID0gcmVzO1xyXG4gICAgICB0aGlzLmFsbENvbXBsaWFuY2VDYXRlZ29yaWVzID0gT2JqZWN0LmFzc2lnbihyZXMpXHJcbiAgICAgIC8vIGNsb25lRGVlcChyZXMpO1xyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY29tcGxpYW5jZV90eXBlID09IDApIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZS5vdGhlcnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAxKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUucmVndWxhdGlvbnMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNvbXBsaWFuY2VfdHlwZSA9PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllc1RyZWUuc3RhbmRhcmRzLmxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5jb21wbGlhbmNlX3R5cGUgPT0gMykge1xyXG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNUcmVlLmludGVybmFsQ29udHJvbHMubGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuY29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0sIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMuY29tcGxpYW5jZUNhdGVnb3JpZXNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIHNhdmVTZWxlY3RlZENhdGVnb3J5KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiZXZlbnQ9PT4+PlwiLCBldmVudCk7XHJcbiAgfVxyXG5cclxuICBnZXRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhc2hib2FyZFNlcnZpY2UuZ2V0Q2F0ZWdvcnlMaXN0KCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Quc3RyYXRlZ2ljLmxpc3QgPSByZXMuc3RyYXRlZ2ljX2FycjtcclxuICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0Lm9wZXJhdGlvbmFsLmxpc3QgPSByZXMub3BlcmF0aW9uYWxfYXJyO1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3QuY29tcGxpYW5jZS5saXN0ID0gcmVzLmNvbXBsaWFuY2VfYXJyO1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3Qub3RoZXJzLmxpc3QgPSByZXMub3RoZXJzX2FycjtcclxuICAgICAgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5hbGxSaXNrQ2F0ZWdvcmllcyA9IFsuLi5uZXcgU2V0KHRoaXMuYWxsUmlza0NhdGVnb3JpZXMuY29uY2F0KHJlcy5zdHJhdGVnaWNfYXJyLCByZXMub3BlcmF0aW9uYWxfYXJyLCByZXMuY29tcGxpYW5jZV9hcnIsIHJlcy5vdGhlcnNfYXJyKSldXHJcblxyXG4gICAgfSwgZXJyID0+IHtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xyXG4gICAgICB0aGlzLnJpc2tDYXRlZ29yeUxpc3RMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgKiBJdCBpcyB0byBlbnN1cmUgd2hldGhlciBhbGwgcmVxdWlyZWQgbGlzdHMgb24gUG9saWN5IGZyb20gaXMgbG9hZGVkIGZyb20gdGhlIGFwaSBjYWxsIG9yIG5vdFxyXG4gICovXHJcbiAgY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKSB7XHJcbiAgICBpZiAodGhpcy5yY0xpc3RMb2FkZWQgJiYgdGhpcy5jb21wbGlhbmNlQ2F0ZWdvcmllc0xpc3RMb2FkZWQgJiYgdGhpcy5yaXNrQ2F0ZWdvcnlMaXN0TG9hZGVkICYmIHRoaXMudXNlckxpc3RMb2FkZWQpIHtcclxuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RGFzaGJvYXJkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2hlY2tXaGV0aGVyQWxsTGlzdHNMb2FkZWQoKTtcclxuICAgICAgfSwgMzAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFNlbGVjdGVkV2lkZ2V0cyhkYXRhOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XHJcbiAgICAgIGNvbnN0IHdpZGdldHNBcnJheTogYW55ID0gW11cclxuICAgICAgZGF0YS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fVxyXG4gICAgICAgIG9iai5tb2R1bGVfbmFtZSA9IGVsZW1lbnQubW9kdWxlO1xyXG4gICAgICAgIG9iai5faWQgPSAnJztcclxuICAgICAgICBvYmoud2lkZ2V0X25hbWUgPSBlbGVtZW50LnRpdGxlXHJcbiAgICAgICAgb2JqLndpZGdldF9jb2RlID0gZWxlbWVudC5pZDtcclxuICAgICAgICBvYmouc3ViX3dpZGdldHMgPSBbXTtcclxuICAgICAgICBvYmouc3RhdGUgPSAnQUNUSVZFJ1xyXG4gICAgICAgIGlmIChlbGVtZW50LnN1YldpZGdldHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZWxlbWVudC5zdWJXaWRnZXRzLmZvckVhY2goKHN1YldpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdWJXaWRnZXRPYmplY3Q6IGFueSA9IHt9XHJcbiAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5faWQgPSAnJztcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9uYW1lID0gc3ViV2lkZ2V0LnRpdGxlXHJcbiAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC53aWRnZXRfY29kZSA9IHN1YldpZGdldC5pZDtcclxuICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LnN0YXRlID0gKHN1YldpZGdldC52YWx1ZSkgPyAnQUNUSVZFJyA6ICdJTkFDVElWRSdcclxuICAgICAgICAgICAgb2JqLnN1Yl93aWRnZXRzLnB1c2goT2JqZWN0LmFzc2lnbihzdWJXaWRnZXRPYmplY3QpKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdpZGdldHNBcnJheS5wdXNoKG9iailcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uY29uZmlndXJlV2lkZ2V0ID0gd2lkZ2V0c0FycmF5O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICBjb25zdCB3aWRnZXRzQXJyYXk6IGFueSA9IFtdXHJcblxyXG4gICAgICBkYXRhLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghSlNPTi5zdHJpbmdpZnkodGhpcy5kYXNoYm9hcmRGb3JtLmNvbmZpZ3VyZVdpZGdldCkuaW5jbHVkZXMoZWxlbWVudC5pZCkpIHtcclxuICAgICAgICAgIGxldCBvYmo6IGFueSA9IHt9XHJcbiAgICAgICAgICBvYmoubW9kdWxlX25hbWUgPSBlbGVtZW50Lm1vZHVsZTtcclxuICAgICAgICAgIG9iai5faWQgPSAnJztcclxuICAgICAgICAgIG9iai53aWRnZXRfbmFtZSA9IGVsZW1lbnQudGl0bGVcclxuICAgICAgICAgIG9iai53aWRnZXRfY29kZSA9IGVsZW1lbnQuaWQ7XHJcbiAgICAgICAgICBvYmouc3ViX3dpZGdldHMgPSBbXTtcclxuICAgICAgICAgIG9iai5zdGF0ZSA9ICdBQ1RJVkUnXHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5zdWJXaWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZWxlbWVudC5zdWJXaWRnZXRzLmZvckVhY2goKHN1YldpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IHN1YldpZGdldE9iamVjdDogYW55ID0ge31cclxuICAgICAgICAgICAgICBzdWJXaWRnZXRPYmplY3QuX2lkID0gJyc7XHJcbiAgICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9uYW1lID0gc3ViV2lkZ2V0LnRpdGxlXHJcbiAgICAgICAgICAgICAgc3ViV2lkZ2V0T2JqZWN0LndpZGdldF9jb2RlID0gc3ViV2lkZ2V0LmlkO1xyXG4gICAgICAgICAgICAgIHN1YldpZGdldE9iamVjdC5zdGF0ZSA9IChzdWJXaWRnZXQudmFsdWUpID8gJ0FDVElWRScgOiAnSU5BQ1RJVkUnXHJcbiAgICAgICAgICAgICAgb2JqLnN1Yl93aWRnZXRzLnB1c2goc3ViV2lkZ2V0T2JqZWN0KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQucHVzaChvYmopXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLndpZGdldF9jb2RlID09IGVsZW1lbnQuaWQpXHJcbiAgICAgICAgICBpZiAoaW5kZXggIT0gLTEpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHNbaW5kZXhdLnN0YXRlID0gJ0FDVElWRSdcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRXaWRnZXRzW2luZGV4XS5zdWJfd2lkZ2V0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHNbaW5kZXhdLnN1Yl93aWRnZXRzLmZvckVhY2goKHN1YldpZGdldERhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudEluZGV4ID0gZWxlbWVudC5zdWJXaWRnZXRzLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5pZCA9PSBzdWJXaWRnZXREYXRhLndpZGdldF9jb2RlKVxyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRJbmRleCAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICBzdWJXaWRnZXREYXRhLnN0YXRlID0gKGVsZW1lbnQuc3ViV2lkZ2V0c1tlbGVtZW50SW5kZXhdLnZhbHVlKSA/ICdBQ1RJVkUnIDogJ0lOQUNUSVZFJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5jb25maWd1cmVXaWRnZXQuZm9yRWFjaCgoc2F2ZWRXaWRnZXQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5maW5kSW5kZXgoKGRhdGFFbGVtZW50OiBhbnkpID0+IGRhdGFFbGVtZW50LmlkID09IHNhdmVkV2lkZ2V0LndpZGdldF9jb2RlKVxyXG4gICAgICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICAgICAgc2F2ZWRXaWRnZXQuc3RhdGUgPSAnSU5BQ1RJVkUnO1xyXG4gICAgICAgICAgaWYgKHNhdmVkV2lkZ2V0LnN1Yl93aWRnZXRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgc2F2ZWRXaWRnZXQuc3ViX3dpZGdldHMuZm9yRWFjaCgoc2F2ZVN1YldpZGdldDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgc2F2ZVN1YldpZGdldC5zdGF0ZSA9ICdJTkFDVElWRSdcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IGRhdGFcclxuICAgIHRoaXMub3BlbkNvbmZpZ3VyZVdpZGdldHMgPSBmYWxzZTtcclxuICAgIHRoaXMuc3VibWl0RGFzaGJvYXJkKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2xvc2VDb25maWd1cmVXaWRnZXRzKGV2ZW50OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLm9wZW5Db25maWd1cmVXaWRnZXRzID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaWx0ZXIgbGlzdCB1c2VyJ3MgbGlzdCBiYXNlZCBvbiBwYWdpbmF0aW9uIGJ5IG1ha2luZyBhcGkgY2FsbFxyXG4gICAqIEBwYXJhbSBldmVudCBzcGVjaWZpZXMgYSBib29sZWFuIHZhbHVlIHRvIGNhbGwgYXBpXHJcbiAgICovXHJcbiAgcGFnaW5hdGlvbkZpbHRlcihldmVudDogYW55KSB7XHJcbiAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgdGhpcy5nZXRVc2Vyc0xpc3Qoe1xyXG4gICAgICAgIHA6IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY3VycmVudFBhZ2UgPT09IDEgPyAnJyA6IHRoaXMucGFnaW5hdGlvblNlcnZpY2UuY3VycmVudFBhZ2UsXHJcbiAgICAgICAgdHlwZTogJ2FsbF9leGNlcHRfZXhlY3V0aXZlJyxcclxuICAgICAgICBxOiAoIXRoaXMucGFnaW5hdGlvblNlcnZpY2Uuc2VhcmNoVmFsdWUpID8gJycgOiB0aGlzLnBhZ2luYXRpb25TZXJ2aWNlLnNlYXJjaFZhbHVlLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGdldFJDTGlzdCgpIHtcclxuICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdCA9IHJlcztcclxuICAgICAgdGhpcy5yY0xpc3RMb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgIH0sIChlcnI6IGFueSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgIHRoaXMucmNMaXN0TG9hZGVkID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICogIyMjIyBEZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBSZXR1cm5zIHRoZSB1bmlxdWUgYXJyYXkgb2Ygb2JqZWN0IGJhc2VkIG9uIHVuaXF1ZSBrZXlcclxuICogQHBhcmFtIGFycmF5XHJcbiAqIEBwYXJhbSBrZXlcclxuICogQHJldHVybnNcclxuICovXHJcbiAgICAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKFxyXG4gICAgICAgIGFycmF5XHJcbiAgICAgICAgICAucmVkdWNlKFxyXG4gICAgICAgICAgICAoYWNjOiBhbnksIGl0ZW06IGFueSkgPT4gKFxyXG4gICAgICAgICAgICAgIGl0ZW0gJiYgaXRlbVtrZXldICYmIGFjYy5zZXQoaXRlbVtrZXldLCBpdGVtKSxcclxuICAgICAgICAgICAgICBhY2NcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgbmV3IE1hcCgpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAudmFsdWVzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgc2F2ZVNlbGVjdGVkTGlzdCh0eXBlOiBzdHJpbmcsIHNlbGVjdGVkSXRlbXM6IGFueSkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3JjJzpcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMgPSB0aGlzLnNldExpc3QodGhpcy5yZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0LCBzZWxlY3RlZEl0ZW1zLCAnaXRlbV9pZCcpO1xyXG4gICAgICAgIGlmKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdDT01QTElBTkNFJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J1JJU0snKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnd2hvQ2FuVmlldyc6XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycyA9IHRoaXMudW5pcXVlQnlQcm9wKHNlbGVjdGVkSXRlbXM/LnVzZXJzLCAnbWVtYmVyX2lkJylcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkVXNlcnNMaXN0ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkVmlld2VycztcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cCA9IHRoaXMudW5pcXVlQnlQcm9wKHNlbGVjdGVkSXRlbXM/Lmdyb3VwcywgJ2dyb3VwX2lkJylcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLnNlbGVjdGVkR3JvdXBMaXN0PXRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEdyb3VwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyA9IHNlbGVjdGVkSXRlbXM7XHJcbiAgICAgICAgaWYodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J0NPTVBMSUFOQ0UnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nUklTSycpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyaXNrQ2F0ZWdvcnknOlxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzID0gc2VsZWN0ZWRJdGVtcztcclxuICAgICAgICBpZih0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nQ09NUExJQU5DRScpXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdSSVNLJylcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZSh0eXBlOiBhbnksIGV2ZW50OiBhbnksIHJlbW92ZUluZGV4PzogYW55KSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAncmMnOlxyXG4gICAgICAgIGNvbnN0IHJjSW5kZXggPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuZmluZEluZGV4KChyYzogYW55KSA9PiByYy5yY19pZCA9PSBldmVudC5yY19pZCk7XHJcbiAgICAgICAgaWYgKHJjSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJlbnRSYzogYW55ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzW3JjSW5kZXhdO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLnNwbGljZShyY0luZGV4LCAxKTtcclxuXHJcbiAgICAgICAgICBpZiAocGFyZW50UmM/Lml0ZW1fY2hpbGRfaWRzPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHBhcmVudFJjLml0ZW1fY2hpbGRfaWRzLmZvckVhY2goKGNoaWxkRWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVtb3ZlSW5kZXggPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuZmluZEluZGV4KChyZW1vdmVFbGVtZW50OiBhbnkpID0+IHJlbW92ZUVsZW1lbnQucmNfaWQgPT0gY2hpbGRFbGVtZW50KTtcclxuICAgICAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdDT01QTElBTkNFJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J1JJU0snKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3dob0NhblZpZXcnOlxyXG4gICAgICAgIGNvbnN0IHJldmlld2VySW5kZXggPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzLmZpbmRJbmRleCgodmlld2VyOiBhbnkpID0+IHZpZXdlci5tZW1iZXJfaWQgPT0gZXZlbnQubWVtYmVyX2lkKTtcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzLnNwbGljZShyZXZpZXdlckluZGV4LCAxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICd3aG9DYW5WaWV3R3JvdXAnOlxyXG4gICAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCA9PSBldmVudD8uZ3JvdXBfaWQpO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAuc3BsaWNlKGdyb3VwcywgMSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnOlxyXG4gICAgICAgIGNvbnN0IENDY2F0ZWdvcnlJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5maW5kSW5kZXgoKENDY2F0ZWdvcnk6IGFueSkgPT4gQ0NjYXRlZ29yeS5jYXRlZ29yeV9pZCA9PSBldmVudC5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLnNwbGljZShDQ2NhdGVnb3J5SW5kZXgsIDEpO1xyXG4gICAgICAgIGlmKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgIHRoaXMuc2VsZWN0ZWRXaWRnZXRzID0gdGhpcy5zZWxlY3RlZFdpZGdldHMuZmlsdGVyKChlbGVtZW50OmFueSk9PmVsZW1lbnQubW9kdWxlX25hbWUhPSdDT01QTElBTkNFJylcclxuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMubGVuZ3RoPT0wKXtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J1JJU0snKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgJ3Jpc2tDYXRlZ29yeSc6XHJcbiAgICAgICAgY29uc3Qgcmlza0NhdGVnb3J5SW5kZXggPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5maW5kSW5kZXgoKHJpc2tDYXRlZ29yeTogYW55KSA9PiByaXNrQ2F0ZWdvcnkuY2F0ZWdvcnlfaWQgPT0gZXZlbnQuY2F0ZWdvcnlfaWQpO1xyXG4gICAgICAgIGlmIChyaXNrQ2F0ZWdvcnlJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIGNvbnN0IHBhcmVudDogYW55ID0gdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXNbcmlza0NhdGVnb3J5SW5kZXhdO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuc3BsaWNlKHJpc2tDYXRlZ29yeUluZGV4LCAxKTtcclxuICAgICAgICAgIGlmIChwYXJlbnQ/LmNoaWxkX2NhdF9pZHM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcGFyZW50LmNoaWxkX2NhdF9pZHMuZm9yRWFjaCgoY2hpbGRFbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCByZW1vdmVJbmRleCA9IHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLmZpbmRJbmRleCgocmVtb3ZlRWxlbWVudDogYW55KSA9PiByZW1vdmVFbGVtZW50LmNhdGVnb3J5X2lkID09IGNoaWxkRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXMuc3BsaWNlKHJlbW92ZUluZGV4LCAxKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLnNwbGljZShyaXNrQ2F0ZWdvcnlJbmRleCwgMSk7XHJcbiAgICAgICAgaWYodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzLmxlbmd0aD09MCl7XHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSB0aGlzLnNlbGVjdGVkV2lkZ2V0cy5maWx0ZXIoKGVsZW1lbnQ6YW55KT0+ZWxlbWVudC5tb2R1bGVfbmFtZSE9J0NPTVBMSUFOQ0UnKVxyXG4gICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGg9PTApe1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkV2lkZ2V0cyA9IHRoaXMuc2VsZWN0ZWRXaWRnZXRzLmZpbHRlcigoZWxlbWVudDphbnkpPT5lbGVtZW50Lm1vZHVsZV9uYW1lIT0nUklTSycpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgICBpZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudCk7XHJcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgICAgICBkYXRhLnB1c2gobGlzdFtpbmRleF0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBzdWJtaXR0ZWQgPSBmYWxzZVxyXG5cclxuICAvKipcclxuICAqIFJldHVybnMgaWQncyBmcm9tIGEgcGFydGljdWxhciBsaXN0IGVsZW1lbnRzXHJcbiAgKiBAcGFyYW0gbGlzdCBhY3R1YWwgc2VsZWN0ZWQgbGlzdFxyXG4gICogQHBhcmFtIGtleSBjb250YWlucyBrZXkgdG8gZXh0cmFjdCBpZCBmcm9tIHRoZSBsaXN0XHJcbiAgKi9cclxuICByZXR1cm5JZHMobGlzdDogYW55W10sIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbGlzdD8ubWFwKGVsZSA9PiB7IGlmIChlbGVba2V5XSkgeyByZXR1cm4gZWxlW2tleV07IH0gfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIFZhbGlkYXRlcyB0aGUgZGF0YSBzdWJtaXR0ZWQgb24gY3JlYXRlIGRhc2hib2FyZCBmb3JtXHJcbiAgKi9cclxuICB2YWxpZGF0ZURhc2hib2FyZCgpIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgfSwgMTAwKTtcclxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWU7XHJcbiAgICBjb25zdCByZSA9IC8mbmJzcDt8PGJyPi9nO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgPSBldmVudC5yZXBsYWNlKHJlLCAnJykudHJpbSgpO1xyXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLmRhc2hib2FyZEZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0O1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCA9IGRlc2NyaXB0aW9uLnJlcGxhY2UocmUsICcnKS50cmltKCk7XHJcbiAgICBpZiAoIXRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lIHx8IHRoaXMuZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lLnRyaW0oKSA9PSAnJ1xyXG4gICAgICB8fCAodGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUubGVuZ3RoID4gMzApXHJcbiAgICAgIHx8ICh0aGlzLnRleHRDb3VudC50cmFuc2Zvcm0odGhpcy5kYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQpID4gMjUwKVxyXG4gICAgICB8fCAodGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyb21EYXRlICYmICghdGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZSkpXHJcbiAgICAgIHx8ICh0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnMubGVuZ3RoID09IDAgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMubGVuZ3RoID09IDAgJiZcclxuICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAqIE1ha2VzIGFuIGFwaSBjYWxsIHRvIGNyZWF0ZSBhIHBvbGljeVxyXG4gICogQHBhcmFtIGRhc2hib2FyZCBjb250YWlucyBkYXNoYm9hcmRGb3JtIGRhdGFcclxuICAqL1xyXG4gIHN1Ym1pdERhc2hib2FyZCgpIHtcclxuXHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsaWQgPSB0aGlzLnZhbGlkYXRlRGFzaGJvYXJkKCk7XHJcbiAgICBpZiAoIXZhbGlkKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMudkxvYWRlciA9IHRydWU7XHJcbiAgICBjb25zdCBkYXNoYm9hcmQgPSB0aGlzLmRhc2hib2FyZEZvcm07XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIGRhc2hib2FyZF9uYW1lOiBkYXNoYm9hcmQuZGFzaGJvYXJkTmFtZSxcclxuICAgICAgZGVzY3JpcHRpb246IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb250ZW50OiBkYXNoYm9hcmQuZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0LFxyXG4gICAgICAgICAgYXR0YWNobWVudHM6IFtdXHJcbiAgICAgICAgfVxyXG4gICAgICBdLFxyXG4gICAgICB2aXNpYmxlX3RvX3VzZXJzOiB0aGlzLnJldHVybklkcyhkYXNoYm9hcmQuc2VsZWN0ZWRWaWV3ZXJzLCAnbWVtYmVyX2lkJyksXHJcbiAgICAgIHZpc2libGVfdG9fZ3JvdXBzOnRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZEdyb3VwLCdncm91cF9pZCcpLFxyXG4gICAgICByZXNwb25zaWJpbGl0eV9jZW50ZXI6IHRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycywgJ2l0ZW1faWQnKSxcclxuICAgICAgcmVzcG9uc2liaWxpdHlfY2F0ZWdvcnk6IHRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcywgJ2NhdGVnb3J5X2lkJyksXHJcbiAgICAgIHJpc2tfY2F0ZWdvcnk6IHRoaXMucmV0dXJuSWRzKGRhc2hib2FyZC5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzLCAnY2F0ZWdvcnlfaWQnKSxcclxuICAgICAgZGlzcGxheV9jcml0ZXJpYTogKGRhc2hib2FyZC5kaXNwbGF5Q3JpdGVyaWEgPT09ICdhbmQnKSA/ICdCT1RIX1JDX0FORF9DQVRFR09SWScgOiAnUkNfT1JfQ0FURUdPUlknLFxyXG4gICAgICB0aW1lZnJhbWU6IHtcclxuICAgICAgICBzdGFydF9kYXRlOiAoZGFzaGJvYXJkLnNlbGVjdGVkRnJvbURhdGUpID8gdGhpcy5nZXREYXRlRm9ybWF0ZShkYXNoYm9hcmQ/LnNlbGVjdGVkRnJvbURhdGUpIDogJycsXHJcbiAgICAgICAgZW5kX2RhdGU6IChkYXNoYm9hcmQuc2VsZWN0ZWRUb0RhdGUpID8gdGhpcy5nZXREYXRlRm9ybWF0ZShkYXNoYm9hcmQ/LnNlbGVjdGVkVG9EYXRlKSA6ICcnLFxyXG5cclxuICAgICAgfSxcclxuICAgICAgZW1haWxfc3VtbWFyeTogdGhpcy5zZXRGcmVxdWVuY3koJycsICdleHBvcnQnKSwgLy9zZXRGb3JtYXRcclxuICAgICAgd2lkZ2V0X2RldGFpbHM6IGRhc2hib2FyZC5jb25maWd1cmVXaWRnZXRcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tb2RlID09ICdDUkVBVEUnKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5zdWJtaXREYXNoYm9hcmQocGF5bG9hZCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudkxvYWRlciA9IGZhbHNlO1xyXG4gICAgICAgIC8vIHRoaXMuc25hY2tCYXIuc2hvdygnVGhlIGRhc2hib2FyZCBoYXMgYmVlbiBjcmVhdGVkLicsJ2luZm8nKTtcclxuICAgICAgICB0aGlzLmlzU21pbGV5ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNtaWxleU1lc3NhZ2UgPSAnVGhlIGRhc2hib2FyZCBoYXMgYmVlbiBjcmVhdGVkLidcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCh7IG1vZGU6ICdjcmVhdGVkJywgaWQ6IHJlcy5faWQgfSk7XHJcbiAgICAgICAgfSwgMzAwMCk7XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNDA5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnQSBkYXNoYm9hcmQgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuIFNwZWNpZnkgYSBkaWZmZXJlbnQgbmFtZSBmb3IgdGhlIGRhc2hib2FyZC4nLCdhbGVydCcpO1xyXG4gICAgICAgICAgICB0aGlzLnZMb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIuc2hvdygnT09QUyEgU29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHRoZSBwYWdlIGNvdWxkIG5vdCBiZSBsb2FkZWQuIENvdWxkIHlvdSBwbGVhc2UgdHJ5IG9uZSBtb3JlIHRpbWU/JywnYWxlcnQnKTtcclxuICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xyXG4gICAgICBwYXlsb2FkLndpZGdldF91cGRhdGVfZmxhZyA9IHRydWVcclxuICAgICAgdGhpcy5jcmVhdGVEYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZURhc2hib2FyZCh0aGlzLmRhc2hib2FyZElkLCBwYXlsb2FkKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAvLyB0aGlzLnNuYWNrQmFyLnNob3coJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gdXBkYXRlZCcsJ2luZm8nKTtcclxuICAgICAgICAgIHRoaXMuaXNTbWlsZXkgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5zbWlsZXlNZXNzYWdlID0gJ1RoZSBkYXNoYm9hcmQgaGFzIGJlZW4gdXBkYXRlZCc7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pc1NtaWxleSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlLmVtaXQoeyBtb2RlOiAndXBkYXRlZCcgfSk7XHJcbiAgICAgICAgICB9LCAzMDAwKTtcclxuXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyLnNob3coJ09PUFMhIFNvbWV0aGluZyB3ZW50IHdyb25nIGFuZCB0aGUgcGFnZSBjb3VsZCBub3QgYmUgbG9hZGVkLiBDb3VsZCB5b3UgcGxlYXNlIHRyeSBvbmUgbW9yZSB0aW1lPycsJ2FsZXJ0Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZWRpdERhc2hib2FyZCgpIHtcclxuICAgIGlmICh0aGlzLmRhc2hib2FyZElkKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlRGFzaGJvYXJkU2VydmljZS5mZXRjaERhc2hib2FyZCh0aGlzLmRhc2hib2FyZElkKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHJlcztcclxuICAgICAgICB0aGlzLmxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdCA9IFtyZXMuY3JlYXRlZF9ieV1cclxuICAgICAgICBkYXRhLnZpc2libGVfdG9fZ3JvdXBzID0gKGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzICYmIGRhdGEudmlzaWJsZV90b19ncm91cHMubGVuZ3RoKSA/IGRhdGEudmlzaWJsZV90b19ncm91cHMgOiBbXTtcclxuICAgICAgICB0aGlzLnBvcHVsYXRlRGFzaGJvYXJkRm9ybShkYXRhKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBvcHVsYXRlRGFzaGJvYXJkRm9ybShkYXRhOiBhbnkpIHtcclxuICAgIHRyeXtcclxuICAgICAgY29uc29sZS5sb2coXCIgZGF0YXR0dHR0YSA9PT0+IFwiLGRhdGEsdGhpcy5ncm91cExpc3QpO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgPSBkYXRhPy5kYXNoYm9hcmRfbmFtZSxcclxuICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCA9IGRhdGE/LmRlc2NyaXB0aW9uWzBdPy5jb250ZW50ID8/IFwiXCIgLFxyXG4gICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzID0gdGhpcy5zZXRMaXN0KHRoaXMudXNlcnNMaXN0LCBkYXRhPy52aXNpYmxlX3RvX3VzZXJzLCAnbWVtYmVyX2lkJyk7XHJcbiAgICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRVc2Vyc0xpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRWaWV3ZXJzO1xyXG4gICAgICBkYXRhLnZpc2libGVfdG9fZ3JvdXBzID0gKGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzICYmIGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzLmxlbmd0aCkgPyBkYXRhPy52aXNpYmxlX3RvX2dyb3VwcyA6IFtdO1xyXG4gICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkR3JvdXAgPSB0aGlzLnNldExpc3QodGhpcy5ncm91cExpc3QsIGRhdGE/LnZpc2libGVfdG9fZ3JvdXBzID8/IFtdICwnZ3JvdXBfaWQnKTtcclxuICAgIHRoaXMubGlzdERldGFpbHMuc2VsZWN0ZWRHcm91cExpc3QgPSB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRHcm91cDtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHRoaXMuc2V0TGlzdCh0aGlzLnJlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3QsIGRhdGE/LnJlc3BvbnNpYmlsaXR5X2NlbnRlciwgJ2l0ZW1faWQnKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbENvbXBsaWFuY2VDYXRlZ29yaWVzLCBkYXRhPy5yZXNwb25zaWJpbGl0eV9jYXRlZ29yeSwgJ2NhdGVnb3J5X2lkJyk7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcyA9IHRoaXMuc2V0TGlzdCh0aGlzLmFsbFJpc2tDYXRlZ29yaWVzLCBkYXRhPy5yaXNrX2NhdGVnb3J5LCAnY2F0ZWdvcnlfaWQnKTtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5kaXNwbGF5Q3JpdGVyaWEgPSAoZGF0YT8uZGlzcGxheV9jcml0ZXJpYSA9PT0gXCJCT1RIX1JDX0FORF9DQVRFR09SWVwiKSA/ICdhbmQnIDogJ29yJztcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlID0gKGRhdGE/LnRpbWVmcmFtZT8uc3RhcnRfZGF0ZSkgPyAgbmV3IERhdGUoZGF0YT8udGltZWZyYW1lPy5zdGFydF9kYXRlKSA6IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZSA9IChkYXRhPy50aW1lZnJhbWU/LmVuZF9kYXRlKSA/IG5ldyBEYXRlKGRhdGE/LnRpbWVmcmFtZT8uZW5kX2RhdGUpIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy52TG9hZGVyID0gZmFsc2U7XHJcbiAgICB0aGlzLmRhc2hib2FyZEZvcm0uY29uZmlndXJlV2lkZ2V0ID0gZGF0YS53aWRnZXRfZGV0YWlsc1xyXG4gICAgdGhpcy5zZWxlY3RlZFdpZGdldHMgPSBkYXRhLndpZGdldF9kZXRhaWxzLmxlbmd0aCA+IDAgPyBbLi4ubmV3IFNldChkYXRhLndpZGdldF9kZXRhaWxzKV0gOiBbXTtcclxuICAgIHRoaXMuZGlzcGxheWVkV2lkZ2V0cyA9IGRhdGEuYWxsX3dpZGdldHMubGVuZ3RoID4gMCA/IFsuLi5uZXcgU2V0KGRhdGEuYWxsX3dpZGdldHMpXSA6IFtdO1xyXG4gICAgdGhpcy5zZXRGcmVxdWVuY3koZGF0YT8uZW1haWxfc3VtbWFyeSwgJ2ltcG9ydCcpO1xyXG4gICAgbGV0IG1pblRvRGF0ZSA9IHRoaXMuc2V0VG9EYXRlKGRhdGE/LnRpbWVmcmFtZT8uc3RhcnRfZGF0ZSk7XHJcbiAgICB0aGlzLnRvRGF0ZVBpY2tlckNvbmZpZyA9IHsgbWluOiBtaW5Ub0RhdGUgfTtcclxuICAgIHRoaXMuaGlkZVRvRGF0ZSA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5oaWRlVG9EYXRlID0gZmFsc2U7XHJcbiAgICB9LCAyMCk7XHJcbiAgfVxyXG4gIGNhdGNoKGVycm9yKXtcclxuICAgIGNvbnNvbGUubG9nKFwicG9wdWxhdGUgZGFzaGJvYXJkIGVycm9yID0+XCIsIGVycm9yKVxyXG4gIH1cclxuICB9XHJcblxyXG4gIHNldEZyZXF1ZW5jeShldmVudDogYW55LCBtb2RlOiBhbnkpIHtcclxuICAgIGlmIChtb2RlID09PSAnZXhwb3J0Jykge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jeVR5cGUpIHtcclxuICAgICAgICBjYXNlICd3ZWVrbHknOlxyXG4gICAgICAgICAgY29uc3Qgd2Vla2x5VmFsdWVEYXRhID0gdGhpcy5kYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEZyZXF1ZW5jaWVzPy5tYXAoKGVsZTogYW55KSA9PiBOdW1iZXIoZWxlKSArIDEpO1xyXG4gICAgICAgICAgY29uc3Qgd2Vla2x5VmFsdWUgPSB3ZWVrbHlWYWx1ZURhdGE/LmpvaW4oKTtcclxuICAgICAgICAgIHJldHVybiAnMn4nICsgd2Vla2x5VmFsdWUgKyAnfjB+MCdcclxuICAgICAgICBjYXNlICdtb250aGx5JzpcclxuICAgICAgICAgIGNvbnN0IG1vbnRobHlWYWx1ZURhdGEgPSB0aGlzLmRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJlcXVlbmNpZXM/Lm1hcCgoZWxlOiBhbnkpID0+IE51bWJlcihlbGUpICsgMSk7XHJcbiAgICAgICAgICBjb25zdCBtb250aGx5VmFsdWUgPSBtb250aGx5VmFsdWVEYXRhPy5qb2luKCk7XHJcbiAgICAgICAgICByZXR1cm4gJzN+JyArIHRoaXMuZGFzaGJvYXJkRm9ybT8uZnJlcXVlbmN5RGF0ZSArICd+JyArIG1vbnRobHlWYWx1ZSArICd+MCdcclxuICAgICAgICBjYXNlICdxdWFydGVybHknOlxyXG4gICAgICAgICAgY29uc3QgcXVhcnRlcmx5VmFsdWVEYXRhID0gTnVtYmVyKHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzKSArIDE7XHJcbiAgICAgICAgICByZXR1cm4gJzd+JyArIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlICsgJ34nICsgcXVhcnRlcmx5VmFsdWVEYXRhICsgJ34wJ1xyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKG1vZGUgPT09ICdpbXBvcnQnKSB7XHJcbiAgICAgIGNvbnN0IHZhbCA9IGV2ZW50LnNwbGl0KCd+JylcclxuICAgICAgc3dpdGNoICh2YWxbMF0pIHtcclxuICAgICAgICBjYXNlICcyJzoge1xyXG4gICAgICAgICAgbGV0IHN0cmluZ1ZhbCA9IFwiRXZlcnkgXCI7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlID0gJ3dlZWtseSdcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzID0gdmFsWzFdPy5zcGxpdCgnLCcpPy5tYXAoKGVsZW1lbnQ6IGFueSkgPT4gTnVtYmVyKGVsZW1lbnQpIC0gMSk7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY2llcz8uZm9yRWFjaCgoZGF5SW5kZXg6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBzdHJpbmdWYWwgKz0gaW5kZXggPT09IDAgPyB0aGlzLmRheU5hbWVzW2RheUluZGV4XSA6ICcsICcgKyB0aGlzLmRheU5hbWVzW2RheUluZGV4XTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZSA9IHN0cmluZ1ZhbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICczJzoge1xyXG4gICAgICAgICAgbGV0IHN0cmluZ1ZhbCA9IFwiZXZlcnkgXCI7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlID0gJ21vbnRobHknXHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9IHZhbFsxXVxyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMgPSB2YWxbMl0/LnNwbGl0KCcsJyk/Lm1hcCgoZWxlbWVudDogYW55KSA9PiBOdW1iZXIoZWxlbWVudCkgLSAxKTtcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzLmZvckVhY2goKG1vbnRoSW5kZXg6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBzdHJpbmdWYWwgKz0gaW5kZXggPT09IDAgPyB0aGlzLm1vbnRoTmFtZXNbbW9udGhJbmRleF0gOiAnLCAnICsgdGhpcy5tb250aE5hbWVzW21vbnRoSW5kZXhdO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIGxldCBtb250aERhdGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09IFwiMVwiKSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMXN0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gXCIyXCIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSBcIjNcIikge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgKyAndGgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZSA9IG1vbnRoRGF0ZU5hbWUgKyAnIG9mICcgKyBzdHJpbmdWYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlICc3Jzoge1xyXG4gICAgICAgICAgbGV0IHN0cmluZ1ZhbCA9IFwiZXZlcnkgXCI7XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlID0gJ3F1YXJ0ZXJseSdcclxuICAgICAgICAgIHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID0gdmFsWzFdO1xyXG4gICAgICAgICAgdGhpcy5kYXNoYm9hcmRGb3JtLnNlbGVjdGVkRnJlcXVlbmNpZXMgPSBOdW1iZXIodmFsWzJdLnNwbGl0KCcsJylbMF0pIC0gMTtcclxuICAgICAgICAgIHN0cmluZ1ZhbCArPSB0aGlzLnF1YXJ0ZXJzW3RoaXMuZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzXTtcclxuICAgICAgICAgIGxldCBtb250aERhdGVOYW1lO1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlID09IFwiMVwiKSB7XHJcbiAgICAgICAgICAgIG1vbnRoRGF0ZU5hbWUgPSAnMXN0J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgPT0gXCIyXCIpIHtcclxuICAgICAgICAgICAgbW9udGhEYXRlTmFtZSA9ICcybmQnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5RGF0ZSA9PSBcIjNcIikge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gJzNyZCdcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBtb250aERhdGVOYW1lID0gdGhpcy5kYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeURhdGUgKyAndGgnXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZSA9IG1vbnRoRGF0ZU5hbWUgKyAnIG9mICcgKyBzdHJpbmdWYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWtcclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcclxuICAgIC8veW91ciBjb2RlIHRvIHVwZGF0ZSB0aGUgbW9kZWxcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHNldFBlcm1pc3Npb24ocm9sZUFjdGlvbnM6IGFueSl7XHJcbiAgICBsZXQgaWZFeGlzdFJpc2sgPSByb2xlQWN0aW9ucz8uZmluZCgoZWw6YW55KT0+IGVsLm1vZHVsZU5hbWUgPT0gXCJyaXNrXCIpO1xyXG4gICAgaWZFeGlzdFJpc2s/LnN1Yk1vZHVsZT8uZm9yRWFjaCggKG1vZHVsZTogYW55KSA9PiB7XHJcbiAgICAgIG1vZHVsZT8ucGVybWlzc2lvbnM/LmZvckVhY2goIChwZXJtaXNzaW9uOiBhbnkpID0+IHtcclxuICAgICAgICBzd2l0Y2gocGVybWlzc2lvbj8uY29kZSkge1xyXG4gICAgICAgICAgY2FzZSAnUlJNUic6IHtcclxuICAgICAgICAgICAgaWYocGVybWlzc2lvbj8uZGVmYXVsdFBlcm1pc3Npb249PTEgfHwgcGVybWlzc2lvbj8uZW5hYmxlPT0xKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5pc01hbmFnZVJpc2sgPSB0cnVlO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iLCI8YXBwLXNuYWNrLWJhcj48L2FwcC1zbmFjay1iYXI+XHJcbjxkaXYgY2xhc3M9XCJjcmVhdGUtZGFzaGJvYXJkXCIgKm5nSWY9XCIhb3BlbkNvbmZpZ3VyZVdpZGdldHNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjcmVhdGUtZGFzaGJvYXJkLWNvbnRhaW5lciB2eC1kLWZsZXggdngtanVzdGlmeS1lbmRcIiBbY2xhc3MuYW5pbWF0ZS1zbGlkZUluUmlnaHRdPVwiYW5pbWF0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vcmUtb3B0aW9uXCIgKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciE9PSduYW1lJ1wiPlxyXG4gICAgICAgICAgICA8YXBwLXVzZXItbGlzdCAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgICAgIChzYXZlU2VsZWN0ZWRVc2Vycyk9XCJzYXZlU2VsZWN0ZWRMaXN0KCd3aG9DYW5WaWV3JywkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChjbG9zZVVzZXJMaXN0KT1cImFjdGl2YXRlU2VsZWN0b3IoJycsIGZhbHNlKVwiIFt0b3RhbFBhZ2VzXT1cInRvdGFsUGFnZXNcIiBbdG90YWxMaXN0XT1cInRvdGFsTGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbbGlzdERldGFpbHNdPVwibGlzdERldGFpbHNcIiBbdG90YWxncm91cHNjb3VudF09XCJ0b3RhbGdyb3Vwc1wiIFtmZWF0dXJlXT1cImZlYXR1cmVcIiA+PC9hcHAtdXNlci1saXN0PlxyXG4gICAgICAgICAgICA8YXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlciAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J3JjTGlzdCdcIlxyXG4gICAgICAgICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Q2VudGVyc0xpc3RdPVwicmVzcG9uc2liaWxpdHlDZW50ZXJzTGlzdFwiIFtyYWRpb1NlbGVjdGlvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnNdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVyc1wiIFtyY0lkS2V5XT1cIidpdGVtX2lkJ1wiXHJcbiAgICAgICAgICAgICAgICAoc2F2ZVNlbGVjdGVkTGlzdCk9XCJzYXZlU2VsZWN0ZWRMaXN0KCdyYycsJGV2ZW50KVwiIChjbG9zZVJjTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIj5cclxuICAgICAgICAgICAgPC9hcHAtcmVzcG9uc2liaWxpdHktY2VudGVyPlxyXG4gICAgICAgICAgICA8YXBwLWNhdGVnb3JpZXMgKm5nSWY9XCJhY3RpdmVTZWxlY3Rvcj09PSdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnXCJcclxuICAgICAgICAgICAgICAgIFtjYXRlZ29yeUxpc3RdPVwicmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzVHJlZVwiIFthbGxDYXRlZ29yaWVzXT1cImFsbENvbXBsaWFuY2VDYXRlZ29yaWVzXCJcclxuICAgICAgICAgICAgICAgIFtjYXRlZ29yeUlkS2V5XT1cIidjYXRlZ29yeV9pZCdcIiBbc2VsZWN0ZWRDYXRlZ29yaWVzXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXNcIlxyXG4gICAgICAgICAgICAgICAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIj48L2FwcC1jYXRlZ29yaWVzPlxyXG4gICAgICAgICAgICA8YXBwLXJpc2stY2F0ZWdvcmllcyAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J3Jpc2tDYXRlZ29yaWVzJ1wiIFtjYXRlZ29yeUxpc3RdPVwicmlza0NhdGVnb3J5TGlzdFwiXHJcbiAgICAgICAgICAgICAgICBbYWxsQ2F0ZWdvcmllc109XCJhbGxSaXNrQ2F0ZWdvcmllc1wiIFtjYXRlZ29yeUlkS2V5XT1cIidjYXRlZ29yeV9pZCdcIlxyXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkQ2F0ZWdvcmllc109XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkUmlza0NhdGVnb3JpZXNcIlxyXG4gICAgICAgICAgICAgICAgKHNhdmVTZWxlY3RlZENhdGVnb3J5KT1cInNhdmVTZWxlY3RlZExpc3QoJ3Jpc2tDYXRlZ29yeScsJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoY2xvc2VDYXRlZ29yaWVzTGlzdCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIj48L2FwcC1yaXNrLWNhdGVnb3JpZXM+XHJcblxyXG4gICAgICAgICAgICA8YXBwLWZyZXF1ZW5jeSAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yPT09J2ZyZXF1ZW5jeSdcIiAoY2xvc2VGcmVxdWVuY3lQb3B1cCk9XCJhY3RpdmF0ZVNlbGVjdG9yKCcnLCBmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgKHNhdmVGcmVxdWVuY3kpPVwic2F2ZUZyZXF1ZW5jeSgkZXZlbnQpXCIgW3NhdmVkRnJlcXVlbmN5VGFiXT1cImRhc2hib2FyZEZvcm0uc2VsZWN0ZWRGcmVxdWVuY3lUeXBlXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZERhdGVdPVwiZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lEYXRlXCIgW3NhdmVkRnJlcXVlbmNpZXNdPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyZXF1ZW5jaWVzXCI+XHJcbiAgICAgICAgICAgIDwvYXBwLWZyZXF1ZW5jeT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZGlhbG9nLWNvbnRhaW5lciBzaWRlLWRpYWxvZ1wiPlxyXG5cclxuICAgICAgICAgICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwidkxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZGlhbG9nLWJvZHktY29udGFpbmVyXCIgKHNjcm9sbCk9XCJhbmltYXRlSW1hZ2UoKVwiIFtjbGFzcy5oaWRkZW4tc2Nyb2xsXT1cInBvcG92ZXJTZXJ2aWNlLnN0b3BTY3JvbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3doYXQuc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUgfHwgYWN0aXZlU2VsZWN0b3IgPT09ICduYW1lJ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC0xNiB2eC1kLWJsb2NrIHZ4LXR0LXVwcGVyY2FzZSB2eC1tdC0xIHZ4LW1iLTEgdngtdy0xMDAgdngtdGV4dC1sZWZ0XCI+RGFzaGJvYXJkIE5hbWU8c3BhbiBjbGFzcz1cInJlcXVpcmUgdngtdHh0LXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWlucHV0LWdyb3VwIHZ4LW10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwidngtZnMtMTMgdngtZnctNDAwIHZ4LWxoLTIwIHZ4LXB0LTEgdngtcGItMSB2eC1wbC0zIHZ4LXByLTMgdngtYmctd2hpdGUgdngtdy0xMDAgdngtcGFyYWdyYXBoLXR4dFwiIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJBZGQgZGFzaGJvYXJkIG5hbWUgKE1heCBsaW1pdDogMzAgY2hhcmFjdGVycykuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5kYXNoYm9hcmROYW1lXCIgKGtleWRvd24pPVwiYWN0aXZlU2VsZWN0b3IgPSAnbmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3VzaW4pPVwiYWN0aXZhdGVTZWxlY3RvcignbmFtZScsdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cImFjdGl2YXRlU2VsZWN0b3IoJ25hbWUnLGZhbHNlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LmRhc2hib2FyZE5hbWU/Lmxlbmd0aCA+IDBcIj57ezMwIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0uZGFzaGJvYXJkTmFtZS5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZ4LXR4dC1lcnJvclwiIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmICggZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkTmFtZT8ubGVuZ3RoPjMwIHx8ICFkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmROYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyhkYXNoYm9hcmRGb3JtLmRhc2hib2FyZE5hbWUubGVuZ3RoPjMwKT8nWW91IGhhdmUgZXhjZWVkZWQgdGhlIG1heGltdW0gY2hhcmFjdGVyIGxpbWl0IG9mIDMwIGNoYXJhY3RlcnMuJzonUGxlYXNlIGVudGVyIGEgbmFtZSBmb3IgdGhpcyBEYXNoYm9hcmQuJ319IDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5wdXQtZ3JvdXAgdngtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWFyeC1lZGl0b3IgW2VkaXRvckNvbmZpZ109XCJkYXNoYm9hcmREZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZEZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0XCI+PC9tYXJ4LWVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb3VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uZGFzaGJvYXJkRGVzY3JpcHRpb25UZXh0Py5sZW5ndGggPiAwXCI+e3syNTAgLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhc2hib2FyZEZvcm0/LmRhc2hib2FyZERlc2NyaXB0aW9uVGV4dCB8IHRleHRDb3VudCl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZ4LXR4dC1lcnJvclwiIFthcHBTY3JvbGxJblZpZXddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3VibWl0dGVkICYmIChkYXNoYm9hcmRGb3JtPy5kYXNoYm9hcmREZXNjcmlwdGlvblRleHQgfCB0ZXh0Q291bnQpID4gMjUwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBoYXZlIGV4Y2VlZGVkIHRoZSBtYXhpbXVtIGNoYXJhY3RlciBsaW1pdCBvZiAyNTAgY2hhcmFjdGVycy5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3dob0NhblZpZXcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3dob0NhblZpZXcnICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi4vYXNzZXRzL2ltYWdlcy93aG8uc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAnd2hvQ2FuVmlldydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNoZWNrSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aD4wICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnd2hvQ2FuVmlldydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+V2hvIGNhbiB2aWV3IHRoaXMgZGFzaGJvYXJkPzxzcGFuIGNsYXNzPVwicmVxdWlyZSB2eC10eHQtcmVkIHZ4LWZzLTE2IHZ4LWZ3LTQwMFwiPio8L3NwYW4+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Ym94IHZ4LWZzLTEzIHZ4LWZ3LTQwMCB2eC1wYXJhZ3JhcGgtdHh0XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aD09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ2eC1mcy0xMyB2eC1mdy00MDAgdngtbGgtMjAgdngtcHQtMSB2eC1wYi0xIHZ4LXBsLTMgdngtcHItMyB2eC1iZy13aGl0ZSB2eC13LTEwMCB2eC1wYXJhZ3JhcGgtdHh0XCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIldobyBjYW4gdmlldyB0aGlzIGRhc2hib2FyZD9cIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3dob0NhblZpZXcnLCB0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQgdngtcC0yIHZ4LWZzLTEzIHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1kLWZsZXggdngtdGV4dC1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBhcmFncmFwaC10eHQgdngtbGgtNVwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzPy5sZW5ndGg+MFwiPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cIm9ubHl1c2Vyc2xpc3RcIiAqbmdJZj1cIiFncm91cHNFbmFibGVkXCIgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcCB2eC10eHQtYmx1ZSB2eC1mcy0xMiB2eC1mdy00MDAgdngtdy0xMDAgdngtcGwtMiB2eC1wci0yIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB1c2VyIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8uc2xpY2UoMCwyKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFsaXN0RGV0YWlscy5ub25SZW1vdmFibGVVc2Vyc0xpc3QuaW5jbHVkZXModXNlci5tZW1iZXJfaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgdngtZnMtMTAgdngtZnctNDAwIHZ4LW1yLTJcIiAoY2xpY2spPVwicmVtb3ZlKCd3aG9DYW5WaWV3Jyx1c2VyKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlIFwiPnt7dXNlci5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudCB2eC10eHQtd2hpdGUgdngtZnctNTAwIHZ4LW1sLTEgdngtbGgtNSB2eC1iZy1ibHVlXCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFZpZXdlcnM/Lmxlbmd0aCA+IDIgJiYgIWdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJ1c2VyTGlzdC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPitcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWdyb3VwLWNoaXAtY29udGFpbmVyXCIgKm5nSWY9XCJncm91cHNFbmFibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCIgPlVTRVIoUyk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwidXNlckNvdW50LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cImxlZnRcIj57e2Rhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRHcm91cD8ubGVuZ3RoICYmIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vycz8ubGVuZ3RoXCI+Jjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXA/Lmxlbmd0aFwiIGlkPVwidXNlcnNhbmRncm91cHNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+VVNFUiBHUk9VUChTKTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZ3JvdXBDb3VudC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZEdyb3VwPy5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICN1c2VyQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVmlld2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgICpuZ0lmPVwiIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyhkYXRhLm1lbWJlcl9pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgnd2hvQ2FuVmlldycsZGF0YSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEubWVtYmVyX25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2dyb3VwQ291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoJ3dob0NhblZpZXdHcm91cCcsZGF0YSlcIiA+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGEuZ3JvdXBfbmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAnd2hvQ2FuVmlldydcIiBjbGFzcz1cImVkaXQgdngtdHQtdXBwZXJjYXNlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wdC0wIHZ4LXBiLTAgdngtcGwtMSB2eC1wci0xIHZ4LWQtYmxvY2sgdngtdHh0LWJsdWUgdngtZC1ibG9ja1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3dob0NhblZpZXcnLHRydWUpXCI+PGkgY2xhc3M9XCJpY29ucyB2eC1mcy04IHZ4LWZ3LTQwMCB2eC1tci0xXCI+JiN4ZTliYTs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3VzZXJMaXN0IFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHVzZXIgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRWaWV3ZXJzIHwgc2xpY2U6IDI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxpc3REZXRhaWxzLm5vblJlbW92YWJsZVVzZXJzTGlzdC5pbmNsdWRlcyh1c2VyLm1lbWJlcl9pZCkgJiYgIWdyb3Vwc0VuYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCd3aG9DYW5WaWV3Jyx1c2VyKVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHVzZXI/Lm1lbWJlcl9uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1wb3BvdmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdyY0xpc3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ3JjTGlzdCcgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmNMaXN0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3Jlc3BvbnNpYmlsaXR5LWNlbnRlci5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoPjAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyY0xpc3QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+UkVTUE9OU0lCSUxJVFkgQ0VOVEVSKFMpPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0Ym94XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXQgdngtYmctd2hpdGUgdngtZnMtMTMgdngtZnctNDAwIHZ4LXBhcmFncmFwaC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIHRoYXQgeW91IHdvdWxkIGxpa2UgZGlzcGxheWVkIGluIHRoZSBEYXNoYm9hcmQsIGlmIGFueS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjTGlzdCcsIHRydWUpXCIgW2NsYXNzLmVycm9yXT1cInN1Ym1pdHRlZCAmJiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoPT0wICYmIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoPT0wICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGg9PTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkIHZ4LXAtMiB2eC1mcy0xMyB2eC1mdy00MDAgdngtdy0xMDAgdngtZC1mbGV4IHZ4LXRleHQtY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTVcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAgdngtdHh0LWJsdWUgdngtZnMtMTIgdngtZnctNDAwIHZ4LXctMTAwIHZ4LXBsLTIgdngtcHItMiB2eC1iZy13aGl0ZSB2eC1kLWZsZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcmMgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/LnNsaWNlKDAsMilcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyB2eC1mcy0xMCB2eC1mdy00MDAgdngtbXItMlwiIChjbGljayk9XCJyZW1vdmUoJ3JjJyxyYylcIj4mI3hlOTBkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPnt7cmMuaXRlbV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50IHZ4LXR4dC13aGl0ZSB2eC1mdy01MDAgdngtbWwtMSB2eC1saC01IHZ4LWJnLWJsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA+IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyY0xpc3QucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3JjTGlzdCdcIiBjbGFzcz1cImVkaXQgdngtdHQtdXBwZXJjYXNlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wdC0wIHZ4LXBiLTAgdngtcGwtMSB2eC1wci0xIHZ4LWQtYmxvY2sgdngtdHh0LWJsdWUgdngtZC1ibG9ja1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3JjTGlzdCcsdHJ1ZSlcIj48aSBjbGFzcz1cImljb25zIHZ4LWZzLTggdngtZnctNDAwIHZ4LW1yLTFcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyY0xpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByYyBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2VudGVycyB8IHNsaWNlOiAyOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKCdyYycscmMpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcmM/Lml0ZW1fbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVNlbGVjdG9yID09PSAncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIgYWN0aXZlU2VsZWN0b3IgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aD09MCB8fCBhY3RpdmVTZWxlY3RvciA9PT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL2ltYWdlcy9jYXRlZ29yeS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoPjAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+UFJPR1JBTTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGJveFwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aD09MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWlucHV0IHZ4LWJnLXdoaXRlIHZ4LWZzLTEzIHZ4LWZ3LTQwMCB2eC1wYXJhZ3JhcGgtdHh0bnB1dCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIFByb2dyYW0ocykgdGhhdCB5b3Ugd291bGQgbGlrZSBkaXNwbGF5ZWQgaW4gdGhlIERhc2hib2FyZCwgaWYgYW55LlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcigncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJywgdHJ1ZSlcIiBbY2xhc3MuZXJyb3JdPVwic3VibWl0dGVkICYmIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg9PTAgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg9PTAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aD09MFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZCB2eC1wLTIgdngtZnMtMTMgdngtZnctNDAwIHZ4LXctMTAwIHZ4LWQtZmxleCB2eC10ZXh0LWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGFyYWdyYXBoLXR4dCB2eC1saC01XCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwIHZ4LXR4dC1ibHVlIHZ4LWZzLTEyIHZ4LWZ3LTQwMCB2eC13LTEwMCB2eC1wbC0yIHZ4LXByLTIgdngtYmctd2hpdGUgdngtZC1mbGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8uc2xpY2UoMCwyKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEwIHZ4LWZ3LTQwMCB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsckNhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tyQ2F0ZWdvcnkuaXRlbV9uYW1lfX08L3NwYW4+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50IHZ4LXR4dC13aGl0ZSB2eC1mdy01MDAgdngtbWwtMSB2eC1saC01IHZ4LWJnLWJsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXM/Lmxlbmd0aCA+IDJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBhcHBQb3BvdmVyIChjbGljayk9XCJyQ2F0ZWdvcnlMaXN0LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcz8uc2xpY2UoMikubGVuZ3RofX08L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJhY3RpdmVTZWxlY3RvciAhPT0gJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcydcIiBjbGFzcz1cImVkaXQgdngtdHQtdXBwZXJjYXNlIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wdC0wIHZ4LXBiLTAgdngtcGwtMSB2eC1wci0xIHZ4LWQtYmxvY2sgdngtdHh0LWJsdWUgdngtZC1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jlc3BvbnNpYmlsaXR5Q2F0ZWdvcmllcycsdHJ1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtOCB2eC1mdy00MDAgdngtbXItMVwiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLXBvcG92ZXIgI3JDYXRlZ29yeUxpc3QgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByQ2F0ZWdvcnkgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNhdGVnb3JpZXMgfCBzbGljZTogMjsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZSgncmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzJyxyQ2F0ZWdvcnkpXCI+JiN4ZTkwZDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgckNhdGVnb3J5Py5pdGVtX25hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLXBvcG92ZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVTZWxlY3RvciA9PT0gJ3Jpc2tDYXRlZ29yaWVzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1Jpc2tDYXRlZ29yeSAmJiBpc01hbmFnZVJpc2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIGFjdGl2ZVNlbGVjdG9yICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhdGVnb3JpZXMnICYmIGFjdGl2ZVNlbGVjdG9yICE9PSAnbmFtZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltYWdlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPT0wIHx8IGFjdGl2ZVNlbGVjdG9yID09PSAncmlza0NhdGVnb3JpZXMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy9pbWFnZXMvY2F0ZWdvcnkuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPjAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICdyaXNrQ2F0ZWdvcmllcydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hlY2tJY29uXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTIgNTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiY2hlY2tJY29uX19jaXJjbGVcIiBjeD1cIjI2XCIgY3k9XCIyNlwiIHI9XCIyNVwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBjbGFzcz1cImNoZWNrSWNvbl9fY2hlY2tcIiBmaWxsPVwibm9uZVwiIGQ9XCJNMTQuMSAyNy4ybDcuMSA3LjIgMTYuNy0xNi44XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm1cIiAqbmdJZj1cImlzTWFuYWdlUmlza1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXAgdngtZC1ibG9jayB2eC1tYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNCB2eC1kLWJsb2NrIHZ4LW1iLTIgdngtdHQtdXBwZXJjYXNlIHZ4LXctMTAwIHZ4LXRleHQtbGVmdCB2eC1sYWJlbC10eHQgdngtbXQtMVwiPlJJU0sgQ0FURUdPUklFUzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGJveFwiICpuZ0lmPVwiZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8ubGVuZ3RoPT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taW5wdXQgdngtYmctd2hpdGUgdngtZnMtMTMgdngtZnctNDAwIHZ4LXBhcmFncmFwaC10eHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1wbGFjZWhvbGRlcj1cIlNlbGVjdCB0aGUgUmlzayBDYXRlZ29yaWVzIHRoYXQgeW91IHdvdWxkIGxpa2UgZGlzcGxheWVkIGluIHRoZSBEYXNoYm9hcmQsIGlmIGFueS5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ3Jpc2tDYXRlZ29yaWVzJywgdHJ1ZSlcIiBbY2xhc3MuZXJyb3JdPVwic3VibWl0dGVkICYmIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGg9PTAgJiYgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg9PTAgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aD09MFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZCB2eC1wLTIgdngtZnMtMTMgdngtZnctNDAwIHZ4LXctMTAwIHZ4LWQtZmxleCB2eC10ZXh0LWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGFyYWdyYXBoLXR4dCB2eC1saC01ICAgICAgICBcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmlza0NhdGVnb3JpZXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcCB2eC10eHQtYmx1ZSB2eC1mcy0xMiB2eC1mdy00MDAgdngtdy0xMDAgdngtcGwtMiB2eC1wci0yIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByaXNrQ2F0ZWdvcnkgb2YgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSaXNrQ2F0ZWdvcmllcz8uc2xpY2UoMCwyKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIHZ4LWZzLTEwIHZ4LWZ3LTQwMCB2eC1tci0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jpc2tDYXRlZ29yeScscmlza0NhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+e3tyaXNrQ2F0ZWdvcnkuY2F0ZWdvcnlfbmFtZX19PC9zcGFuPjwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb3VudCB2eC10eHQtd2hpdGUgdngtZnctNTAwIHZ4LW1sLTEgdngtbGgtNSB2eC1iZy1ibHVlXCIgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGggPiAyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwicmlza0xpc3QucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4rXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5zbGljZSgyKS5sZW5ndGh9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZVNlbGVjdG9yICE9PSAncmlza0NhdGVnb3JpZXMnXCIgY2xhc3M9XCJlZGl0IHZ4LXR0LXVwcGVyY2FzZSB2eC1mcy0xMSB2eC1mdy01MDAgdngtcHQtMCB2eC1wYi0wIHZ4LXBsLTEgdngtcHItMSB2eC1kLWJsb2NrIHZ4LXR4dC1ibHVlIHZ4LWQtYmxvY2tcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKCdyaXNrQ2F0ZWdvcmllcycsdHJ1ZSlcIj48aSBjbGFzcz1cImljb25zIHZ4LWZzLTggdngtZnctNDAwIHZ4LW1yLTFcIj4mI3hlOWJhOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXQ8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNyaXNrTGlzdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHJpc2tDYXRlZ29yeSBvZiBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzIHwgc2xpY2U6IDI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoJ3Jpc2tDYXRlZ29yeScscmlza0NhdGVnb3J5KVwiPiYjeGU5MGQ7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJpc2tDYXRlZ29yeT8uY2F0ZWdvcnlfbmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cC1yb3dcIiAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyAqbmdJZj1cImRhc2hib2FyZEZvcm0/LmRpc3BsYXlDcml0ZXJpYT8ubGVuZ3RoPT0wXCIgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3doby5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtPy5kaXNwbGF5Q3JpdGVyaWE/Lmxlbmd0aD4wIFwiIGNsYXNzPVwiY2hlY2tJY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MiA1MlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJjaGVja0ljb25fX2NpcmNsZVwiIGN4PVwiMjZcIiBjeT1cIjI2XCIgcj1cIjI1XCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGNsYXNzPVwiY2hlY2tJY29uX19jaGVja1wiIGZpbGw9XCJub25lXCIgZD1cIk0xNC4xIDI3LjJsNy4xIDcuMiAxNi43LTE2LjhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZvcm0tZ3JvdXAgdngtZC1ibG9jayB2eC1tYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNCB2eC1kLWJsb2NrIHZ4LW1iLTIgdngtdHQtdXBwZXJjYXNlIHZ4LXctMTAwIHZ4LXRleHQtbGVmdCB2eC1sYWJlbC10eHQgdngtbXQtMVwiPkRJU1BMQVkgQ1JJVEVSSUE8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cFwiICpuZ0lmPVwic2hvd0NyaXRlcmlhXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNzLXJhZGlvIFtjaGVja2VkXT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhPT0nb3InXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJkYXNoYm9hcmRGb3JtLmRpc3BsYXlDcml0ZXJpYT0nb3InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRob3NlIEl0ZW1zIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGVpdGhlciB0aGUgc2VsZWN0ZWQgUmVzcG9uc2liaWxpdHkgQ2VudGVyKHMpIG9yIHRoZSBzZWxlY3RlZCBDYXRlZ29yaWVzLjwvYXBwLWNzLXJhZGlvPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbY2hlY2tlZF09XCJkYXNoYm9hcmRGb3JtLmRpc3BsYXlDcml0ZXJpYT09J2FuZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cImRhc2hib2FyZEZvcm0uZGlzcGxheUNyaXRlcmlhPSdhbmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRob3NlIEl0ZW1zIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGJvdGggdGhlIHNlbGVjdGVkIFJlc3BvbnNpYmlsaXR5IENlbnRlcihzKSBhbmQgdGhlIHNlbGVjdGVkIENhdGVnb3JpZXMuPC9hcHAtY3MtcmFkaW8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAtcm93XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgICpuZ0lmPVwiIWRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJvbURhdGUgfHwgIWRhc2hib2FyZEZvcm0/LnNlbGVjdGVkVG9EYXRlXCIgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3doZW4uc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICAqbmdJZj1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJvbURhdGUgJiYgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRUb0RhdGVcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+VElNRUZSQU1FPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsLXN1Yi1sYWJlbFwiPlNlbGVjdCBob3cgbG9uZyB5b3Ugd291bGQgbGlrZSB0aGUgaW5mb3JtYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQgdG8gYmUgZGlzcGxheWVkIGZvci4gSWYgbm8gdGltZWZyYW1lIGlzIHNlbGVjdGVkLCB0aGUgaW5mb3JtYXRpb24gd2lsbCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ZWQgcGVybWFuZW50bHkuPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1zZWxlY3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhc2hib2FyZEZvcm0/LnNlbGVjdGVkRnJvbURhdGUgfCBkYXRlOiAnZGQgTU1NIHl5eXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ0Zyb20nXCIgKGNsaWNrKT1cIm9wZW5Gcm9tRGF0ZVBpY2tlcigpXCIgcmVhZG9ubHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXIgI2Zyb21EYXRlUGlja2VyIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiY2xvc2VGcm9tRGF0ZVBpY2tlcigpOyBkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImZyb21EYXRlUGlja2VyQ29uZmlnXCI+PC9kcC1kYXRlLXBpY2tlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgKGNsaWNrKT1cImNsb3NlRnJvbURhdGVQaWNrZXIoKVwiICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRhdGUtc2VsZWN0XCIgKm5nSWY9XCIhaGlkZVRvRGF0ZVwiIFtjbGFzcy5kaXNhYmxlZF09XCIhZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRGcm9tRGF0ZSBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTJkOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFt2YWx1ZV09XCJkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFRvRGF0ZSB8IGRhdGU6ICdkZCBNTU0geXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVG8nXCIgKGNsaWNrKT1cIm9wZW5Ub0RhdGVQaWNrZXIoKVwiIHJlYWRvbmx5PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyICN0b0RhdGVQaWNrZXIgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRGb3JtLnNlbGVjdGVkVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCBEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwiY2xvc2VUb0RhdGVQaWNrZXIoKTsgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJ0b0RhdGVQaWNrZXJDb25maWdcIj48L2RwLWRhdGUtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlcIiAoY2xpY2spPVwiY2xvc2VUb0RhdGVQaWNrZXIoKVwiICpuZ0lmPVwiZGF0ZVBpY2tlck92ZXJsYXlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInZ4LXR4dC1lcnJvclwiICBbYXBwU2Nyb2xsSW5WaWV3XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN1Ym1pdHRlZCAmJiAoZGFzaGJvYXJkRm9ybS5zZWxlY3RlZEZyb21EYXRlICYmICghZGFzaGJvYXJkRm9ybS5zZWxlY3RlZFRvRGF0ZSkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdCBhIHRpbWUtZnJhbWUuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwLXJvd1wiIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlU2VsZWN0b3IgPT09ICdmcmVxdWVuY3knXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIiBhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ2ZyZXF1ZW5jeScgJiYgYWN0aXZlU2VsZWN0b3IgIT09ICduYW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1hZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIhZGFzaGJvYXJkRm9ybS5mcmVxdWVuY3lNZXNzYWdlXCIgc3JjPVwiLi9hc3NldHMvaW1hZ2VzL3NlbmQtcmVzb2x1dGlvbi5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIiBjbGFzcz1cImNoZWNrSWNvblwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDUyIDUyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cImNoZWNrSWNvbl9fY2lyY2xlXCIgY3g9XCIyNlwiIGN5PVwiMjZcIiByPVwiMjVcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggY2xhc3M9XCJjaGVja0ljb25fX2NoZWNrXCIgZmlsbD1cIm5vbmVcIiBkPVwiTTE0LjEgMjcuMmw3LjEgNy4yIDE2LjctMTYuOFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZm9ybS1ncm91cCB2eC1kLWJsb2NrIHZ4LW1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC00IHZ4LWQtYmxvY2sgdngtbWItMiB2eC10dC11cHBlcmNhc2Ugdngtdy0xMDAgdngtdGV4dC1sZWZ0IHZ4LWxhYmVsLXR4dCB2eC1tdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtYWlsIFN1bW1hcmllcyA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWwtc3ViLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSB3b3VsZCBsaWtlIHRvIHNlbmQgYSBzdW1tYXJ5IG9mIHRoaXMgRGFzaGJvYXJkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGVhc2Ugc2VsZWN0IGEgZnJlcXVlbmN5KEJ5IGRlZmF1bHQgVkNvbXBseSBzZW5kcyBhIHdlZWtseSBTdW1tYXJ5KS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rib3hcIiAqbmdJZj1cIiFkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJFbWFpbCBTdW1tYXJpZXNcIiByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlU2VsZWN0b3IoJ2ZyZXF1ZW5jeScsIHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkIHZ4LXAtMiB2eC1mcy0xNCB2eC1mdy00MDAgdngtdy0xMDAgdngtZC1mbGV4IHZ4LXRleHQtY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWxoLTVcIiAqbmdJZj1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdCBmcmVxdWVuY3ktbGVmdCB2eC10ZXh0LWxlZnQgXCIgW2lubmVySFRNTF09XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIiAgW2FyVG9vbHRpcF09XCJkYXNoYm9hcmRGb3JtLmZyZXF1ZW5jeU1lc3NhZ2VcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XSA9XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImRhc2hib2FyZEZvcm0uZnJlcXVlbmN5TWVzc2FnZVwiIGNsYXNzPVwiZWRpdCB2eC10dC11cHBlcmNhc2UgdngtZnMtMTEgdngtZnctNTAwIHZ4LXB0LTAgdngtcGItMCB2eC1wbC0xIHZ4LXByLTEgdngtZC1ibG9jayB2eC10eHQtYmx1ZSB2eC1kLWJsb2NrXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVTZWxlY3RvcignZnJlcXVlbmN5Jyx0cnVlKVwiPjxpIGNsYXNzPVwiaWNvbnMgdngtZnMtOCB2eC1mdy00MDAgdngtbXItMVwiPiYjeGU5YmE7PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWRpdDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ2eC1idG4gYmxvY2sgcHJpbWFyeVwiIFtkaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCIgKGNsaWNrKT1cImNvbmZpZ3VyZURhc2hib2FyZCgpXCI+TmV4dDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFdpZGdldHM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2xvc2UtZGlhbG9nXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNhYmxlZF09XCJhY3RpdmVTZWxlY3RvciAmJiBhY3RpdmVTZWxlY3RvciAhPT0gJ25hbWUnXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoe21vZGU6J2Rpc2NhcmQnfSlcIiBbYXJUb29sdGlwXT1cIidbRXNjXSB0byBjbG9zZSdcIiBwbGFjZW1lbnQ9XCJsZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldID1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTNmOzwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtY29uZmlybWF0aW9uLWFsZXJ0XCIgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZGFzaGJvYXJkRm9ybT8uc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aD09MCAmJiBcclxuICAgICAgICAgICAgICAgIGRhc2hib2FyZEZvcm0/LnNlbGVjdGVkUmVzcG9uc2liaWxpdHlDYXRlZ29yaWVzPy5sZW5ndGg9PTAgJiZcclxuICAgICAgICAgICAgICAgICBkYXNoYm9hcmRGb3JtPy5zZWxlY3RlZFJpc2tDYXRlZ29yaWVzPy5sZW5ndGg9PTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnbG9iYWwtY29uZmlybWF0aW9uLWFsZXJ0LXRvcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTkzMDs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dFwiICpuZ0lmPVwic2hvd1Jpc2tDYXRlZ29yeVwiPlNlbGVjdCBhIFJlc3BvbnNpYmlsaXR5IENlbnRlciwgUHJvZ3JhbSBvciBSaXNrIENhdGVnb3J5LjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHRcIiAqbmdJZj1cIiFzaG93Umlza0NhdGVnb3J5XCI+U2VsZWN0IGEgUmVzcG9uc2liaWxpdHkgQ2VudGVyIG9yIFByb2dyYW0uPC9wPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdsb2JhbC1jb25maXJtYXRpb24tYWxlcnQtYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJtZXNzYWdlXCI+PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImZpbGxcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInN1Ym1pdHRlZD1mYWxzZVwiPk9LQVk8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhcHAtc21pbGV5LWRpYWxvZyBcclxuICAgICpuZ0lmPVwiaXNTbWlsZXlcIlxyXG4gICAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiPlxyXG48L2FwcC1zbWlsZXktZGlhbG9nPlxyXG5cclxuPGFwcC1jb25maWd1cmUtd2lkZ2V0cyAqbmdJZj1cIm9wZW5Db25maWd1cmVXaWRnZXRzXCIgW21vZGVdPVwibW9kZVwiIFtkaXNwbGF5ZWRXaWRnZXRzXT1cImRpc3BsYXllZFdpZGdldHNcIlxyXG4gW3Nob3dSaXNrXT1cInNob3dSaXNrV2lkZ2V0c1wiIFtzaG93Q29tcGxpYW5jZV09XCJzaG93Q29tcGxpYW5jZVdpZGdldHNcIiBbc2VsZWN0ZWRXaWRnZXRzRGF0YV09XCJzZWxlY3RlZFdpZGdldHNcIlxyXG4gICAgKHdpZGdldHNEYXRhTW9kaWZpZWQpPVwic2V0U2VsZWN0ZWRXaWRnZXRzKCRldmVudClcIiAoY2xvc2VDb25maWd1cmVXaWRnZXRzKT1cImNsb3NlQ29uZmlndXJlV2lkZ2V0cygkZXZlbnQpXCI+XHJcbjwvYXBwLWNvbmZpZ3VyZS13aWRnZXRzPiJdfQ==