@rangertechnologies/ngnxt 2.1.77 → 2.1.78

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.
@@ -11,9 +11,6 @@ import { NgSelectModule } from '@ng-select/ng-select';
11
11
  import { CustomInputComponent } from './components/custom-input/custom-input.component';
12
12
  import { CustomTextAreaComponent } from './components/custom-text-area/custom-text-area.component';
13
13
  import { CustomTableComponent } from './components/custom-table/custom-table.component';
14
- import { CustomRichTextComponent } from './components/custom-rich-text/custom-rich-text.component'; //RS 06JAN2025 Imports modules and components for browser compatibility, Quill-based rich text editing, and custom configurations
15
- import { QuillModule } from 'ngx-quill';
16
- import { BrowserModule } from '@angular/platform-browser';
17
14
  import { DropdownWithFlagComponent } from './components/dropdown-with-flag/dropdown-with-flag.component';
18
15
  import { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';
19
16
  //import { OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS } from 'ng-pick-datetime/date-time/adapter/moment-adapter/moment-date-time-adapter.class';
@@ -50,9 +47,8 @@ import { CustomRadioComponent } from './components/custom-radio/custom-radio.com
50
47
  import { LoaderComponent } from './components/loader/loader.component';
51
48
  import { ComponenthostDirective } from './directives/componenthost/componenthost.directive';
52
49
  import * as i0 from "@angular/core";
53
- import * as i1 from "ngx-quill";
54
- import * as i2 from "./i18n.module";
55
- import * as i3 from "ng-circle-progress";
50
+ import * as i1 from "./i18n.module";
51
+ import * as i2 from "ng-circle-progress";
56
52
  // export const MY_CUSTOM_FORMATS = {
57
53
  // fullPickerInput: 'DD/MM/YYYY HH:mm:ss',
58
54
  // useUtc: true,
@@ -77,7 +73,6 @@ export class NxtAppModule {
77
73
  DropdownWithFlagComponent,
78
74
  CustomDropdownComponent,
79
75
  BookletComponent,
80
- CustomRichTextComponent,
81
76
  SearchBoxComponent,
82
77
  QuestionbookComponent,
83
78
  FileUploadComponent,
@@ -94,10 +89,7 @@ export class NxtAppModule {
94
89
  I18nComponent,
95
90
  I18nPipe,
96
91
  CustomImageComponent,
97
- CustomRadioComponent], imports: [i1.QuillModule, // RS 06JAN2025 Initializes the QuillModule with default settings for integrating the Quill editor.
98
- CommonModule, FormsModule,
99
- BrowserModule,
100
- ReactiveFormsModule,
92
+ CustomRadioComponent], imports: [CommonModule, FormsModule,
101
93
  MyDatePickerModule,
102
94
  OwlDateTimeModule,
103
95
  OwlNativeDateTimeModule,
@@ -111,7 +103,7 @@ export class NxtAppModule {
111
103
  // apiKey: GOOGLE_MAP_API_KEY,
112
104
  // libraries: ['geometry', 'places', 'visualization', 'drawing']
113
105
  // }),
114
- NgxSpinnerModule, i2.I18nModule, i3.NgCircleProgressModule], exports: [NxtAppComponent,
106
+ ReactiveFormsModule, NgxSpinnerModule, i1.I18nModule, i2.NgCircleProgressModule], exports: [NxtAppComponent,
115
107
  QuestionnaireComponent,
116
108
  BookletComponent,
117
109
  SummaryPageComponent,
@@ -120,10 +112,7 @@ export class NxtAppModule {
120
112
  static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NxtAppModule, providers: [
121
113
  I18nService,
122
114
  I18nPipe
123
- ], imports: [QuillModule.forRoot(),
124
- CommonModule, FormsModule,
125
- BrowserModule,
126
- ReactiveFormsModule,
115
+ ], imports: [CommonModule, FormsModule,
127
116
  MyDatePickerModule,
128
117
  OwlDateTimeModule,
129
118
  OwlNativeDateTimeModule,
@@ -135,7 +124,7 @@ export class NxtAppModule {
135
124
  // apiKey: GOOGLE_MAP_API_KEY,
136
125
  // libraries: ['geometry', 'places', 'visualization', 'drawing']
137
126
  // }),
138
- NgxSpinnerModule,
127
+ ReactiveFormsModule, NgxSpinnerModule,
139
128
  I18nModule.forRoot(languages),
140
129
  /*NgCircleProgressModule.forRoot({
141
130
  "backgroundPadding": -10,
@@ -229,7 +218,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
229
218
  DropdownWithFlagComponent,
230
219
  CustomDropdownComponent,
231
220
  BookletComponent,
232
- CustomRichTextComponent,
233
221
  SearchBoxComponent,
234
222
  QuestionbookComponent,
235
223
  FileUploadComponent,
@@ -249,10 +237,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
249
237
  CustomRadioComponent
250
238
  ],
251
239
  imports: [
252
- QuillModule.forRoot(),
253
240
  CommonModule, FormsModule,
254
- BrowserModule,
255
- ReactiveFormsModule,
256
241
  MyDatePickerModule,
257
242
  OwlDateTimeModule,
258
243
  OwlNativeDateTimeModule,
@@ -266,7 +251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
266
251
  // apiKey: GOOGLE_MAP_API_KEY,
267
252
  // libraries: ['geometry', 'places', 'visualization', 'drawing']
268
253
  // }),
269
- NgxSpinnerModule,
254
+ ReactiveFormsModule, NgxSpinnerModule,
270
255
  I18nModule.forRoot(languages),
271
256
  /*NgCircleProgressModule.forRoot({
272
257
  "backgroundPadding": -10,
@@ -353,7 +338,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
353
338
  SummaryPageComponent,
354
339
  I18nPipe,
355
340
  I18nComponent,
356
- // CustomRichTextComponent
357
341
  ],
358
342
  providers: [
359
343
  I18nService,
@@ -365,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
365
349
  // ]
366
350
  }]
367
351
  }] });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnh0LWFwcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvbnh0LWFwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUMsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQXNCLE1BQU0sMERBQTBELENBQUMsQ0FBQyxpSUFBaUk7QUFDelAsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHlC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QUFFLFNBQVM7NEJBQ3pDLGtCQUFrQixFQUFFLENBQUM7NEJBQ3JCLFlBQVksRUFBRSxTQUFTOzRCQUN2QixlQUFlLEVBQUUsSUFBSTs0QkFDckIsZUFBZSxFQUFFLFNBQVM7NEJBQzFCLGNBQWMsRUFBRSxLQUFLO3lCQUFDLENBQUM7cUJBQzVCO29CQUNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxPQUFPLEVBQUUsQ0FBQyxlQUFlO3dCQUN2QixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixRQUFRO3dCQUNSLGFBQWE7d0JBQ2IsMEJBQTBCO3FCQUMzQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsV0FBVzt3QkFDWCxRQUFRO3FCQUNUO29CQUNELGVBQWU7b0JBQ2Ysb0ZBQW9GO29CQUNwRixxRUFBcUU7b0JBQ3JFLElBQUk7aUJBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOeHRBcHBDb21wb25lbnQgfSBmcm9tICcuL254dC1hcHAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUXVlc3Rpb25uYWlyZUNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvcXVlc3Rpb25uYWlyZS9xdWVzdGlvbm5haXJlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTXlEYXRlUGlja2VyTW9kdWxlIH0gZnJvbSAnbXlkYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTmdDaXJjbGVQcm9ncmVzc01vZHVsZSB9IGZyb20gJ25nLWNpcmNsZS1wcm9ncmVzcyc7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJNb2R1bGUgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgR09PR0xFX01BUF9BUElfS0VZIH0gZnJvbSAnLi4vbGliL3NhbXBsZSc7XHJcbmltcG9ydCB7IFBpY2tMb2NhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9waWNrLWxvY2F0aW9uL3BpY2stbG9jYXRpb24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XHJcbmltcG9ydCB7IEN1c3RvbUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1pbnB1dC9jdXN0b20taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWFDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLXRleHQtYXJlYS9jdXN0b20tdGV4dC1hcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10YWJsZS9jdXN0b20tdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tUmljaFRleHRDb21wb25lbnQsIFF1aWxsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tcmljaC10ZXh0L2N1c3RvbS1yaWNoLXRleHQuY29tcG9uZW50JzsgLy9SUyAwNkpBTjIwMjUgSW1wb3J0cyBtb2R1bGVzIGFuZCBjb21wb25lbnRzIGZvciBicm93c2VyIGNvbXBhdGliaWxpdHksIFF1aWxsLWJhc2VkIHJpY2ggdGV4dCBlZGl0aW5nLCBhbmQgY3VzdG9tIGNvbmZpZ3VyYXRpb25zXHJcbmltcG9ydCB7IFF1aWxsTW9kdWxlIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBEcm9wZG93bldpdGhGbGFnQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Ryb3Bkb3duLXdpdGgtZmxhZy9kcm9wZG93bi13aXRoLWZsYWcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT3dsRGF0ZVRpbWVNb2R1bGUsT3dsTmF0aXZlRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lJztcclxuXHJcbi8vaW1wb3J0IHsgT1dMX01PTUVOVF9EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TIH0gZnJvbSAnbmctcGljay1kYXRldGltZS9kYXRlLXRpbWUvYWRhcHRlci9tb21lbnQtYWRhcHRlci9tb21lbnQtZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MnO1xyXG5pbXBvcnQgeyBDdXN0b21EYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1kYXRlLXBpY2tlci9jdXN0b20tZGF0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWRyb3Bkb3duL2N1c3RvbS1kcm9wZG93bi5jb21wb25lbnQnO1xyXG4vLyBWRCAyM0pBTjI0IHJlbW92ZWQgSHR0cENsaWVudE1vZHVsZVxyXG5pbXBvcnQgeyBCb29rbGV0Q29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgR29vZ2xlTWFwc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2dvb2dsZS1tYXBzJztcclxuaW1wb3J0IHsgU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NlYXJjaC1ib3gvc2VhcmNoLWJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbmJvb2tDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3F1ZXN0aW9uYm9vay9xdWVzdGlvbmJvb2suY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWxlLXVwbG9hZC9maWxlLXVwbG9hZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTdW1tYXJ5UGFnZUNvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvc3VtbWFyeS1wYWdlL3N1bW1hcnktcGFnZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9maWxlLXZpZXcvZmlsZS12aWV3LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERlcGVuZGVudFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2RlcGVuZGVudC10YWJsZS9kZXBlbmRlbnQtdGFibGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tTGFiZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWxhYmVsL2N1c3RvbS1sYWJlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUYWJsZUFwcGVuZGl4Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYmxlLWFwcGVuZGl4L3RhYmxlLWFwcGVuZGl4LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUvY3VzdG9tLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tVGltZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tdGltZS9jdXN0b20tdGltZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21CdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWJ1dHRvbi9jdXN0b20tYnV0dG9uLmNvbXBvbmVudCc7XHJcbi8vIEhBIDE5REVDMjMgSW1wb3J0aW5nIGZvciB0cmFuc2xhdGlvblxyXG5pbXBvcnQgeyBJMThuTW9kdWxlIH0gZnJvbSAnLi9pMThuLm1vZHVsZSdcclxuaW1wb3J0IHsgSTE4bkNvbXBvbmVudCB9IGZyb20gJy4vaTE4bi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJMThuUGlwZSB9IGZyb20gJy4vaTE4bi5waXBlJztcclxuaW1wb3J0ICogYXMgZW5JMThuIGZyb20gJy4vZW4uaTE4bic7XHJcbmltcG9ydCAqIGFzIGFySTE4biBmcm9tICcuL2FyLmkxOG4nO1xyXG5pbXBvcnQgKiBhcyB0YW1JMThuIGZyb20gJy4vdGFtLmkxOG4nXHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi9pMThuLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7IC8vIFZEIDIwSlVOMjQgLSBoZWxwIHRleHQgY2hhbmdlc1xyXG5pbXBvcnQgeyBHZXRWYWx1ZVBpcGUgfSBmcm9tICcuL3BpcGUvZ2V0LXZhbHVlLnBpcGUnOyAvLyBWRCAyNkpVTjI0IC0gcGlwZSBjaGFuZ2VzXHJcbmltcG9ydCB7IEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tTW9kZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLW1vZGVsL2N1c3RvbS1tb2RlbC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21JbWFnZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20taW1hZ2UvY3VzdG9tLWltYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVJhZGlvQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1yYWRpby9jdXN0b20tcmFkaW8uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tcG9uZW50aG9zdERpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9jb21wb25lbnRob3N0L2NvbXBvbmVudGhvc3QuZGlyZWN0aXZlJztcclxuXHJcbi8vIGV4cG9ydCBjb25zdCBNWV9DVVNUT01fRk9STUFUUyA9IHtcclxuLy8gICBmdWxsUGlja2VySW5wdXQ6ICdERC9NTS9ZWVlZIEhIOm1tOnNzJyxcclxuLy8gICB1c2VVdGM6IHRydWUsXHJcbi8vIH07XHJcblxyXG4vLyBIQSAxOURFQzIzIHZhcmlhYmxlIGNyZWF0ZWQgZm9yIHRyYW5zbGF0aW9uXHJcbmNvbnN0IGxhbmd1YWdlcyA9IFtcclxuICAvLyB7IGxhbmc6ICdFTicsIGZsYWc6ICdhc3NldHMvaW1hZ2VzL2VuLmkxOG4ucG5nJywgZmlsZTogZW5JMThuIH0sXHJcbiAgeyBsYW5nOiAnRU4nLCBmaWxlOiBlbkkxOG4gfSxcclxuICB7IGxhbmc6ICdUQU0nLCBmaWxlOiB0YW1JMThuIH0sXHJcbiAgeyBsYW5nOiAnQVInLCBmaWxlOiBhckkxOG4gfVxyXG5dXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW054dEFwcENvbXBvbmVudCwgXHJcbiAgICBRdWVzdGlvbm5haXJlQ29tcG9uZW50LFxyXG4gICAgUGlja0xvY2F0aW9uQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tSW5wdXRDb21wb25lbnQsXHJcbiAgICBDdXN0b21UZXh0QXJlYUNvbXBvbmVudCxcclxuICAgIEN1c3RvbVRhYmxlQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQsXHJcbiAgICBDdXN0b21EYXRlUGlja2VyQ29tcG9uZW50LFxyXG4gICAgRHJvcGRvd25XaXRoRmxhZ0NvbXBvbmVudCxcclxuICAgIEN1c3RvbURyb3Bkb3duQ29tcG9uZW50LFxyXG4gICAgQm9va2xldENvbXBvbmVudCxcclxuICAgIEN1c3RvbVJpY2hUZXh0Q29tcG9uZW50LFxyXG4gICAgU2VhcmNoQm94Q29tcG9uZW50LFxyXG4gICAgUXVlc3Rpb25ib29rQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIFN1bW1hcnlQYWdlQ29tcG9uZW50LFxyXG4gICAgRmlsZVZpZXdDb21wb25lbnQsXHJcbiAgICBEZXBlbmRlbnRUYWJsZUNvbXBvbmVudCxcclxuICAgIEN1c3RvbUxhYmVsQ29tcG9uZW50LFxyXG4gICAgVGFibGVBcHBlbmRpeENvbXBvbmVudCxcclxuICAgIEN1c3RvbURhdGVDb21wb25lbnQsXHJcbiAgICBDdXN0b21UaW1lQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tTW9kZWxDb21wb25lbnQsXHJcbiAgICBMb2FkZXJDb21wb25lbnQsXHJcbiAgICBJMThuQ29tcG9uZW50LFxyXG4gICAgSTE4blBpcGUsXHJcbiAgICBDdXN0b21JbWFnZUNvbXBvbmVudCxcclxuICAgIEN1c3RvbVJhZGlvQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBRdWlsbE1vZHVsZS5mb3JSb290KCksLy8gUlMgMDZKQU4yMDI1IEluaXRpYWxpemVzIHRoZSBRdWlsbE1vZHVsZSB3aXRoIGRlZmF1bHQgc2V0dGluZ3MgZm9yIGludGVncmF0aW5nIHRoZSBRdWlsbCBlZGl0b3IuXHJcbiAgICBDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLFxyXG4gICAgQnJvd3Nlck1vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNeURhdGVQaWNrZXJNb2R1bGUsXHJcbiAgICBPd2xEYXRlVGltZU1vZHVsZSxcclxuICAgIE93bE5hdGl2ZURhdGVUaW1lTW9kdWxlLFxyXG4gICAgQ29tcG9uZW50aG9zdERpcmVjdGl2ZSxcclxuICAgIEdldFZhbHVlUGlwZSxcclxuICAgIC8vICAgIFZEIDIzSkFOMjQgcmVtb3ZlZCBIdHRwQ2xpZW50TW9kdWxlXHJcbiAgICBOZ1NlbGVjdE1vZHVsZSxcclxuICAgIEdvb2dsZU1hcHNNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgLy9BZ21Db3JlTW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgLy8gIGFwaUtleTogR09PR0xFX01BUF9BUElfS0VZLFxyXG4gICAgLy8gIGxpYnJhcmllczogWydnZW9tZXRyeScsICdwbGFjZXMnLCAndmlzdWFsaXphdGlvbicsICdkcmF3aW5nJ11cclxuICAvLyAgfSksXHJcbiAgICBOZ3hTcGlubmVyTW9kdWxlLFxyXG4gICAgSTE4bk1vZHVsZS5mb3JSb290KGxhbmd1YWdlcyksXHJcbiAgICAvKk5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgIFwiYmFja2dyb3VuZFBhZGRpbmdcIjogLTEwLFxyXG4gICAgICBcInJhZGl1c1wiOiA2MCxcclxuICAgICAgXCJzcGFjZVwiOiAtNixcclxuICAgICAgXCJpbm5lclN0cm9rZUNvbG9yXCI6IFwiIzkxOTE5MVwiLFxyXG4gICAgICBcIm91dGVyU3Ryb2tlQ29sb3JcIjogXCIjZGI5NTk0XCIsXHJcbiAgICAgIFwib3V0ZXJTdHJva2VHcmFkaWVudFN0b3BDb2xvclwiOiBcIiNlMGIxYjBcIixcclxuICAgICAgXCJpbm5lclN0cm9rZVdpZHRoXCI6IDIsXHJcbiAgICAgIFwiYmFja2dyb3VuZEdyYWRpZW50XCI6IHRydWUsXHJcbiAgICAgIFwiYmFja2dyb3VuZENvbG9yXCI6IFwiI2RkMmUxM1wiLFxyXG4gICAgICBcImJhY2tncm91bmRHcmFkaWVudFN0b3BDb2xvclwiOiBcIiNkZDJlMTNcIixcclxuICAgICAgXCJiYWNrZ3JvdW5kU3Ryb2tlXCI6IFwiI2QzY2ZjZlwiLFxyXG4gICAgICBcInRpdGxlXCI6IFtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgXCIlXCJcclxuICAgICAgXSxcclxuICAgICAgLy8gdGl0bGVGb250U2l6ZTogMTIsXHJcbiAgICAgIC8vIFwic3VidGl0bGVGb250U2l6ZVwiOiAyMCxcclxuICAgICAgXCJhbmltYXRlVGl0bGVcIjogZmFsc2UsXHJcbiAgICAgIFwiYW5pbWF0aW9uRHVyYXRpb25cIjogMTAwMCxcclxuICAgICAgXCJzaG93VW5pdHNcIjogZmFsc2UsXHJcbiAgICAgIFwiY2xvY2t3aXNlXCI6dHJ1ZVxyXG5cclxuICAgICAgLy9cImJhY2tncm91bmRTdHJva2VXaWR0aFwiOiBcIjBcIixcclxuXCJiYWNrZ3JvdW5kR3JhZGllbnRcIjogdHJ1ZSxcclxuICAgICAgLy9cImJhY2tncm91bmRDb2xvclwiOiBcIiNkZDJlMTNcIixcclxuICAgICAgXCJiYWNrZ3JvdW5kR3JhZGllbnRTdG9wQ29sb3JcIjogXCIjZGQyZTEzXCIsXHJcbiAgICAgIFwiYmFja2dyb3VuZFN0cm9rZVwiOiBcIiMwMDAwMDBcIixcclxuICAgICAgXCJiYWNrZ3JvdW5kUGFkZGluZ1wiOiAtMTAsXHJcbiAgICAgIFwicmFkaXVzXCI6IDYwLFxyXG4gICAgICBcInVuaXRzRm9udFdlaWdodFwiOiBcIjYwMFwiLFxyXG4gICAgICBcInVuaXRzQ29sb3JcIjogXCIjZjJmMmYyXCIsXHJcbiAgICAgIFwib3V0ZXJTdHJva2VHcmFkaWVudFwiOiB0cnVlLFxyXG4gICAgICBcIm91dGVyU3Ryb2tlQ29sb3JcIjogXCIjZTBiMWIwXCIsXHJcbiAgICAgIFwib3V0ZXJTdHJva2VHcmFkaWVudFN0b3BDb2xvclwiOiBcIiNlMGIxYjBcIixcclxuICAgICAgXCJvdXRlclN0cm9rZUxpbmVjYXBcIjogXCJpbmhlcml0XCIsXHJcbiAgICAgIFwiaW5uZXJTdHJva2VDb2xvclwiOiBcIiNmNmRmZGZcIixcclxuICAgICAgXCJ0aXRsZVwiOiBbXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICBcIiVcIlxyXG5dLFxyXG4gICAgICBcInRpdGxlQ29sb3JcIjogXCIjZTdkOWQ5XCIsXHJcbiAgICAgIFwidGl0bGVGb250U2l6ZVwiOiBcIjMxXCIsXHJcbiAgICAgIFwidGl0bGVGb250V2VpZ2h0XCI6IFwiMTAwXCIsXHJcbiAgICAgIFwic3VidGl0bGVDb2xvclwiOiBcIiNmN2Y3ZjdcIixcclxuICAgICAgXCJzdWJ0aXRsZUZvbnRTaXplXCI6IFwiMzZcIixcclxuICAgICAgXCJzdWJ0aXRsZUZvbnRXZWlnaHRcIjogXCI5MDBcIixcclxuICAgICAgXCJhbmltYXRlVGl0bGVcIjogZmFsc2UsXHJcbiAgICAgIFwiYW5pbWF0aW9uRHVyYXRpb25cIjogMTAwMCxcclxuICAgICAgXCJzaG93VGl0bGVcIjogdHJ1ZSxcclxuICAgICAgXCJzaG93VW5pdHNcIjogdHJ1ZSxcclxuICAgICAgXCJjbG9ja3dpc2VcIjogZmFsc2UsXHJcbiAgICAgIFwic3RhcnRGcm9tWmVyb1wiOiB0cnVlLFxyXG4gICAgICBcInNob3daZXJvT3V0ZXJTdHJva2VcIjogZmFsc2UsXHJcbiAgICAgIFwibGF6eVwiOiB0cnVlfSkqL1xyXG5cclxuICAgICAgTmdDaXJjbGVQcm9ncmVzc01vZHVsZS5mb3JSb290KHtcclxuICAgICAgICBcImJhY2tncm91bmRHcmFkaWVudFwiOiB0cnVlLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZENvbG9yXCI6IFwiI2UyOWQ5OFwiLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZEdyYWRpZW50U3RvcENvbG9yXCI6IFwiI2M1MjgxY1wiLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZFN0cm9rZVwiOiBcIiNlY2U0ZTRcIixcclxuICAgICAgICBcImJhY2tncm91bmRTdHJva2VXaWR0aFwiOiAwLFxyXG4gICAgICAgIFwiYmFja2dyb3VuZFBhZGRpbmdcIjogLTEwLFxyXG4gICAgICAgIFwicmFkaXVzXCI6IDYwLFxyXG4gICAgICAgIFwic3BhY2VcIjogNCxcclxuICAgICAgICBcIm1heFBlcmNlbnRcIjogMTAwLFxyXG4gICAgICAgIFwidW5pdHNGb250U2l6ZVwiOiBcIjM1XCIsXHJcbiAgICAgICAgXCJ1bml0c0NvbG9yXCI6IFwiI2YwZWJlYlwiLFxyXG4gICAgICAgIFwib3V0ZXJTdHJva2VHcmFkaWVudFwiOiB0cnVlLFxyXG4gICAgICAgIFwib3V0ZXJTdHJva2VXaWR0aFwiOiAxMCxcclxuICAgICAgICBcIm91dGVyU3Ryb2tlQ29sb3JcIjogXCIjZjdjMGJmXCIsXHJcbiAgICAgICAgXCJvdXRlclN0cm9rZUdyYWRpZW50U3RvcENvbG9yXCI6IFwiI2Y5YzljOFwiLFxyXG4gICAgICAgIFwiaW5uZXJTdHJva2VXaWR0aFwiOiAwLFxyXG4gICAgICAgIFwidGl0bGVDb2xvclwiOiBcIiNmM2VkZWRcIixcclxuICAgICAgICBcInRpdGxlRm9udFNpemVcIjogXCI0MFwiLFxyXG4gICAgICAgIFwic3VidGl0bGVDb2xvclwiOiBcIiM0NDQ0NDRcIixcclxuICAgICAgICBcInNob3dTdWJ0aXRsZVwiOiBmYWxzZX0pXHJcbiAgXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgZXhwb3J0czogW054dEFwcENvbXBvbmVudCwgXHJcbiAgICBRdWVzdGlvbm5haXJlQ29tcG9uZW50LFxyXG4gICAgQm9va2xldENvbXBvbmVudCxcclxuICAgIFN1bW1hcnlQYWdlQ29tcG9uZW50LFxyXG4gICAgSTE4blBpcGUsXHJcbiAgICBJMThuQ29tcG9uZW50LFxyXG4gICAgLy8gQ3VzdG9tUmljaFRleHRDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgSTE4blNlcnZpY2UsXHJcbiAgICBJMThuUGlwZVxyXG4gIF1cclxuICAvLyBwcm92aWRlcnM6IFtcclxuICAvLyAgIHsgcHJvdmlkZTogT1dMX01PTUVOVF9EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IGZhbHNlIH0gfSxcclxuICAvLyAgIHsgcHJvdmlkZTogT1dMX0RBVEVfVElNRV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfQ1VTVE9NX0ZPUk1BVFMgfSxcclxuICAvLyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOeHRBcHBNb2R1bGUgeyB9XHJcbiJdfQ==
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnh0LWFwcC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvbnh0LWFwcC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUMsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN4RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsaUJBQWlCLEVBQUMsdUJBQXVCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSwwSUFBMEk7QUFDMUksT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7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b0JBQ0QsU0FBUyxFQUFFO3dCQUNULFdBQVc7d0JBQ1gsUUFBUTtxQkFDVDtvQkFDRCxlQUFlO29CQUNmLG9GQUFvRjtvQkFDcEYscUVBQXFFO29CQUNyRSxJQUFJO2lCQUNMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTnh0QXBwQ29tcG9uZW50IH0gZnJvbSAnLi9ueHQtYXBwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE15RGF0ZVBpY2tlck1vZHVsZSB9IGZyb20gJ215ZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUgfSBmcm9tICduZy1jaXJjbGUtcHJvZ3Jlc3MnO1xyXG5pbXBvcnQgeyBOZ3hTcGlubmVyTW9kdWxlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbi8vaW1wb3J0IHsgQWdtQ29yZU1vZHVsZSB9IGZyb20gJ0BhZ20vY29yZSc7XHJcbmltcG9ydCB7IEdPT0dMRV9NQVBfQVBJX0tFWSB9IGZyb20gJy4uL2xpYi9zYW1wbGUnO1xyXG5pbXBvcnQgeyBQaWNrTG9jYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGljay1sb2NhdGlvbi9waWNrLWxvY2F0aW9uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBDdXN0b21JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20taW5wdXQvY3VzdG9tLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbVRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10ZXh0LWFyZWEvY3VzdG9tLXRleHQtYXJlYS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tdGFibGUvY3VzdG9tLXRhYmxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyb3Bkb3duV2l0aEZsYWdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZHJvcGRvd24td2l0aC1mbGFnL2Ryb3Bkb3duLXdpdGgtZmxhZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPd2xEYXRlVGltZU1vZHVsZSxPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSB9IGZyb20gJ25nLXBpY2stZGF0ZXRpbWUnO1xyXG5cclxuLy9pbXBvcnQgeyBPV0xfTU9NRU5UX0RBVEVfVElNRV9BREFQVEVSX09QVElPTlMgfSBmcm9tICduZy1waWNrLWRhdGV0aW1lL2RhdGUtdGltZS9hZGFwdGVyL21vbWVudC1hZGFwdGVyL21vbWVudC1kYXRlLXRpbWUtYWRhcHRlci5jbGFzcyc7XHJcbmltcG9ydCB7IEN1c3RvbURhdGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWRhdGUtcGlja2VyL2N1c3RvbS1kYXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Ecm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tZHJvcGRvd24vY3VzdG9tLWRyb3Bkb3duLmNvbXBvbmVudCc7XHJcbi8vIFZEIDIzSkFOMjQgcmVtb3ZlZCBIdHRwQ2xpZW50TW9kdWxlXHJcbmltcG9ydCB7IEJvb2tsZXRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2VzL2Jvb2tsZXQvYm9va2xldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBHb29nbGVNYXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZ29vZ2xlLW1hcHMnO1xyXG5pbXBvcnQgeyBTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zZWFyY2gtYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uYm9va0NvbXBvbmVudCB9IGZyb20gJy4vcGFnZXMvcXVlc3Rpb25ib29rL3F1ZXN0aW9uYm9vay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1bW1hcnlQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlcy9zdW1tYXJ5LXBhZ2Uvc3VtbWFyeS1wYWdlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZpbGUtdmlldy9maWxlLXZpZXcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVwZW5kZW50VGFibGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZGVwZW5kZW50LXRhYmxlL2RlcGVuZGVudC10YWJsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21MYWJlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tbGFiZWwvY3VzdG9tLWxhYmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRhYmxlQXBwZW5kaXhDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFibGUtYXBwZW5kaXgvdGFibGUtYXBwZW5kaXguY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tZGF0ZS9jdXN0b20tZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21UaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS10aW1lL2N1c3RvbS10aW1lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tYnV0dG9uL2N1c3RvbS1idXR0b24uY29tcG9uZW50JztcclxuLy8gSEEgMTlERUMyMyBJbXBvcnRpbmcgZm9yIHRyYW5zbGF0aW9uXHJcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICcuL2kxOG4ubW9kdWxlJ1xyXG5pbXBvcnQgeyBJMThuQ29tcG9uZW50IH0gZnJvbSAnLi9pMThuLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEkxOG5QaXBlIH0gZnJvbSAnLi9pMThuLnBpcGUnO1xyXG5pbXBvcnQgKiBhcyBlbkkxOG4gZnJvbSAnLi9lbi5pMThuJztcclxuaW1wb3J0ICogYXMgYXJJMThuIGZyb20gJy4vYXIuaTE4bic7XHJcbmltcG9ydCAqIGFzIHRhbUkxOG4gZnJvbSAnLi90YW0uaTE4bidcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuL2kxOG4uc2VydmljZSc7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJzsgLy8gVkQgMjBKVU4yNCAtIGhlbHAgdGV4dCBjaGFuZ2VzXHJcbmltcG9ydCB7IEdldFZhbHVlUGlwZSB9IGZyb20gJy4vcGlwZS9nZXQtdmFsdWUucGlwZSc7IC8vIFZEIDI2SlVOMjQgLSBwaXBlIGNoYW5nZXNcclxuaW1wb3J0IHsgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDdXN0b21Nb2RlbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jdXN0b20tbW9kZWwvY3VzdG9tLW1vZGVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEN1c3RvbUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2N1c3RvbS1pbWFnZS9jdXN0b20taW1hZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ3VzdG9tUmFkaW9Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3VzdG9tLXJhZGlvL2N1c3RvbS1yYWRpby5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRob3N0RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2NvbXBvbmVudGhvc3QvY29tcG9uZW50aG9zdC5kaXJlY3RpdmUnO1xyXG5cclxuLy8gZXhwb3J0IGNvbnN0IE1ZX0NVU1RPTV9GT1JNQVRTID0ge1xyXG4vLyAgIGZ1bGxQaWNrZXJJbnB1dDogJ0REL01NL1lZWVkgSEg6bW06c3MnLFxyXG4vLyAgIHVzZVV0YzogdHJ1ZSxcclxuLy8gfTtcclxuXHJcbi8vIEhBIDE5REVDMjMgdmFyaWFibGUgY3JlYXRlZCBmb3IgdHJhbnNsYXRpb25cclxuY29uc3QgbGFuZ3VhZ2VzID0gW1xyXG4gIC8vIHsgbGFuZzogJ0VOJywgZmxhZzogJ2Fzc2V0cy9pbWFnZXMvZW4uaTE4bi5wbmcnLCBmaWxlOiBlbkkxOG4gfSxcclxuICB7IGxhbmc6ICdFTicsIGZpbGU6IGVuSTE4biB9LFxyXG4gIHsgbGFuZzogJ1RBTScsIGZpbGU6IHRhbUkxOG4gfSxcclxuICB7IGxhbmc6ICdBUicsIGZpbGU6IGFySTE4biB9XHJcbl1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbTnh0QXBwQ29tcG9uZW50LCBcclxuICAgIFF1ZXN0aW9ubmFpcmVDb21wb25lbnQsXHJcbiAgICBQaWNrTG9jYXRpb25Db21wb25lbnQsXHJcbiAgICBDdXN0b21JbnB1dENvbXBvbmVudCxcclxuICAgIEN1c3RvbVRleHRBcmVhQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tVGFibGVDb21wb25lbnQsXHJcbiAgICBDdXN0b21DYWxlbmRhckNvbXBvbmVudCxcclxuICAgIEN1c3RvbURhdGVQaWNrZXJDb21wb25lbnQsXHJcbiAgICBEcm9wZG93bldpdGhGbGFnQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tRHJvcGRvd25Db21wb25lbnQsXHJcbiAgICBCb29rbGV0Q29tcG9uZW50LFxyXG4gICAgU2VhcmNoQm94Q29tcG9uZW50LFxyXG4gICAgUXVlc3Rpb25ib29rQ29tcG9uZW50LFxyXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcclxuICAgIFN1bW1hcnlQYWdlQ29tcG9uZW50LFxyXG4gICAgRmlsZVZpZXdDb21wb25lbnQsXHJcbiAgICBEZXBlbmRlbnRUYWJsZUNvbXBvbmVudCxcclxuICAgIEN1c3RvbUxhYmVsQ29tcG9uZW50LFxyXG4gICAgVGFibGVBcHBlbmRpeENvbXBvbmVudCxcclxuICAgIEN1c3RvbURhdGVDb21wb25lbnQsXHJcbiAgICBDdXN0b21UaW1lQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgQ3VzdG9tTW9kZWxDb21wb25lbnQsXHJcbiAgICBMb2FkZXJDb21wb25lbnQsXHJcbiAgICBJMThuQ29tcG9uZW50LFxyXG4gICAgSTE4blBpcGUsXHJcbiAgICBDdXN0b21JbWFnZUNvbXBvbmVudCxcclxuICAgIEN1c3RvbVJhZGlvQ29tcG9uZW50XHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLFxyXG4gICAgTXlEYXRlUGlja2VyTW9kdWxlLFxyXG4gICAgT3dsRGF0ZVRpbWVNb2R1bGUsXHJcbiAgICBPd2xOYXRpdmVEYXRlVGltZU1vZHVsZSxcclxuICAgIENvbXBvbmVudGhvc3REaXJlY3RpdmUsXHJcbiAgICBHZXRWYWx1ZVBpcGUsXHJcbiAgICAvLyAgICBWRCAyM0pBTjI0IHJlbW92ZWQgSHR0cENsaWVudE1vZHVsZVxyXG4gICAgTmdTZWxlY3RNb2R1bGUsXHJcbiAgICBHb29nbGVNYXBzTW9kdWxlLFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIC8vQWdtQ29yZU1vZHVsZS5mb3JSb290KHtcclxuICAgIC8vICBhcGlLZXk6IEdPT0dMRV9NQVBfQVBJX0tFWSxcclxuICAgIC8vICBsaWJyYXJpZXM6IFsnZ2VvbWV0cnknLCAncGxhY2VzJywgJ3Zpc3VhbGl6YXRpb24nLCAnZHJhd2luZyddXHJcbiAgLy8gIH0pLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTmd4U3Bpbm5lck1vZHVsZSxcclxuICAgIEkxOG5Nb2R1bGUuZm9yUm9vdChsYW5ndWFnZXMpLFxyXG4gICAgLypOZ0NpcmNsZVByb2dyZXNzTW9kdWxlLmZvclJvb3Qoe1xyXG4gICAgICBcImJhY2tncm91bmRQYWRkaW5nXCI6IC0xMCxcclxuICAgICAgXCJyYWRpdXNcIjogNjAsXHJcbiAgICAgIFwic3BhY2VcIjogLTYsXHJcbiAgICAgIFwiaW5uZXJTdHJva2VDb2xvclwiOiBcIiM5MTkxOTFcIixcclxuICAgICAgXCJvdXRlclN0cm9rZUNvbG9yXCI6IFwiI2RiOTU5NFwiLFxyXG4gICAgICBcIm91dGVyU3Ryb2tlR3JhZGllbnRTdG9wQ29sb3JcIjogXCIjZTBiMWIwXCIsXHJcbiAgICAgIFwiaW5uZXJTdHJva2VXaWR0aFwiOiAyLFxyXG4gICAgICBcImJhY2tncm91bmRHcmFkaWVudFwiOiB0cnVlLFxyXG4gICAgICBcImJhY2tncm91bmRDb2xvclwiOiBcIiNkZDJlMTNcIixcclxuICAgICAgXCJiYWNrZ3JvdW5kR3JhZGllbnRTdG9wQ29sb3JcIjogXCIjZGQyZTEzXCIsXHJcbiAgICAgIFwiYmFja2dyb3VuZFN0cm9rZVwiOiBcIiNkM2NmY2ZcIixcclxuICAgICAgXCJ0aXRsZVwiOiBbXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIFwiJVwiXHJcbiAgICAgIF0sXHJcbiAgICAgIC8vIHRpdGxlRm9udFNpemU6IDEyLFxyXG4gICAgICAvLyBcInN1YnRpdGxlRm9udFNpemVcIjogMjAsXHJcbiAgICAgIFwiYW5pbWF0ZVRpdGxlXCI6IGZhbHNlLFxyXG4gICAgICBcImFuaW1hdGlvbkR1cmF0aW9uXCI6IDEwMDAsXHJcbiAgICAgIFwic2hvd1VuaXRzXCI6IGZhbHNlLFxyXG4gICAgICBcImNsb2Nrd2lzZVwiOnRydWVcclxuXHJcbiAgICAgIC8vXCJiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhcIjogXCIwXCIsXHJcblwiYmFja2dyb3VuZEdyYWRpZW50XCI6IHRydWUsXHJcbiAgICAgIC8vXCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjZGQyZTEzXCIsXHJcbiAgICAgIFwiYmFja2dyb3VuZEdyYWRpZW50U3RvcENvbG9yXCI6IFwiI2RkMmUxM1wiLFxyXG4gICAgICBcImJhY2tncm91bmRTdHJva2VcIjogXCIjMDAwMDAwXCIsXHJcbiAgICAgIFwiYmFja2dyb3VuZFBhZGRpbmdcIjogLTEwLFxyXG4gICAgICBcInJhZGl1c1wiOiA2MCxcclxuICAgICAgXCJ1bml0c0ZvbnRXZWlnaHRcIjogXCI2MDBcIixcclxuICAgICAgXCJ1bml0c0NvbG9yXCI6IFwiI2YyZjJmMlwiLFxyXG4gICAgICBcIm91dGVyU3Ryb2tlR3JhZGllbnRcIjogdHJ1ZSxcclxuICAgICAgXCJvdXRlclN0cm9rZUNvbG9yXCI6IFwiI2UwYjFiMFwiLFxyXG4gICAgICBcIm91dGVyU3Ryb2tlR3JhZGllbnRTdG9wQ29sb3JcIjogXCIjZTBiMWIwXCIsXHJcbiAgICAgIFwib3V0ZXJTdHJva2VMaW5lY2FwXCI6IFwiaW5oZXJpdFwiLFxyXG4gICAgICBcImlubmVyU3Ryb2tlQ29sb3JcIjogXCIjZjZkZmRmXCIsXHJcbiAgICAgIFwidGl0bGVcIjogW1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXCIlXCJcclxuXSxcclxuICAgICAgXCJ0aXRsZUNvbG9yXCI6IFwiI2U3ZDlkOVwiLFxyXG4gICAgICBcInRpdGxlRm9udFNpemVcIjogXCIzMVwiLFxyXG4gICAgICBcInRpdGxlRm9udFdlaWdodFwiOiBcIjEwMFwiLFxyXG4gICAgICBcInN1YnRpdGxlQ29sb3JcIjogXCIjZjdmN2Y3XCIsXHJcbiAgICAgIFwic3VidGl0bGVGb250U2l6ZVwiOiBcIjM2XCIsXHJcbiAgICAgIFwic3VidGl0bGVGb250V2VpZ2h0XCI6IFwiOTAwXCIsXHJcbiAgICAgIFwiYW5pbWF0ZVRpdGxlXCI6IGZhbHNlLFxyXG4gICAgICBcImFuaW1hdGlvbkR1cmF0aW9uXCI6IDEwMDAsXHJcbiAgICAgIFwic2hvd1RpdGxlXCI6IHRydWUsXHJcbiAgICAgIFwic2hvd1VuaXRzXCI6IHRydWUsXHJcbiAgICAgIFwiY2xvY2t3aXNlXCI6IGZhbHNlLFxyXG4gICAgICBcInN0YXJ0RnJvbVplcm9cIjogdHJ1ZSxcclxuICAgICAgXCJzaG93WmVyb091dGVyU3Ryb2tlXCI6IGZhbHNlLFxyXG4gICAgICBcImxhenlcIjogdHJ1ZX0pKi9cclxuXHJcbiAgICAgIE5nQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUuZm9yUm9vdCh7XHJcbiAgICAgICAgXCJiYWNrZ3JvdW5kR3JhZGllbnRcIjogdHJ1ZSxcclxuICAgICAgICBcImJhY2tncm91bmRDb2xvclwiOiBcIiNlMjlkOThcIixcclxuICAgICAgICBcImJhY2tncm91bmRHcmFkaWVudFN0b3BDb2xvclwiOiBcIiNjNTI4MWNcIixcclxuICAgICAgICBcImJhY2tncm91bmRTdHJva2VcIjogXCIjZWNlNGU0XCIsXHJcbiAgICAgICAgXCJiYWNrZ3JvdW5kU3Ryb2tlV2lkdGhcIjogMCxcclxuICAgICAgICBcImJhY2tncm91bmRQYWRkaW5nXCI6IC0xMCxcclxuICAgICAgICBcInJhZGl1c1wiOiA2MCxcclxuICAgICAgICBcInNwYWNlXCI6IDQsXHJcbiAgICAgICAgXCJtYXhQZXJjZW50XCI6IDEwMCxcclxuICAgICAgICBcInVuaXRzRm9udFNpemVcIjogXCIzNVwiLFxyXG4gICAgICAgIFwidW5pdHNDb2xvclwiOiBcIiNmMGViZWJcIixcclxuICAgICAgICBcIm91dGVyU3Ryb2tlR3JhZGllbnRcIjogdHJ1ZSxcclxuICAgICAgICBcIm91dGVyU3Ryb2tlV2lkdGhcIjogMTAsXHJcbiAgICAgICAgXCJvdXRlclN0cm9rZUNvbG9yXCI6IFwiI2Y3YzBiZlwiLFxyXG4gICAgICAgIFwib3V0ZXJTdHJva2VHcmFkaWVudFN0b3BDb2xvclwiOiBcIiNmOWM5YzhcIixcclxuICAgICAgICBcImlubmVyU3Ryb2tlV2lkdGhcIjogMCxcclxuICAgICAgICBcInRpdGxlQ29sb3JcIjogXCIjZjNlZGVkXCIsXHJcbiAgICAgICAgXCJ0aXRsZUZvbnRTaXplXCI6IFwiNDBcIixcclxuICAgICAgICBcInN1YnRpdGxlQ29sb3JcIjogXCIjNDQ0NDQ0XCIsXHJcbiAgICAgICAgXCJzaG93U3VidGl0bGVcIjogZmFsc2V9KVxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIGV4cG9ydHM6IFtOeHRBcHBDb21wb25lbnQsIFxyXG4gICAgUXVlc3Rpb25uYWlyZUNvbXBvbmVudCxcclxuICAgIEJvb2tsZXRDb21wb25lbnQsXHJcbiAgICBTdW1tYXJ5UGFnZUNvbXBvbmVudCxcclxuICAgIEkxOG5QaXBlLFxyXG4gICAgSTE4bkNvbXBvbmVudCxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgSTE4blNlcnZpY2UsXHJcbiAgICBJMThuUGlwZVxyXG4gIF1cclxuICAvLyBwcm92aWRlcnM6IFtcclxuICAvLyAgIHsgcHJvdmlkZTogT1dMX01PTUVOVF9EQVRFX1RJTUVfQURBUFRFUl9PUFRJT05TLCB1c2VWYWx1ZTogeyB1c2VVdGM6IGZhbHNlIH0gfSxcclxuICAvLyAgIHsgcHJvdmlkZTogT1dMX0RBVEVfVElNRV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfQ1VTVE9NX0ZPUk1BVFMgfSxcclxuICAvLyBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOeHRBcHBNb2R1bGUgeyB9XHJcbiJdfQ==
@@ -284,13 +284,13 @@ export class BookletComponent {
284
284
  // HA 18-JAN-24 handleCompleteBooklet is to simplify the logic
285
285
  handleCompleteBooklet(completeBooklet) {
286
286
  if (Object.keys(completeBooklet?.bookQuestionsMap ?? {}).length === 0) { // HA 11-JAN-24 If condition to load booklet
287
- this.handleBook(completeBooklet?.questionbook?.subQuestions);
287
+ this.handleBook(completeBooklet?.questionbook?.Questions__r);
288
288
  }
289
289
  else { // HA 11-JAN-24 To load book questions
290
290
  for (const key in completeBooklet.bookQuestionsMap) {
291
291
  const val = completeBooklet.bookQuestionsMap[key];
292
292
  if (val.type === 'Book') {
293
- this.handleBook(val.subQuestions);
293
+ this.handleBook(val.Questions__r);
294
294
  }
295
295
  else {
296
296
  this.handleQues(val);
@@ -301,7 +301,7 @@ export class BookletComponent {
301
301
  // HA 11-JAN-24 handleBook loads the Book
302
302
  // RS 09DEC24 Changed keys
303
303
  handleBook(quesList) {
304
- quesList?.forEach(element => {
304
+ quesList?.records.forEach(element => {
305
305
  if (element.type === 'Book') {
306
306
  // HA 24JAN24 Fetching from QB reference
307
307
  var book = JSON.parse(element.qbReferenceQuestions);
@@ -538,4 +538,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
538
538
  }], dataBind: [{
539
539
  type: Input
540
540
  }] } });
541
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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Q0QsV0FBVyxDQUFDLEtBQVM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBQ0YsOEJBQThCO0lBQzdCLGVBQWUsQ0FBQyxLQUFTO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELGdCQUFnQixDQUFDLEtBQVM7UUFDeEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQzt1R0F2Z0JVLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLDZqQkM3QjdCLDQ2R0EwREE7OzJGRDdCYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTtzU0FLZCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0ksd0JBQXdCO3NCQUFqQyxNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNO2dCQUVHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBZ0JFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgQWN0aW9uTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uTWV0YSc7XHJcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSBcIi4uLy4uL3dyYXBwZXJcIjtcclxuaW1wb3J0IHsgQm9va2xldFdyYXBwZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYm9va2xldFdyYXBwZXJcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFuZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2NoYW5nZS5zZXJ2aWNlXCI7XHJcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxyXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWJvb2tsZXQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ib29rbGV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9ib29rbGV0LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQm9va2xldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgYm9va2xldElkOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2Vydjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRrbjogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJvb2tsZXRKU09OOiBhbnk7XHJcbiAgQElucHV0KCkgZHJvcGRvd25EZXBlbmRlbnREYXRhOmFueTtcclxuICBASW5wdXQoKSBsYWJlbFZhbHVlOnN0cmluZztcclxuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7XHJcbiAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlOnN0cmluZzsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXHJcbiAgQElucHV0KCkgZmllbGRSZXN0cmljdGlvbnM6IGFueTsgLy8gVkQgMTJKdW4yNCAtIGZpZWxkIHBlcm1pc3Npb24gY2hhbmdlXHJcbiAgQE91dHB1dCgpIGhhbmRsZUJvb2tsZXRBY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGhhbmRsZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoYWRsZURyb3BEb3duRGVwZW5kZW50OkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXHJcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwdWJsaWMgbnh0Qm9va2xldDogQm9va2xldFdyYXBwZXI7XHJcblxyXG4gIHB1YmxpYyBib29rbGV0OiBhbnlbXSA9IFtdO1xyXG4gIHB1YmxpYyBhYkl0ZW06IGFueSA9IHt9O1xyXG4gIHB1YmxpYyBhY3Rpb25zOiBBY3Rpb25NZXRhW10gPSBbXTtcclxuICBwdWJsaWMgYm9va1F1ZXN0aW9uc01hcDogYW55ID0gbmV3IE1hcCgpO1xyXG4gIHB1YmxpYyB0cmFuc2xhdGVNYXA6IGFueSA9IG5ldyBNYXAoKTsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXHJcbiAgcHJpdmF0ZSBzcU9wdGlvbnM6IGFueSA9IG5ldyBNYXAoKTtcclxuICBwdWJsaWMgaXNBbnN3ZXJGbGFnOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNwaW5uZXJOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIHNwaW5uZXJUeXBlOiBzdHJpbmc7XHJcbiAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIGlzIGNyZWF0ZWQgdG8gYXNzaWduIHRoZSBkaXJlY3Rpb24gYXMgY2xhc3NcclxuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7IC8vIEhBIDI4REVDMjMgbWFraW5nIGx0ciBhcyBkZWZhdWx0IGRpcmVjdGlvblxyXG4gIGFuc3dlckxpc3QgPSBbXTsgLy8gSEEgMTEtSkFOLTI0IEFuc3dlcmxpc3QgdG8gc3RvcmUgdGhlIG1pbmltYWwgdmFsdWVcclxuICBASW5wdXQoKSBkYXRhQmluZDphbnk7Ly8gSEEgMTgtSkFOLTI0IFRvIGluc2VydCB0aGUgZW5kcG9pbnQgdmFsdWUgdG8gdGhlIHF1ZXN0aW9uXHJcbiAgYWxsRXZlbnRzOmFueVtdPVtdOyAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXHJcbiAgXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcclxuICAgIGVsOiBFbGVtZW50UmVmLFxyXG4gICAgcHVibGljIGkxOG5TZXJ2aWNlOiBJMThuU2VydmljZVxyXG4gICkgeyBcclxuICAgIHRoaXMuc3Bpbm5lck5hbWUgPSBcInNwMVwiO1xyXG4gICAgdGhpcy5zcGlubmVyVHlwZSA9IFwiYmFsbC1zcGluLWNsb2Nrd2lzZVwiO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbi8vICBWRCAxMkphbjI0IGZpZWxkUmVzdHJpY3Rpb25zIGZvcm1hdGUgXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIFwiZmllbGRzXCIgOiB7XHJcbiAgLy8gICAgICAgICBcInRyYW5zUWItMDFcIiA6IFwicmVhZE9ubHlcIixcclxuICAvLyAgICAgICAgIFwiVHJhbnNGaXIwMlwiIDogXCJcIixcclxuICAvLyAgICAgICAgIFwiVHJhbnNMYXN0MDNcIiA6IFwicmVhZE9ubHlcIixcclxuICAvLyAgICAgICAgIFwiYmsyLXEyXCIgOiBcImhpZGVcIlxyXG4gIC8vICAgICB9XHJcbiAgLy8gIH1cclxuXHJcbiAgICAvLyBIQSAxOC1KQU4tMjQgRHVtbXkgU3RhdGljIGRhdGEgZm9yIHRlc3RpbmdcclxuICAgIC8vIHRoaXMuZGF0YUJpbmQgPSB7XHJcbiAgICAvLyAgIFwiX2lkXCI6IFwiNjU5ZWQwMDJlZDUxYmI4MDYxNTQ0MjU1XCIsXHJcbiAgICAvLyAgIFwiY29tcGFueUlkXCI6IFwiNXVsbGgxQldwWXFudnpLaDlMXCIsXHJcbiAgICAvLyAgIFwibmFtZVwiOiBcIkFsIFlhc21pbmVcIixcclxuICAgIC8vICAgXCJjb2RlXCI6IFwiY2hlY2tcIixcclxuICAgIC8vICAgXCJzdGF0dXNcIjogXCJJbi1Qcm9ncmVzc1wiLFxyXG4gICAgLy8gICBcImNyZWF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTc6MTI6MzQuNjg2WlwiLFxyXG4gICAgLy8gICBcInVwZGF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTk6NTM6MDguMTM1WlwiLFxyXG4gICAgLy8gICBcIl9fdlwiOiAwLFxyXG4gICAgLy8gICBcIm93bmVyXCI6IFwiY2hlY2tcIixcclxuICAgIC8vICAgXCJjdXN0b21lclwiOiBcImNoZWNrXCIsXHJcbiAgICAvLyAgIFwiZGF0aVwiOiBcIjIwMjQtMDEtMjNUMTg6MzA6MDAuMDAwWlwiLFxyXG4gICAgLy8gICBcInRpbWlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcclxuICAgIC8vIFwiZk5hbWVcIjogXCJIYWlkZXJcIixcclxuICAgIC8vIFwibE5hbWVcIjogXCJBbGlcIixcclxuICAgIC8vIFwiZGVmYXVsdEFwcFwiOiBcIk5YVFwiLFxyXG4gICAgLy8gXCJlbWFpbFwiOiBcImhhaWRlckBnbWFpbC5jb21cIixcclxuICAgIC8vIFwibG9jYXRpb25cIjoge2FkZHJlc3M6IFwiMTA3LCBBc2hvayBOYWdhciwgS2FkdWdvbmRhbmFoYWxsaSwgQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDQ1LCBJbmRpYVwiLFxyXG4gICAgLy8gICBsYXRpdHVkZTogMTMuMDIwMDU3NSxcclxuICAgIC8vICAgbG9uZ2l0dWRlOiA3Ny42MTI5ODE2fSxcclxuICAgIC8vIFwibG9jYXRpb25cIjogXCIxMDcsIEFzaG9rIE5hZ2FyLCBLYWR1Z29uZGFuYWhhbGxpLCBCZW5nYWx1cnUsIEthcm5hdGFrYSA1NjAwNDUsIEluZGlhXCIsXHJcbiAgICAvLyBcInRleHRBcmVhXCI6IFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtXCIsXHJcbiAgICAvLyB9O1xyXG4gICAgICAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcclxuICB9XHJcbiAvLyBWRCBOT1YyMyAtIHVwZGF0ZSB0aGUganNvbiBkYXRhIHdoZW4gYm9va2xldElkIGFuZCBib29rbGV0SlNPTiBjaGFuZ2VzXHJcbiAgbmdPbkNoYW5nZXMoc2ltcGxlY2hhbmdlczpTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgIC8vIEhBIDIzSkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXHJcbiAgIGlmKHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRJZCddIHx8IChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddICYmIChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRKU09OJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpIHx8IChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddICYmIChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2RhdGFCaW5kJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpICl7XHJcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gW107XHJcbiAgICAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcclxuICAgIH1cclxuICAgIC8vIGlmKHRoaXMuYm9va2xldCA9PSB1bmRlZmluZWQgfHwgdGhpcy5ib29rbGV0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAvLyAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByb2Nlc3NCb29rbGV0KCkge1xyXG4gICAgaWYgKHRoaXMuYm9va2xldElkKSB7XHJcbiAgICAgIGlmICh0aGlzLmJvb2tsZXRJZC5sZW5ndGggPT0gMTgpIHtcclxuICAgICAgICB0aGlzLnJlYWRCb29rbGV0KHRoaXMuYm9va2xldElkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04pIHtcclxuICAgICAgLy8gVHJ5IHRvIHBhc3MgYSB2YWx1ZSBmcm9tIEJhY2tlbmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgUXVlc3Rpb25Cb29rIFJlYWQgYW5kIEFuc3dlckJvb2sgUmVhZFxyXG4gICAgICB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XHJcblxyXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OICE9IG51bGwgfHwgdGhpcy5ib29rbGV0SlNPTiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIC8vIFN0b3JpbmcgdGhlIEFQSSByZXNwb25zZSBmb3IgZnV0dXJlIHVzZVxyXG4gICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHRoaXMuYm9va2xldEpTT04pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmJvb2tsZXQgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHM7XHJcbiAgICAgIHRoaXMuYWJJdGVtID0gdGhpcy5ib29rbGV0SlNPTi5hbnN3ZXJib29rO1xyXG5cclxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxyXG4gICAgICBmb3IgKHZhciBzcSBpbiB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuc3FPcHRpb25zLnNldChzcSwgdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnNbc3FdKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJvY2VzcyB0aGUgUXVlc3Rpb25zXHJcbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rbGV0XHJcbiAgICAgIC8vIEhBIDE3SkFOMjQgQWRkZWQgdGVybmFyeSBvcGVyYXRvciB0byBhdm9pZCB1bmRlZmluZWQgc2NlbmFyaW9cclxuICAgICAgLy8gSEEgMDlGRUIyNCBBZGRpbmcgY29uZGl0aW9uIHRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxyXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwICYmIE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApLmxlbmd0aCA+IDApe1xyXG4gICAgICAgIGZvciAodmFyIHZhbHVlIGluIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcCkge1xyXG4gICAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi5ib29rUXVlc3Rpb25zTWFwW3ZhbHVlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rIG9yIHF1ZXN0aW9uc1xyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHZhciB2YWx1ZSA9ICcnO1xyXG4gICAgICAgIC8vIEhBIDA5RkVCMjQgQWRkZWQgdGVybmFyeVxyXG4gICAgICAgIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXHJcbiAgICAgICAgdmFsdWUgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHNbMF0/LmlkO1xyXG4gICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rKTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgIC8vIFZEIDIwSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXHJcbiAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OPy50cmFuc2xhdGlvbk1hcCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi50cmFuc2xhdGlvbk1hcFt2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICAgLy8gVkQgMzFOT1YyNCB3cmFwcGVyIGNoYW5nZXNcclxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2s/LmFjdGlvbiAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmFjdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rLmFjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcclxuICAgIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXHJcbiAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LnN0eWxlKXtcclxuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnF1ZXN0aW9uYm9vaz8uc3R5bGUpKSk7XHJcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LnN0eWxlKXtcclxuICAgIC8vIGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uc3R5bGUpe1xyXG5cclxuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2tsZXRKU09OPy5yZWNvcmRzWzBdPy5zdHlsZSkpO1xyXG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhBIDE4LUpBTi0yNCBUaGUgY29uZGl0aW9uIGlzIHVzZWQgZm9yIEJpbmQtSW4gTG9naWMgXHJcbiAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldCh0aGlzLmJvb2tsZXRKU09OKTsgXHJcbiAgfVxyXG4gLy8gVkQgMTJKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcclxuICBwcml2YXRlIHJlYWRCb29rbGV0ID0gKHV1aWQ6IHN0cmluZykgPT4ge1xyXG4gICAgaWYodGhpcy5zZXJ2ID09IFwiYXBpXCIpIHtcclxuICAgICAgdGhpcy5kYXRhU2VydmljZS5nZXRBUElEYXRhKFxyXG4gICAgICAgIHRoaXMudGtuLFxyXG4gICAgICAgIFtcIkJvb2tsZXRcIiwgXCJyZWFkXCIsIHV1aWQsdGhpcy5sYW5ndWFnZUNvZGVdLFxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxyXG4gICAgICAgIHRoaXMuZmFpbHVyZVJlYWRCb29rbGV0XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBWRCAzMU5PVjI0IHBhcmFtIGNoYW5nZXMgd2l0aCBuZXcgbWV0aG9kXHJcbiAgICAgIGxldCBwYXJhbU1hcCA9IHsgY3JlYXRlQW5zd2VyQm9va0ZsYWc6IGZhbHNlIH07XHJcbiAgICAgIHBhcmFtTWFwWydjX19xYl9pZCddID0gJyc7XHJcbiAgICAgIHBhcmFtTWFwW1wiY19fcmVjb3JkX2lkXCJdID0gJyc7XHJcbiAgICAgIGxldCBwYXJhID0ge1xyXG4gICAgICAgIGRhdGFUeXBlOiBcIkJvb2tsZXRcIixcclxuICAgICAgICBvcGVyYXRpb246IFwicmVhZFwiLFxyXG4gICAgICAgIHBhcmFtMTogdXVpZCxcclxuICAgICAgICBwYXJhbUpTT046IEpTT04uc3RyaW5naWZ5KHBhcmFtTWFwKSxcclxuICAgICAgICBsYW5ndWFnZUNvZGUgOiB0aGlzLmxhbmd1YWdlQ29kZVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2ZTZXJ2aWNlLnJlbW90ZUFjdGlvbihcclxuICAgICAgICBcIk54dENvbnRyb2xsZXIucHJvY2Vzc0RhdGFcIixcclxuICAgICAgICBbSlNPTi5zdHJpbmdpZnkocGFyYSldLFxyXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxyXG4gICAgICAgIHRoaXMuZmFpbHVyZVJlYWRCb29rbGV0XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN1Y2Nlc3NSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coJ0luc2lkZSB0aGUgc3VjY2Vzc1JlYWRCb29rbGV0Jyk7XHJcbiAgICBpZihyZXNwb25zZSAhPSBudWxsIHx8IHJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyBTdG9yaW5nIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGZ1dHVyZSB1c2VcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zYXZlKHJlc3BvbnNlKTtcclxuXHJcbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcclxuICAgICAgLy8gdGhpcy5pc0Fuc3dlckZsYWcgPSB0cnVlO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5ib29rbGV0ID0gcmVzcG9uc2UucmVjb3JkcztcclxuICAgICAgdGhpcy5hYkl0ZW0gPSByZXNwb25zZS5hbnN3ZXJib29rO1xyXG4gICAgICBcclxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxyXG4gICAgICBmb3IgKHZhciBzcSBpbiByZXNwb25zZS5zcU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHJlc3BvbnNlLnNxT3B0aW9uc1tzcV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcclxuICAgICAgZm9yICh2YXIgdmFsdWUgaW4gcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcCkge1xyXG4gICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXBbdmFsdWVdKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xyXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS50cmFuc2xhdGlvbk1hcCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UudHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcclxuICAgICAgfVxyXG4gICAgICAgLy8gVkQgMzFOT1YyNCB3cmFwcGVyIGNoYW5nZXNcclxuICAgICAgaWYocmVzcG9uc2UucXVlc3Rpb25ib29rPy5hY3Rpb24gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZShyZXNwb25zZS5xdWVzdGlvbmJvb2suYWN0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIHZhbHVlIGFzc2lnbmluZ1xyXG4gICAgaWYocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uc3R5bGUpe1xyXG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uc3R5bGUpKSk7XHJcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmKHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5zdHlsZSl7XHJcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwb25zZT8ucmVjb3Jkc1swXT8uc3R5bGUpKSk7XHJcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZhaWx1cmVSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIGhhbmRsZUJvb2tsZXRBY3Rpb25DbGljayhhY3Rpb246QWN0aW9uTWV0YSkge1xyXG4gICAgLy8gSEEgMTlKQU4yNCBBY3Rpb24gY2hhbmdlc1xyXG4gICAgLy8gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXNcclxuICAgIHRoaXMuYW5zd2VyTGlzdCA9IFtdO1xyXG4gICAgdGhpcy5kYXRhQmluZCA9IFtdOyAvLyBIQSAxMkZFQjI0IENsZWFyaW5nIGRhdGFCaW5kIHVwb24gYnV0dG9uIGFjdGlvbiBzbyB0aGF0IGRhdGFCaW5kIHZhbHVlIHdpbGwgbm90IG92ZXJyaWRlIHRoZSBjaGFuZ2VkIHZhbHVlXHJcbiAgICBsZXQgZGF0YVRvUGFyZW50ID0ge307XHJcbiAgICBsZXQgdmFsaWRGb3JtID0gdHJ1ZTsgLy8gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXHJcbiAgICAvLyBIQSAyMkpBTjI0IHRoaXMgY2hhbmdlIHRvIG1ha2UgY2xvc2UgZXZlbnQgd29ya1xyXG4gICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9IGFjdGlvbi5ldmVudHRvZW1pdDtcclxuICAgIGlmKCEoYWN0aW9uLmV2ZW50dG9lbWl0ID09PSAnY2xvc2UnIHx8IGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jykpe1xyXG4gICAgICAvLyBIQSAxOC1KQU4tMjQgU2VuZGluZyB0aGUgY29tcGxldGUganNvbiBkYXRhIGFsc28gXHJcbiAgICAgIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCk7XHJcbiAgICAgIC8vIEhBIDE3SkFOMjQgbnh0SWQgdG8gZGF0YVBhcmVudCBvYmplY3RcclxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTil7XHJcbiAgICAgICAgZGF0YVRvUGFyZW50WydueHRJZCddID0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XHJcbiAgICAgIH1cclxuICAgICAgLy8gSEEgMTEtSkFOLTI0IE1pbmltaXppbmcgdGhlIHZhbHVlIHdoaWNoIGhhcyB0byBiZSBwYXNzZWQgdG8gdGhlIHNlcnZlclxyXG4gICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldChkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10pO1xyXG4gICAgICBkYXRhVG9QYXJlbnRbJ2RhdGEnXSA9IHRoaXMuYW5zd2VyTGlzdCA/IHRoaXMuYW5zd2VyTGlzdCA6IGRhdGFUb1BhcmVudFsnZGF0YSddO1xyXG4gICAgICAvLyB3aGVuIGNsaWNraW5nIHRoZSBzdWJtaXQgYnV0dG9uIHZhbGlkYXRpbmcgdGhlIHJlcXVpcmVkIGZpZWxkc1xyXG4gICAgICBmb3IobGV0IGtleSBpbiBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcCl7XHJcbiAgICAgICAgY29uc3QgY3VycmVudEJvb2sgID0gZGF0YVRvUGFyZW50Wydqc29uQm9vayddLmJvb2tRdWVzdGlvbnNNYXBba2V5XTtcclxuICAgICAgICBjdXJyZW50Qm9vay5zdWJRdWVzdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgLy8gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXHJcbiAgICAgICAgICBpZihlbGVtZW50LmlzT3B0aW9uYWwgJiYgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9PSAnc3VibWl0JyAmJiAoIWVsZW1lbnQuaW5wdXQgfHwgKEFycmF5LmlzQXJyYXkoZWxlbWVudC5pbnB1dCkgJiYgZWxlbWVudC5pbnB1dC5sZW5ndGggPT09IDApKSAmJiAhZWxlbWVudC5pc0hpZGRlbiAmJiBlbGVtZW50LnR5cGUgIT0gJ0xhYmVsJyAmJiBlbGVtZW50LnR5cGUgIT0gJ0ltYWdlJyApeyAvL1NLUzVOT1YyNSBcclxuICAgICAgICAgICAgZWxlbWVudC5lcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgIHZhbGlkRm9ybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0Q2hhbmdlKGVsZW1lbnQuaWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLy8gVkQgMDJBdWcyNCAtIGNsZWFyIGFjdGlvbiBjaGFuZ2VzXHJcbiAgICAgICAgICBpZihkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID09ICdjbGVhcicpe1xyXG4gICAgICAgICAgICBpZihlbGVtZW50LnR5cGUgPT0gJ0Ryb3Bkb3duJyB8fCBlbGVtZW50LnR5cGUgPT0gJ0xvY2F0aW9uJyB8fCBlbGVtZW50LnR5cGUgPT0gJ1JhZGlvJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgfWVsc2UgaWYoZWxlbWVudC50eXBlID09ICdGaWxlJyl7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9IFtdO1xyXG4gICAgICAgICAgICB9ZWxzZSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBWRCAxM01BWTI0IC0gcHJpbnQgUVIgYnV0dG9uIGNoYW5nZXNcclxuICAgIGlmKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jyl7XHJcbiAgICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uRGF0YSddID0gYWN0aW9uWydkYXRhJ107XHJcbiAgICB9XHJcbiAgICAvLyBIQSAyM0pBTjI0IFRvIGNhbGwgdGhlIGFjdGlvbiBvbiBhbnkgZXZlbnRcclxuICAgLy8gIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxyXG4gICAgaWYodmFsaWRGb3JtKXtcclxuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xyXG4gICAgfWVsc2Uge1xyXG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID0gJ2Vycm9yJztcclxuICAgICAgdGhpcy5oYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQuZW1pdChkYXRhVG9QYXJlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSEEgMTgtSkFOLTI0IGhhbmRsZUNvbXBsZXRlQm9va2xldCBpcyB0byBzaW1wbGlmeSB0aGUgbG9naWNcclxuICBoYW5kbGVDb21wbGV0ZUJvb2tsZXQoY29tcGxldGVCb29rbGV0KXtcclxuICAgIGlmKE9iamVjdC5rZXlzKGNvbXBsZXRlQm9va2xldD8uYm9va1F1ZXN0aW9uc01hcCA/PyB7fSkubGVuZ3RoID09PSAwKXsgLy8gSEEgMTEtSkFOLTI0IElmIGNvbmRpdGlvbiB0byBsb2FkIGJvb2tsZXRcclxuICAgICAgdGhpcy5oYW5kbGVCb29rKGNvbXBsZXRlQm9va2xldD8ucXVlc3Rpb25ib29rPy5zdWJRdWVzdGlvbnMpO1xyXG4gICAgfVxyXG4gICAgZWxzZXsgLy8gSEEgMTEtSkFOLTI0IFRvIGxvYWQgYm9vayBxdWVzdGlvbnNcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29tcGxldGVCb29rbGV0LmJvb2tRdWVzdGlvbnNNYXApIHtcclxuICAgICAgICBjb25zdCB2YWwgPSBjb21wbGV0ZUJvb2tsZXQuYm9va1F1ZXN0aW9uc01hcFtrZXldO1xyXG4gICAgICAgIGlmKHZhbC50eXBlID09PSAnQm9vaycpe1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVCb29rKHZhbC5zdWJRdWVzdGlvbnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVzKHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIQSAxMS1KQU4tMjQgaGFuZGxlQm9vayBsb2FkcyB0aGUgQm9va1xyXG4gIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXHJcbiAgaGFuZGxlQm9vayhxdWVzTGlzdDogYW55KXtcclxuICAgIHF1ZXNMaXN0Py5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdCb29rJyl7XHJcbiAgICAgICAgLy8gSEEgMjRKQU4yNCBGZXRjaGluZyBmcm9tIFFCIHJlZmVyZW5jZVxyXG4gICAgICAgIHZhciBib29rID0gSlNPTi5wYXJzZShlbGVtZW50LnFiUmVmZXJlbmNlUXVlc3Rpb25zKTtcclxuICAgICAgICBib29rLnF1ZXN0aW9uYm9vay5zdWJRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyhxdWVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcyhlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBWRCAxM1NlcDI0IC0gZGF0YWJpbmQgY2hhbmdlc1xyXG4gICAgLy8gVkQgMjMgT2N0MjQgLSBmaWxlIHR5cGUgY2hhbmdlc1xyXG4gICAgaWYodGhpcy5kYXRhQmluZCAmJiBPYmplY3Qua2V5cyh0aGlzLmRhdGFCaW5kKS5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmRhdGFDaGFuZ2VzKCdkYXRhQmluZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZVF1ZXMgdG8gbG9hZCBxdWVzdGlvblxyXG4gIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xyXG4gIGhhbmRsZVF1ZXMocXVlczogYW55KXtcclxuICAgIC8vIEhBIDE5LUpBTi0yNCBJZiBjb25kaXRpb24gaXMgZm9yIGJpbmQtaW4sIGNvcnJlY3Rpb25cclxuICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcclxuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XHJcbiAgICAgIGZvcihsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XHJcbiAgICAgICAgbGV0IHZhbHVlOmFueSA9IHZhbDtcclxuICAgICAgICBpZihxdWVzLnJlZmVyZW5jZUZpZWxkID09PSBrZXkpe1xyXG4gICAgICAgICAgaWYocXVlcy50eXBlID09PSAnRHJvcGRvd24nIHx8IHF1ZXMudHlwZSA9PT0gJ1JhZGlvJyApe1xyXG4gICAgICAgICAgICB0aGlzLnNxT3B0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ3JlZmVyZW5jZUZpZWxkJ10gPT09IGtleSl7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50WydpbnB1dCddID0gcXVlcy5pbnB1dCA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIEhBIDI0SkFOMjQgVG8gYmluZC1pbiBEYXRlIGFuZCBEYXRlVGltZVxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdEYXRlJyB8fCBxdWVzLnR5cGUgPT0gJ0RhdGVUaW1lJyl7XHJcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZT8udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBIQSAxMkZFQjI0IFRvIGJpbmQtaW4gTG9jYXRpb24gVHlwZVxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdMb2NhdGlvbicpe1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlWydhZGRyZXNzJ10gPyB2YWx1ZVsnYWRkcmVzcyddIDogdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdDYWxlbmRhcicpe1xyXG4gICAgICAgICAgICBsZXQgZW50cmllcyA9IEpTT04ucGFyc2UocXVlc1snZmllbGRzTWV0YSddKTtcclxuICAgICAgICAgICAgaWYoZW50cmllcyl7XHJcbiAgICAgICAgICAgICAgbGV0IHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgIGlmKGVudHJpZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlZmVyZW5jZVF1ZXN0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHZhbHVlPy5mb3JFYWNoKGNhbGVuZGFyQXJyYXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyQXJyYXkuZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJBcnJheS5lbnRyaWVzLmZvckVhY2goaW5wdXRFbnRyeT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRFbnRyeSkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQucmVmZXJlbmNlRmllbGQgPT0gayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdEYXRlJyB8fCBmaWVsZC50eXBlID09ICdEYXRlVGltZScgfHwgZmllbGQudHlwZSA9PSAnVGltZScpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSBuZXcgRGF0ZSh2Py50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1pZihmaWVsZC50eXBlID09PSAnRHJvcGRvd24nIHx8IGZpZWxkLnR5cGUgPT09ICdSYWRpbycpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5zZWxlY3RlZFZhbHVlID0gdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSB2O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IHY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50KGRhdGUscmVmZXJlbmNlUXVlc3Rpb25zKTsvL1NLUyAyN1NFUDI0IGVhY2ggZXZlbnQgYWRkZWQgdG8gYWxsRXZlbnRzIGFycmF5XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuYWRkRXZlbnQoZGF0ZSxyZWZlcmVuY2VRdWVzdGlvbnMpOyAvL3RoaXMgaXMgb25seSBsYXN0IGV2ZW50IGFkZGVkIHRvIGFsbEV2ZW50cyBhcnJheVxyXG4gICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdGhpcy5hbGxFdmVudHMubGVuZ3RoID4gMCA/IHRoaXMuYWxsRXZlbnRzIDogJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBWRCAyMyBPY3QyNCAtIGZpbGUgdHlwZSBjaGFuZ2VzXHJcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMudHlwZSA9PT0gJ0ZpbGUnKXtcclxuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IFtdO1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzKTsgLy8gSEEgMTJGRUIyNCBUbyBnaXZlIHRoZSB2YWx1ZSBmb3IgZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJyZWZlcmVuY2UgZmllbGQgbm90IGZvdW5kXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgY29uc3QgcXVlc3Rpb24gPSB7fTtcclxuICAgICAgcXVlc3Rpb25bJ2lkJ10gPSBxdWVzLmlkO1xyXG4gICAgICAvLyBxdWVzdGlvblsnUXVlc3Rpb25fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fX2M7XHJcbiAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dDtcclxuICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLW91dCBMb2NhdGlvbiBUeXBlXHJcbiAgICAgIGlmKHF1ZXMudHlwZSA9PT0gJ0xvY2F0aW9uJyl7XHJcbiAgICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0ID8gcXVlcy5pbnB1dCA6IHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgfWVsc2UgaWYocXVlcy50eXBlID09ICdGaWxlJyl7XHJcbiAgICAgICAgIC8vIFZEIDIzIE9jdDI0IC0gZmlsZSB0eXBlIGNoYW5nZXNcclxuICAgICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQgPyBxdWVzLmlucHV0IDogW107XHJcbiAgICAgIH1cclxuICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHF1ZXMudHlwZTtcclxuICAgICAgcXVlc3Rpb25bJ3F1ZXN0aW9uTnVtYmVyJ10gPSBxdWVzLnF1ZXN0aW9uTnVtYmVyO1xyXG4gICAgICBxdWVzdGlvblsncmVmZXJlbmNlRmllbGQnXSA9IHF1ZXM/LnJlZmVyZW5jZUZpZWxkO1xyXG4gICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxyXG4gIGFkZEV2ZW50KGRheTogYW55LCBlbnRyeVF1ZXMpIHtcclxuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxyXG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJ5UXVlcy5yZWR1Y2UoKGFjYywgcSkgPT4ge1xyXG4gICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCB7fSk7XHJcblxyXG4gICAgLy8gRmluZCBpZiBhbiBldmVudCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIGRhdGVcclxuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmRhdGUudG9EYXRlU3RyaW5nKCkgPT09IGRheS50b0RhdGVTdHJpbmcoKSk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcclxuICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZXhpc3RzLCBwdXNoIHRoZSBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRW50cmllcyA9IGV4aXN0aW5nRXZlbnQuZW50cmllcy5tYXAoZW50cnkgPT4gKHsgLi4uZW50cnkgfSkpO1xyXG4gICAgICAgIGV4aXN0aW5nRW50cmllcy5wdXNoKG5ld0VudHJpZXMpO1xyXG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGV2ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkYXRlXHJcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGlkOiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSksXHJcbiAgICAgICAgICAgIGRhdGU6IGRheSxcclxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFsbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcclxuICAgIC8vIEhBIDMxLUpBTi0yNCBBZGRlZCB0ZXJuYXJ5IHRvIGF2b2lkIHVuZGVmaW5lZFxyXG4gICAgZm9yKHZhciBzcSBpbiB0aGlzLmJvb2tRdWVzdGlvbnNNYXA/LmdldChxYklkKT8uc3ViUXVlc3Rpb25zKSB7XHJcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLnN1YlF1ZXN0aW9uc1tzcV07XHJcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xyXG4gICAgICBpZihxKXtcclxuICAgICAgICBpZigocS50eXBlID09ICdEcm9wZG93bicgfHwgcS50eXBlID09ICdSYWRpbycpICYmIHRoaXMuc3FPcHRpb25zLmdldChxLmlkKSkge1xyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2gocSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVkQgMTJKdW4yNCBmaWVsZCBwZXJtaXNpc2lvbiBjaGFuZ2VzXHJcbiAgICBpZiAodGhpcy5maWVsZFJlc3RyaWN0aW9ucykge1xyXG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcclxuICAgICAgcXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN0cmljdGlvbiA9IGZpZWxkUmVzdHJpY3Rpb25zLmdldChxdWVzLnVuaXF1ZUlkZW50aWZpZXIpO1xyXG4gIFxyXG4gICAgICAgICAgaWYgKHJlc3RyaWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcXVlcy5pc1JlYWRPbmx5ID0gcmVzdHJpY3Rpb24gPT09ICdyZWFkT25seSc7XHJcbiAgICAgICAgICAgICAgcXVlcy5pc0hpZGRlbiA9IHJlc3RyaWN0aW9uID09PSAnaGlkZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAgIHJldHVybiBxdWVzdGlvbnM7XHJcbiAgfVxyXG4gLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcclxuICByZWFkVHJhbnNRdWVzdGlvbnMocWJJZDogc3RyaW5nKXtcclxuICAgIGxldCByZWNvcmQgPSBbXTtcclxuICAgICAgbGV0IHRyYW5zbGF0ZVJlY29yZCA9IHRoaXMudHJhbnNsYXRlTWFwLmdldChxYklkKTtcclxuICAgICBpZih0cmFuc2xhdGVSZWNvcmQgJiYgdHJhbnNsYXRlUmVjb3JkLmxlbmd0aCA+IDApIHtcclxuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcclxuICAgICAgICBpZihsYW5SZWMubGFuZ3VhZ2VDb2RlID09IHRoaXMubGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICByZWNvcmQgPSBsYW5SZWMuZmllbGRzXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICB9XHJcbiAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0KHZhbHVlKSB7XHJcbiAgICB2YXIgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgXCJ0ZXh0L2h0bWxcIik7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXHJcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcclxuICAgICk7XHJcbiAgfVxyXG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLmhhZGxlRHJvcERvd25EZXBlbmRlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXHJcbiAgZ2V0Q2FsZW5kYXJEYXRlKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRGF0ZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgZ2V0Q2FsZW5kYXJFdmVudChldmVudDphbnkpe1xyXG4gICAgZXZlbnRbXCJueHRJZFwiXT0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XHJcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZ3gtc3Bpbm5lciBzaXplPVwibWVkaXVtXCIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XHJcbjwhLS0gQm9va2xldCBIYW5kbGluZy0tPlxyXG48IS0tIEhBIDE5REVDMjMgRm9yIERpcmVjdGlvbiAtLT5cclxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cclxuICAgIDwhLS0gTVIgQ29tbWVudGVkIGJlbG93IGNvZGUgdG8gZW5zdXJlIHNpbmdsZSBKU09OIGZvciBVTkNPTkRJVElPTkFMIEJvb2tsZXRzIC0tPlxyXG4gICAgPCEtLSBSUyAwOURFQzI0IENoYW5nZWQga2V5cy0tPiBcclxuICAgIDwhLS0gPGxpYi1xdWVzdGlvbm5haXJlIFtzZXJ2XT1cInNlcnZcIiBbcWJJZF09XCJxYi5pZFwiIFt0a25dPVwidGtuXCI+PC9saWItcXVlc3Rpb25uYWlyZT4gLS0+XHJcbiAgICA8IS0tIEhBIDI4REVDMjMgQmVsb3cgSWYgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tsZXQgIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInFiLnN1YlF1ZXN0aW9uczsgZWxzZSBlbHNlQmxvY2tcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzIG9mIHFiLnN1YlF1ZXN0aW9uc1wiIGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEhBIDE3SkFOMjQgLSBJcyB0aXRsZSBpcyBlbmFibGVkIHNvIHRoYXQgYmFzZWQgb24gdGhlIGJvb2xlYW4gZGl2IHdpbGwgYmUgdmlzaWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLmlzVGl0bGVcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOE5PVjIzIC0gc2hvd2luZyBsYWJsZSB3aGVuIGl0cyBhdmFpbGFibGUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxdWVzPy5xdWVzdGlvblRleHQpXCIgKm5nSWY9XCJxdWVzPy5xdWVzdGlvblRleHRcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzPy5xdWVzdGlvblRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cclxuICAgICAgICAgICAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMtLT4gXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICBbcXVlc3Rpb25JdGVtXT1cInF1ZXNcIiBcclxuICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5pZClcIiBcclxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5pZClcIiAgXHJcbiAgICAgICAgICAgICAgICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoaGFuZGxlQ2FsZW5kYXJEYXRlKT1cImdldENhbGVuZGFyRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckV2ZW50KT1cImdldENhbGVuZGFyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saWItcXVlc3Rpb25ib29rPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBIQSAyOERFQzIzIEJlbG93IGVsc2UgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tzIG9yIHF1ZXN0aW9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbmRpdjFcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcWIuaXNUaXRsZVwiIFtjbGFzc109XCJxYi5pc1NoZW5nZWwgPyAnaGVhZGVyLXN0eWxlJyA6ICdxdWVzdGlvbi1mLXNpemUgYWRkaXRpb25hbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHFiPy5xdWVzdGlvblRleHQpXCIgKm5nSWY9XCJxYj8ucXVlc3Rpb25UZXh0XCIgPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LnF1ZXN0aW9uVGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxYj8udGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlwiIFt0b2tlbl09XCJ0b2tlblwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25JdGVtXT1cInFiXCIgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLmlkKVwiIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5pZClcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbjwhLS0gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXMtLT4gXHJcbjwhLS0gR3JvdXAgQWN0aW9ucyAtLT5cclxuPCEtLSBIQSAxOURFQzIzIEZvciBEaXJlY3Rpb24gLS0+XHJcbjxkaXYgY2xhc3M9XCJhbGlnbi1zdWJtaXQtcm93XCIgKm5nSWY9XCJhYkl0ZW0/LnN0YXR1cyAhPSAnQ29tcGxldGVkJ1wiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8IS0tIC8vIEhBIDIySkFOMjQgQ29tbW9uaXNlIHRoZSBidXR0b24gc3R5bGUgaW4gZnVzaW9uIC0tPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUJvb2tsZXRBY3Rpb25DbGljayhhY3Rpb24pXCIgbmdDbGFzcz1cImJ0biBidG4tcHJpbWFyeSBmYy1idXR0b24gbnh0QnV0dG9uXCI+XHJcbiAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
541
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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Q0osQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNGLDhCQUE4QjtJQUM3QixlQUFlLENBQUMsS0FBUztRQUN2QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxLQUFTO1FBQ3hCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7dUdBdmdCVSxnQkFBZ0I7MkZBQWhCLGdCQUFnQiw2akJDN0I3Qiw0NkdBMERBOzsyRkQ3QmEsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7c1NBS2QsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNJLHdCQUF3QjtzQkFBakMsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQWdCRSxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgT25Jbml0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBJbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBFbGVtZW50UmVmLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU2FsZXNmb3JjZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2FsZXNmb3JjZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XHJcbmltcG9ydCB7IEFjdGlvbk1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbk1ldGEnO1xyXG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gXCIuLi8uLi93cmFwcGVyXCI7XHJcbmltcG9ydCB7IEJvb2tsZXRXcmFwcGVyIH0gZnJvbSBcIi4uLy4uL21vZGVsL2Jvb2tsZXRXcmFwcGVyXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZVwiO1xyXG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcclxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vaTE4bi5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1ib29rbGV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2xldC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYm9va2xldC5jb21wb25lbnQuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJvb2tsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGJvb2tsZXRJZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNlcnY6IHN0cmluZztcclxuICBASW5wdXQoKSB0a246IHN0cmluZztcclxuICBASW5wdXQoKSBib29rbGV0SlNPTjogYW55O1xyXG4gIEBJbnB1dCgpIGRyb3Bkb3duRGVwZW5kZW50RGF0YTphbnk7XHJcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7XHJcbiAgQElucHV0KCkgdG9rZW46c3RyaW5nO1xyXG4gIEBJbnB1dCgpIGxhbmd1YWdlQ29kZTpzdHJpbmc7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xyXG4gIEBJbnB1dCgpIGZpZWxkUmVzdHJpY3Rpb25zOiBhbnk7IC8vIFZEIDEySnVuMjQgLSBmaWVsZCBwZXJtaXNzaW9uIGNoYW5nZVxyXG4gIEBPdXRwdXQoKSBoYW5kbGVCb29rbGV0QWN0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoYW5kbGVQYWdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xyXG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHVibGljIG54dEJvb2tsZXQ6IEJvb2tsZXRXcmFwcGVyO1xyXG5cclxuICBwdWJsaWMgYm9va2xldDogYW55W10gPSBbXTtcclxuICBwdWJsaWMgYWJJdGVtOiBhbnkgPSB7fTtcclxuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uTWV0YVtdID0gW107XHJcbiAgcHVibGljIGJvb2tRdWVzdGlvbnNNYXA6IGFueSA9IG5ldyBNYXAoKTtcclxuICBwdWJsaWMgdHJhbnNsYXRlTWFwOiBhbnkgPSBuZXcgTWFwKCk7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xyXG4gIHByaXZhdGUgc3FPcHRpb25zOiBhbnkgPSBuZXcgTWFwKCk7XHJcbiAgcHVibGljIGlzQW5zd2VyRmxhZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzcGlubmVyTmFtZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBzcGlubmVyVHlwZTogc3RyaW5nO1xyXG4gIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSBpcyBjcmVhdGVkIHRvIGFzc2lnbiB0aGUgZGlyZWN0aW9uIGFzIGNsYXNzXHJcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInOyAvLyBIQSAyOERFQzIzIG1ha2luZyBsdHIgYXMgZGVmYXVsdCBkaXJlY3Rpb25cclxuICBhbnN3ZXJMaXN0ID0gW107IC8vIEhBIDExLUpBTi0yNCBBbnN3ZXJsaXN0IHRvIHN0b3JlIHRoZSBtaW5pbWFsIHZhbHVlXHJcbiAgQElucHV0KCkgZGF0YUJpbmQ6YW55Oy8vIEhBIDE4LUpBTi0yNCBUbyBpbnNlcnQgdGhlIGVuZHBvaW50IHZhbHVlIHRvIHRoZSBxdWVzdGlvblxyXG4gIGFsbEV2ZW50czphbnlbXT1bXTsgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xyXG4gIFxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcclxuICAgIHByaXZhdGUgY2hhbmdlU2VydmljZTogQ2hhbmdlU2VydmljZSwgXHJcbiAgICBlbDogRWxlbWVudFJlZixcclxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2VcclxuICApIHsgXHJcbiAgICB0aGlzLnNwaW5uZXJOYW1lID0gXCJzcDFcIjtcclxuICAgIHRoaXMuc3Bpbm5lclR5cGUgPSBcImJhbGwtc3Bpbi1jbG9ja3dpc2VcIjtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4vLyAgVkQgMTJKYW4yNCBmaWVsZFJlc3RyaWN0aW9ucyBmb3JtYXRlIFxyXG4gIC8vICAge1xyXG4gIC8vICAgICBcImZpZWxkc1wiIDoge1xyXG4gIC8vICAgICAgICAgXCJ0cmFuc1FiLTAxXCIgOiBcInJlYWRPbmx5XCIsXHJcbiAgLy8gICAgICAgICBcIlRyYW5zRmlyMDJcIiA6IFwiXCIsXHJcbiAgLy8gICAgICAgICBcIlRyYW5zTGFzdDAzXCIgOiBcInJlYWRPbmx5XCIsXHJcbiAgLy8gICAgICAgICBcImJrMi1xMlwiIDogXCJoaWRlXCJcclxuICAvLyAgICAgfVxyXG4gIC8vICB9XHJcblxyXG4gICAgLy8gSEEgMTgtSkFOLTI0IER1bW15IFN0YXRpYyBkYXRhIGZvciB0ZXN0aW5nXHJcbiAgICAvLyB0aGlzLmRhdGFCaW5kID0ge1xyXG4gICAgLy8gICBcIl9pZFwiOiBcIjY1OWVkMDAyZWQ1MWJiODA2MTU0NDI1NVwiLFxyXG4gICAgLy8gICBcImNvbXBhbnlJZFwiOiBcIjV1bGxoMUJXcFlxbnZ6S2g5TFwiLFxyXG4gICAgLy8gICBcIm5hbWVcIjogXCJBbCBZYXNtaW5lXCIsXHJcbiAgICAvLyAgIFwiY29kZVwiOiBcImNoZWNrXCIsXHJcbiAgICAvLyAgIFwic3RhdHVzXCI6IFwiSW4tUHJvZ3Jlc3NcIixcclxuICAgIC8vICAgXCJjcmVhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE3OjEyOjM0LjY4NlpcIixcclxuICAgIC8vICAgXCJ1cGRhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE5OjUzOjA4LjEzNVpcIixcclxuICAgIC8vICAgXCJfX3ZcIjogMCxcclxuICAgIC8vICAgXCJvd25lclwiOiBcImNoZWNrXCIsXHJcbiAgICAvLyAgIFwiY3VzdG9tZXJcIjogXCJjaGVja1wiLFxyXG4gICAgLy8gICBcImRhdGlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcclxuICAgIC8vICAgXCJ0aW1pXCI6IFwiMjAyNC0wMS0yM1QxODozMDowMC4wMDBaXCIsXHJcbiAgICAvLyBcImZOYW1lXCI6IFwiSGFpZGVyXCIsXHJcbiAgICAvLyBcImxOYW1lXCI6IFwiQWxpXCIsXHJcbiAgICAvLyBcImRlZmF1bHRBcHBcIjogXCJOWFRcIixcclxuICAgIC8vIFwiZW1haWxcIjogXCJoYWlkZXJAZ21haWwuY29tXCIsXHJcbiAgICAvLyBcImxvY2F0aW9uXCI6IHthZGRyZXNzOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcclxuICAgIC8vICAgbGF0aXR1ZGU6IDEzLjAyMDA1NzUsXHJcbiAgICAvLyAgIGxvbmdpdHVkZTogNzcuNjEyOTgxNn0sXHJcbiAgICAvLyBcImxvY2F0aW9uXCI6IFwiMTA3LCBBc2hvayBOYWdhciwgS2FkdWdvbmRhbmFoYWxsaSwgQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDQ1LCBJbmRpYVwiLFxyXG4gICAgLy8gXCJ0ZXh0QXJlYVwiOiBcIkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bVwiLFxyXG4gICAgLy8gfTtcclxuICAgICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XHJcbiAgfVxyXG4gLy8gVkQgTk9WMjMgLSB1cGRhdGUgdGhlIGpzb24gZGF0YSB3aGVuIGJvb2tsZXRJZCBhbmQgYm9va2xldEpTT04gY2hhbmdlc1xyXG4gIG5nT25DaGFuZ2VzKHNpbXBsZWNoYW5nZXM6U2ltcGxlQ2hhbmdlcykge1xyXG4gICAvLyBIQSAyM0pBTjI0IFRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxyXG4gICBpZihzaW1wbGVjaGFuZ2VzWydib29rbGV0SWQnXSB8fCAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXSAmJiAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSB8fCAoc2ltcGxlY2hhbmdlc1snZGF0YUJpbmQnXSAmJiAoc2ltcGxlY2hhbmdlc1snZGF0YUJpbmQnXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSApe1xyXG4gICAgICB0aGlzLmFsbEV2ZW50cyA9IFtdO1xyXG4gICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XHJcbiAgICB9XHJcbiAgICAvLyBpZih0aGlzLmJvb2tsZXQgPT0gdW5kZWZpbmVkIHx8IHRoaXMuYm9va2xldC5sZW5ndGggPT0gMCkge1xyXG4gICAgLy8gICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcm9jZXNzQm9va2xldCgpIHtcclxuICAgIGlmICh0aGlzLmJvb2tsZXRJZCkge1xyXG4gICAgICBpZiAodGhpcy5ib29rbGV0SWQubGVuZ3RoID09IDE4KSB7XHJcbiAgICAgICAgdGhpcy5yZWFkQm9va2xldCh0aGlzLmJvb2tsZXRJZCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZih0aGlzLmJvb2tsZXRKU09OKSB7XHJcbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcclxuICAgICAgdGhpcy5pc0Fuc3dlckZsYWcgPSB0cnVlO1xyXG5cclxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTiAhPSBudWxsIHx8IHRoaXMuYm9va2xldEpTT04gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAvLyBTdG9yaW5nIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGZ1dHVyZSB1c2VcclxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2F2ZSh0aGlzLmJvb2tsZXRKU09OKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5ib29rbGV0ID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzO1xyXG4gICAgICB0aGlzLmFiSXRlbSA9IHRoaXMuYm9va2xldEpTT04uYW5zd2VyYm9vaztcclxuXHJcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcclxuICAgICAgZm9yICh2YXIgc3EgaW4gdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHRoaXMuYm9va2xldEpTT04uc3FPcHRpb25zW3NxXSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFF1ZXN0aW9uc1xyXG4gICAgICAvLyBIQSAyOERFQzIzIHRoaXMgYXBwbGllcyBmb3IgYm9va2xldFxyXG4gICAgICAvLyBIQSAxN0pBTjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgdG8gYXZvaWQgdW5kZWZpbmVkIHNjZW5hcmlvXHJcbiAgICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcclxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcCAmJiBPYmplY3Qua2V5cyh0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwKS5sZW5ndGggPiAwKXtcclxuICAgICAgICBmb3IgKHZhciB2YWx1ZSBpbiB0aGlzLmJvb2tsZXRKU09OLmJvb2tRdWVzdGlvbnNNYXApIHtcclxuICAgICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBIQSAyOERFQzIzIHRoaXMgYXBwbGllcyBmb3IgYm9vayBvciBxdWVzdGlvbnNcclxuICAgICAgZWxzZXtcclxuICAgICAgICB2YXIgdmFsdWUgPSAnJztcclxuICAgICAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcclxuICAgICAgICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gICAgICAgIHZhbHVlID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzWzBdPy5pZDtcclxuICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vayk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgICAvLyBWRCAyMEp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xyXG4gICAgICAgZm9yICh2YXIgdmFsdWUgaW4gdGhpcy5ib29rbGV0SlNPTj8udHJhbnNsYXRpb25NYXApIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04udHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcclxuICAgICAgfVxyXG4gICAgIC8vIFZEIDMxTk9WMjQgd3JhcHBlciBjaGFuZ2VzXHJcbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rPy5hY3Rpb24gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZSh0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5hY3Rpb24pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgdmFsdWUgYXNzaWduaW5nXHJcbiAgICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gICAgaWYodGhpcy5ib29rbGV0SlNPTj8ucXVlc3Rpb25ib29rPy5zdHlsZSl7XHJcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LnN0eWxlKSkpO1xyXG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmJvb2tsZXRKU09OPy5yZWNvcmRzWzBdPy5zdHlsZSl7XHJcbiAgICAvLyBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LnN0eWxlKXtcclxuXHJcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uc3R5bGUpKTtcclxuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIQSAxOC1KQU4tMjQgVGhlIGNvbmRpdGlvbiBpcyB1c2VkIGZvciBCaW5kLUluIExvZ2ljIFxyXG4gICAgdGhpcy5oYW5kbGVDb21wbGV0ZUJvb2tsZXQodGhpcy5ib29rbGV0SlNPTik7IFxyXG4gIH1cclxuIC8vIFZEIDEySnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXHJcbiAgcHJpdmF0ZSByZWFkQm9va2xldCA9ICh1dWlkOiBzdHJpbmcpID0+IHtcclxuICAgIGlmKHRoaXMuc2VydiA9PSBcImFwaVwiKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QVBJRGF0YShcclxuICAgICAgICB0aGlzLnRrbixcclxuICAgICAgICBbXCJCb29rbGV0XCIsIFwicmVhZFwiLCB1dWlkLHRoaXMubGFuZ3VhZ2VDb2RlXSxcclxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcclxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gVkQgMzFOT1YyNCBwYXJhbSBjaGFuZ2VzIHdpdGggbmV3IG1ldGhvZFxyXG4gICAgICBsZXQgcGFyYW1NYXAgPSB7IGNyZWF0ZUFuc3dlckJvb2tGbGFnOiBmYWxzZSB9O1xyXG4gICAgICBwYXJhbU1hcFsnY19fcWJfaWQnXSA9ICcnO1xyXG4gICAgICBwYXJhbU1hcFtcImNfX3JlY29yZF9pZFwiXSA9ICcnO1xyXG4gICAgICBsZXQgcGFyYSA9IHtcclxuICAgICAgICBkYXRhVHlwZTogXCJCb29rbGV0XCIsXHJcbiAgICAgICAgb3BlcmF0aW9uOiBcInJlYWRcIixcclxuICAgICAgICBwYXJhbTE6IHV1aWQsXHJcbiAgICAgICAgcGFyYW1KU09OOiBKU09OLnN0cmluZ2lmeShwYXJhbU1hcCksXHJcbiAgICAgICAgbGFuZ3VhZ2VDb2RlIDogdGhpcy5sYW5ndWFnZUNvZGVcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNmU2VydmljZS5yZW1vdGVBY3Rpb24oXHJcbiAgICAgICAgXCJOeHRDb250cm9sbGVyLnByb2Nlc3NEYXRhXCIsXHJcbiAgICAgICAgW0pTT04uc3RyaW5naWZ5KHBhcmEpXSxcclxuICAgICAgICB0aGlzLnN1Y2Nlc3NSZWFkQm9va2xldCxcclxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdWNjZXNzUmVhZEJvb2tsZXQgPSAocmVzcG9uc2UpID0+IHtcclxuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhlIHN1Y2Nlc3NSZWFkQm9va2xldCcpO1xyXG4gICAgaWYocmVzcG9uc2UgIT0gbnVsbCB8fCByZXNwb25zZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2F2ZShyZXNwb25zZSk7XHJcblxyXG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXHJcbiAgICAgIC8vIHRoaXMuaXNBbnN3ZXJGbGFnID0gdHJ1ZTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuYm9va2xldCA9IHJlc3BvbnNlLnJlY29yZHM7XHJcbiAgICAgIHRoaXMuYWJJdGVtID0gcmVzcG9uc2UuYW5zd2VyYm9vaztcclxuICAgICAgXHJcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcclxuICAgICAgZm9yICh2YXIgc3EgaW4gcmVzcG9uc2Uuc3FPcHRpb25zKSB7XHJcbiAgICAgICAgdGhpcy5zcU9wdGlvbnMuc2V0KHNxLCByZXNwb25zZS5zcU9wdGlvbnNbc3FdKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUHJvY2VzcyB0aGUgUXVlc3Rpb25zXHJcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXApIHtcclxuICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCByZXNwb25zZS5ib29rUXVlc3Rpb25zTWFwW3ZhbHVlXSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcclxuICAgICAgZm9yICh2YXIgdmFsdWUgaW4gcmVzcG9uc2UudHJhbnNsYXRpb25NYXApIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XHJcbiAgICAgIH1cclxuICAgICAgIC8vIFZEIDMxTk9WMjQgd3JhcHBlciBjaGFuZ2VzXHJcbiAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9uYm9vaz8uYWN0aW9uICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuYWN0aW9ucyA9IEpTT04ucGFyc2UocmVzcG9uc2UucXVlc3Rpb25ib29rLmFjdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcclxuICAgIGlmKHJlc3BvbnNlPy5xdWVzdGlvbmJvb2s/LnN0eWxlKXtcclxuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlc3BvbnNlPy5xdWVzdGlvbmJvb2s/LnN0eWxlKSkpO1xyXG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihyZXNwb25zZT8ucmVjb3Jkc1swXT8uc3R5bGUpe1xyXG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnJlY29yZHNbMF0/LnN0eWxlKSkpO1xyXG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmYWlsdXJlUmVhZEJvb2tsZXQgPSAocmVzcG9uc2UpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uOkFjdGlvbk1ldGEpIHtcclxuICAgIC8vIEhBIDE5SkFOMjQgQWN0aW9uIGNoYW5nZXNcclxuICAgIC8vIFJTIDA5REVDMjQgQ2hhbmdlZCBrZXlzXHJcbiAgICB0aGlzLmFuc3dlckxpc3QgPSBbXTtcclxuICAgIHRoaXMuZGF0YUJpbmQgPSBbXTsgLy8gSEEgMTJGRUIyNCBDbGVhcmluZyBkYXRhQmluZCB1cG9uIGJ1dHRvbiBhY3Rpb24gc28gdGhhdCBkYXRhQmluZCB2YWx1ZSB3aWxsIG5vdCBvdmVycmlkZSB0aGUgY2hhbmdlZCB2YWx1ZVxyXG4gICAgbGV0IGRhdGFUb1BhcmVudCA9IHt9O1xyXG4gICAgbGV0IHZhbGlkRm9ybSA9IHRydWU7IC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxyXG4gICAgLy8gSEEgMjJKQU4yNCB0aGlzIGNoYW5nZSB0byBtYWtlIGNsb3NlIGV2ZW50IHdvcmtcclxuICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPSBhY3Rpb24uZXZlbnR0b2VtaXQ7XHJcbiAgICBpZighKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ2Nsb3NlJyB8fCBhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpKXtcclxuICAgICAgLy8gSEEgMTgtSkFOLTI0IFNlbmRpbmcgdGhlIGNvbXBsZXRlIGpzb24gZGF0YSBhbHNvIFxyXG4gICAgICBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10gPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldCgpO1xyXG4gICAgICAvLyBIQSAxN0pBTjI0IG54dElkIHRvIGRhdGFQYXJlbnQgb2JqZWN0XHJcbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04pe1xyXG4gICAgICAgIGRhdGFUb1BhcmVudFsnbnh0SWQnXSA9IE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApWzBdO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIEhBIDExLUpBTi0yNCBNaW5pbWl6aW5nIHRoZSB2YWx1ZSB3aGljaCBoYXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBzZXJ2ZXJcclxuICAgICAgdGhpcy5oYW5kbGVDb21wbGV0ZUJvb2tsZXQoZGF0YVRvUGFyZW50Wydqc29uQm9vayddKTtcclxuICAgICAgZGF0YVRvUGFyZW50WydkYXRhJ10gPSB0aGlzLmFuc3dlckxpc3QgPyB0aGlzLmFuc3dlckxpc3QgOiBkYXRhVG9QYXJlbnRbJ2RhdGEnXTtcclxuICAgICAgLy8gd2hlbiBjbGlja2luZyB0aGUgc3VibWl0IGJ1dHRvbiB2YWxpZGF0aW5nIHRoZSByZXF1aXJlZCBmaWVsZHNcclxuICAgICAgZm9yKGxldCBrZXkgaW4gZGF0YVRvUGFyZW50Wydqc29uQm9vayddLmJvb2tRdWVzdGlvbnNNYXApe1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRCb29rICA9IGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwW2tleV07XHJcbiAgICAgICAgY3VycmVudEJvb2suc3ViUXVlc3Rpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgIC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxyXG4gICAgICAgICAgaWYoZWxlbWVudC5pc09wdGlvbmFsICYmIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ3N1Ym1pdCcgJiYgKCFlbGVtZW50LmlucHV0IHx8IChBcnJheS5pc0FycmF5KGVsZW1lbnQuaW5wdXQpICYmIGVsZW1lbnQuaW5wdXQubGVuZ3RoID09PSAwKSkgJiYgIWVsZW1lbnQuaXNIaWRkZW4gJiYgZWxlbWVudC50eXBlICE9ICdMYWJlbCcgJiYgZWxlbWVudC50eXBlICE9ICdJbWFnZScgKXsgLy9TS1M1Tk9WMjUgXHJcbiAgICAgICAgICAgIGVsZW1lbnQuZXJyb3IgPSB0cnVlO1xyXG4gICAgICAgICAgICB2YWxpZEZvcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLnN1Ym1pdENoYW5nZShlbGVtZW50LmlkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIFZEIDAyQXVnMjQgLSBjbGVhciBhY3Rpb24gY2hhbmdlc1xyXG4gICAgICAgICAgaWYoZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9PSAnY2xlYXInKXtcclxuICAgICAgICAgICAgaWYoZWxlbWVudC50eXBlID09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09ICdMb2NhdGlvbicgfHwgZWxlbWVudC50eXBlID09ICdSYWRpbycpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKGVsZW1lbnQudHlwZSA9PSAnRmlsZScpe1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSBbXTtcclxuICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gVkQgMTNNQVkyNCAtIHByaW50IFFSIGJ1dHRvbiBjaGFuZ2VzXHJcbiAgICBpZihhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpe1xyXG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbkRhdGEnXSA9IGFjdGlvblsnZGF0YSddO1xyXG4gICAgfVxyXG4gICAgLy8gSEEgMjNKQU4yNCBUbyBjYWxsIHRoZSBhY3Rpb24gb24gYW55IGV2ZW50XHJcbiAgIC8vICBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcclxuICAgIGlmKHZhbGlkRm9ybSl7XHJcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcclxuICAgIH1lbHNlIHtcclxuICAgICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9ICdlcnJvcic7XHJcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIEhBIDE4LUpBTi0yNCBoYW5kbGVDb21wbGV0ZUJvb2tsZXQgaXMgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljXHJcbiAgaGFuZGxlQ29tcGxldGVCb29rbGV0KGNvbXBsZXRlQm9va2xldCl7XHJcbiAgICBpZihPYmplY3Qua2V5cyhjb21wbGV0ZUJvb2tsZXQ/LmJvb2tRdWVzdGlvbnNNYXAgPz8ge30pLmxlbmd0aCA9PT0gMCl7IC8vIEhBIDExLUpBTi0yNCBJZiBjb25kaXRpb24gdG8gbG9hZCBib29rbGV0XHJcbiAgICAgIHRoaXMuaGFuZGxlQm9vayhjb21wbGV0ZUJvb2tsZXQ/LnF1ZXN0aW9uYm9vaz8uUXVlc3Rpb25zX19yKTtcclxuICAgIH1cclxuICAgIGVsc2V7IC8vIEhBIDExLUpBTi0yNCBUbyBsb2FkIGJvb2sgcXVlc3Rpb25zXHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGNvbXBsZXRlQm9va2xldC5ib29rUXVlc3Rpb25zTWFwKSB7XHJcbiAgICAgICAgY29uc3QgdmFsID0gY29tcGxldGVCb29rbGV0LmJvb2tRdWVzdGlvbnNNYXBba2V5XTtcclxuICAgICAgICBpZih2YWwudHlwZSA9PT0gJ0Jvb2snKXtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlQm9vayh2YWwuUXVlc3Rpb25zX19yKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZUJvb2sgbG9hZHMgdGhlIEJvb2tcclxuICAvLyBSUyAwOURFQzI0IENoYW5nZWQga2V5c1xyXG4gIGhhbmRsZUJvb2socXVlc0xpc3Q6IGFueSl7XHJcbiAgICBxdWVzTGlzdD8ucmVjb3Jkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBpZihlbGVtZW50LnR5cGUgPT09ICdCb29rJyl7XHJcbiAgICAgICAgLy8gSEEgMjRKQU4yNCBGZXRjaGluZyBmcm9tIFFCIHJlZmVyZW5jZVxyXG4gICAgICAgIHZhciBib29rID0gSlNPTi5wYXJzZShlbGVtZW50LnFiUmVmZXJlbmNlUXVlc3Rpb25zKTtcclxuICAgICAgICBib29rLnF1ZXN0aW9uYm9vay5zdWJRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlUXVlcyhxdWVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNle1xyXG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcyhlbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBWRCAxM1NlcDI0IC0gZGF0YWJpbmQgY2hhbmdlc1xyXG4gICAgLy8gVkQgMjMgT2N0MjQgLSBmaWxlIHR5cGUgY2hhbmdlc1xyXG4gICAgaWYodGhpcy5kYXRhQmluZCAmJiBPYmplY3Qua2V5cyh0aGlzLmRhdGFCaW5kKS5sZW5ndGggPiAwKXtcclxuICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmRhdGFDaGFuZ2VzKCdkYXRhQmluZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZVF1ZXMgdG8gbG9hZCBxdWVzdGlvblxyXG4gIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xyXG4gIGhhbmRsZVF1ZXMocXVlczogYW55KXtcclxuICAgIC8vIEhBIDE5LUpBTi0yNCBJZiBjb25kaXRpb24gaXMgZm9yIGJpbmQtaW4sIGNvcnJlY3Rpb25cclxuICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcclxuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XHJcbiAgICAgIGZvcihsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XHJcbiAgICAgICAgbGV0IHZhbHVlOmFueSA9IHZhbDtcclxuICAgICAgICBpZihxdWVzLnJlZmVyZW5jZUZpZWxkID09PSBrZXkpe1xyXG4gICAgICAgICAgaWYocXVlcy50eXBlID09PSAnRHJvcGRvd24nIHx8IHF1ZXMudHlwZSA9PT0gJ1JhZGlvJyApe1xyXG4gICAgICAgICAgICB0aGlzLnNxT3B0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ3JlZmVyZW5jZUZpZWxkJ10gPT09IGtleSl7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50WydpbnB1dCddID0gcXVlcy5pbnB1dCA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIC8vIEhBIDI0SkFOMjQgVG8gYmluZC1pbiBEYXRlIGFuZCBEYXRlVGltZVxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdEYXRlJyB8fCBxdWVzLnR5cGUgPT0gJ0RhdGVUaW1lJyl7XHJcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZT8udG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBIQSAxMkZFQjI0IFRvIGJpbmQtaW4gTG9jYXRpb24gVHlwZVxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdMb2NhdGlvbicpe1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlWydhZGRyZXNzJ10gPyB2YWx1ZVsnYWRkcmVzcyddIDogdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxyXG4gICAgICAgICAgZWxzZSBpZihxdWVzLnR5cGUgPT09ICdDYWxlbmRhcicpe1xyXG4gICAgICAgICAgICBsZXQgZW50cmllcyA9IEpTT04ucGFyc2UocXVlc1snZmllbGRzTWV0YSddKTtcclxuICAgICAgICAgICAgaWYoZW50cmllcyl7XHJcbiAgICAgICAgICAgICAgbGV0IHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgIGlmKGVudHJpZXMubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgcVJlZmVyZW5jZSA9IEpTT04ucGFyc2UoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHJlZmVyZW5jZVF1ZXN0aW9ucy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHZhbHVlPy5mb3JFYWNoKGNhbGVuZGFyQXJyYXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyQXJyYXkuZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJBcnJheS5lbnRyaWVzLmZvckVhY2goaW5wdXRFbnRyeT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoaW5wdXRFbnRyeSkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQucmVmZXJlbmNlRmllbGQgPT0gayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLnR5cGUgPT09ICdEYXRlJyB8fCBmaWVsZC50eXBlID09ICdEYXRlVGltZScgfHwgZmllbGQudHlwZSA9PSAnVGltZScpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSBuZXcgRGF0ZSh2Py50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1pZihmaWVsZC50eXBlID09PSAnRHJvcGRvd24nIHx8IGZpZWxkLnR5cGUgPT09ICdSYWRpbycpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5zZWxlY3RlZFZhbHVlID0gdjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSB2O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IHY7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50KGRhdGUscmVmZXJlbmNlUXVlc3Rpb25zKTsvL1NLUyAyN1NFUDI0IGVhY2ggZXZlbnQgYWRkZWQgdG8gYWxsRXZlbnRzIGFycmF5XHJcbiAgICAgICAgICAgICAgICAgICAgfSkgIFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuYWRkRXZlbnQoZGF0ZSxyZWZlcmVuY2VRdWVzdGlvbnMpOyAvL3RoaXMgaXMgb25seSBsYXN0IGV2ZW50IGFkZGVkIHRvIGFsbEV2ZW50cyBhcnJheVxyXG4gICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdGhpcy5hbGxFdmVudHMubGVuZ3RoID4gMCA/IHRoaXMuYWxsRXZlbnRzIDogJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyBWRCAyMyBPY3QyNCAtIGZpbGUgdHlwZSBjaGFuZ2VzXHJcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMudHlwZSA9PT0gJ0ZpbGUnKXtcclxuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IFtdO1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzKTsgLy8gSEEgMTJGRUIyNCBUbyBnaXZlIHRoZSB2YWx1ZSBmb3IgZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJyZWZlcmVuY2UgZmllbGQgbm90IGZvdW5kXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZXtcclxuICAgICAgY29uc3QgcXVlc3Rpb24gPSB7fTtcclxuICAgICAgcXVlc3Rpb25bJ2lkJ10gPSBxdWVzLmlkO1xyXG4gICAgICAvLyBxdWVzdGlvblsnUXVlc3Rpb25fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fX2M7XHJcbiAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dDtcclxuICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLW91dCBMb2NhdGlvbiBUeXBlXHJcbiAgICAgIGlmKHF1ZXMudHlwZSA9PT0gJ0xvY2F0aW9uJyl7XHJcbiAgICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0ID8gcXVlcy5pbnB1dCA6IHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgfWVsc2UgaWYocXVlcy50eXBlID09ICdGaWxlJyl7XHJcbiAgICAgICAgIC8vIFZEIDIzIE9jdDI0IC0gZmlsZSB0eXBlIGNoYW5nZXNcclxuICAgICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQgPyBxdWVzLmlucHV0IDogW107XHJcbiAgICAgIH1cclxuICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHF1ZXMudHlwZTtcclxuICAgICAgcXVlc3Rpb25bJ3F1ZXN0aW9uTnVtYmVyJ10gPSBxdWVzLnF1ZXN0aW9uTnVtYmVyO1xyXG4gICAgICBxdWVzdGlvblsncmVmZXJlbmNlRmllbGQnXSA9IHF1ZXM/LnJlZmVyZW5jZUZpZWxkO1xyXG4gICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxyXG4gIGFkZEV2ZW50KGRheTogYW55LCBlbnRyeVF1ZXMpIHtcclxuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxyXG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJ5UXVlcy5yZWR1Y2UoKGFjYywgcSkgPT4ge1xyXG4gICAgICAgIGFjY1txLmlkXSA9IHsgLi4ucSB9O1xyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICB9LCB7fSk7XHJcblxyXG4gICAgLy8gRmluZCBpZiBhbiBldmVudCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIGRhdGVcclxuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmRhdGUudG9EYXRlU3RyaW5nKCkgPT09IGRheS50b0RhdGVTdHJpbmcoKSk7XHJcblxyXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcclxuICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZXhpc3RzLCBwdXNoIHRoZSBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xyXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nRW50cmllcyA9IGV4aXN0aW5nRXZlbnQuZW50cmllcy5tYXAoZW50cnkgPT4gKHsgLi4uZW50cnkgfSkpO1xyXG4gICAgICAgIGV4aXN0aW5nRW50cmllcy5wdXNoKG5ld0VudHJpZXMpO1xyXG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGV2ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkYXRlXHJcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XHJcbiAgICAgICAgICAgIGlkOiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSksXHJcbiAgICAgICAgICAgIGRhdGU6IGRheSxcclxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmFsbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcclxuICAgIC8vIEhBIDMxLUpBTi0yNCBBZGRlZCB0ZXJuYXJ5IHRvIGF2b2lkIHVuZGVmaW5lZFxyXG4gICAgZm9yKHZhciBzcSBpbiB0aGlzLmJvb2tRdWVzdGlvbnNNYXA/LmdldChxYklkKT8uc3ViUXVlc3Rpb25zKSB7XHJcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLnN1YlF1ZXN0aW9uc1tzcV07XHJcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xyXG4gICAgICBpZihxKXtcclxuICAgICAgICBpZigocS50eXBlID09ICdEcm9wZG93bicgfHwgcS50eXBlID09ICdSYWRpbycpICYmIHRoaXMuc3FPcHRpb25zLmdldChxLmlkKSkge1xyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuaWQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2gocSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVkQgMTJKdW4yNCBmaWVsZCBwZXJtaXNpc2lvbiBjaGFuZ2VzXHJcbiAgICBpZiAodGhpcy5maWVsZFJlc3RyaWN0aW9ucykge1xyXG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcclxuICAgICAgcXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN0cmljdGlvbiA9IGZpZWxkUmVzdHJpY3Rpb25zLmdldChxdWVzLnVuaXF1ZUlkZW50aWZpZXIpO1xyXG4gIFxyXG4gICAgICAgICAgaWYgKHJlc3RyaWN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgcXVlcy5pc1JlYWRPbmx5ID0gcmVzdHJpY3Rpb24gPT09ICdyZWFkT25seSc7XHJcbiAgICAgICAgICAgICAgcXVlcy5pc0hpZGRlbiA9IHJlc3RyaWN0aW9uID09PSAnaGlkZSc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAgIHJldHVybiBxdWVzdGlvbnM7XHJcbiAgfVxyXG4gLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcclxuICByZWFkVHJhbnNRdWVzdGlvbnMocWJJZDogc3RyaW5nKXtcclxuICAgIGxldCByZWNvcmQgPSBbXTtcclxuICAgICAgbGV0IHRyYW5zbGF0ZVJlY29yZCA9IHRoaXMudHJhbnNsYXRlTWFwLmdldChxYklkKTtcclxuICAgICBpZih0cmFuc2xhdGVSZWNvcmQgJiYgdHJhbnNsYXRlUmVjb3JkLmxlbmd0aCA+IDApIHtcclxuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcclxuICAgICAgICBpZihsYW5SZWMubGFuZ3VhZ2VDb2RlID09IHRoaXMubGFuZ3VhZ2VDb2RlKXtcclxuICAgICAgICAgICByZWNvcmQgPSBsYW5SZWMuZmllbGRzXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICB9XHJcbiAgICAgIHJldHVybiByZWNvcmQ7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0KHZhbHVlKSB7XHJcbiAgICB2YXIgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgXCJ0ZXh0L2h0bWxcIik7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoXHJcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcclxuICAgICk7XHJcbiAgfVxyXG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLmhhZGxlRHJvcERvd25EZXBlbmRlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXHJcbiAgZ2V0Q2FsZW5kYXJEYXRlKGV2ZW50OmFueSl7XHJcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRGF0ZS5lbWl0KGV2ZW50KTtcclxuICB9XHJcbiAgZ2V0Q2FsZW5kYXJFdmVudChldmVudDphbnkpe1xyXG4gICAgZXZlbnRbXCJueHRJZFwiXT0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XHJcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRXZlbnQuZW1pdChldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZ3gtc3Bpbm5lciBzaXplPVwibWVkaXVtXCIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XHJcbjwhLS0gQm9va2xldCBIYW5kbGluZy0tPlxyXG48IS0tIEhBIDE5REVDMjMgRm9yIERpcmVjdGlvbiAtLT5cclxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cclxuICAgIDwhLS0gTVIgQ29tbWVudGVkIGJlbG93IGNvZGUgdG8gZW5zdXJlIHNpbmdsZSBKU09OIGZvciBVTkNPTkRJVElPTkFMIEJvb2tsZXRzIC0tPlxyXG4gICAgPCEtLSBSUyAwOURFQzI0IENoYW5nZWQga2V5cy0tPiBcclxuICAgIDwhLS0gPGxpYi1xdWVzdGlvbm5haXJlIFtzZXJ2XT1cInNlcnZcIiBbcWJJZF09XCJxYi5pZFwiIFt0a25dPVwidGtuXCI+PC9saWItcXVlc3Rpb25uYWlyZT4gLS0+XHJcbiAgICA8IS0tIEhBIDI4REVDMjMgQmVsb3cgSWYgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tsZXQgIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInFiLnN1YlF1ZXN0aW9uczsgZWxzZSBlbHNlQmxvY2tcIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzIG9mIHFiLnN1YlF1ZXN0aW9uc1wiIGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XHJcbiAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tIEhBIDE3SkFOMjQgLSBJcyB0aXRsZSBpcyBlbmFibGVkIHNvIHRoYXQgYmFzZWQgb24gdGhlIGJvb2xlYW4gZGl2IHdpbGwgYmUgdmlzaWJsZSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLmlzVGl0bGVcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOE5PVjIzIC0gc2hvd2luZyBsYWJsZSB3aGVuIGl0cyBhdmFpbGFibGUtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxdWVzPy5xdWVzdGlvblRleHQpXCIgKm5nSWY9XCJxdWVzPy5xdWVzdGlvblRleHRcIiA+IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzPy5xdWVzdGlvblRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cclxuICAgICAgICAgICAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMtLT4gXHJcbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgXHJcbiAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgXHJcbiAgICAgICAgICAgICAgICBbcXVlc3Rpb25JdGVtXT1cInF1ZXNcIiBcclxuICAgICAgICAgICAgICAgIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5pZClcIiBcclxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5pZClcIiAgXHJcbiAgICAgICAgICAgICAgICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoaGFuZGxlQ2FsZW5kYXJEYXRlKT1cImdldENhbGVuZGFyRGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckV2ZW50KT1cImdldENhbGVuZGFyRXZlbnQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9saWItcXVlc3Rpb25ib29rPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSBIQSAyOERFQzIzIEJlbG93IGVsc2UgbG9naWMgaXMgdG8gbG9hZCBmcm9tIGJvb2tzIG9yIHF1ZXN0aW9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbmRpdjFcIj5cclxuICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcWIuaXNUaXRsZVwiIFtjbGFzc109XCJxYi5pc1NoZW5nZWwgPyAnaGVhZGVyLXN0eWxlJyA6ICdxdWVzdGlvbi1mLXNpemUgYWRkaXRpb25hbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHFiPy5xdWVzdGlvblRleHQpXCIgKm5nSWY9XCJxYj8ucXVlc3Rpb25UZXh0XCIgPiBcclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LnF1ZXN0aW9uVGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxYj8udGl0bGUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlwiIFt0b2tlbl09XCJ0b2tlblwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25JdGVtXT1cInFiXCIgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLmlkKVwiIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5pZClcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9kaXY+XHJcbjwhLS0gUlMgMDlERUMyNCBDaGFuZ2VkIGtleXMtLT4gXHJcbjwhLS0gR3JvdXAgQWN0aW9ucyAtLT5cclxuPCEtLSBIQSAxOURFQzIzIEZvciBEaXJlY3Rpb24gLS0+XHJcbjxkaXYgY2xhc3M9XCJhbGlnbi1zdWJtaXQtcm93XCIgKm5nSWY9XCJhYkl0ZW0/LnN0YXR1cyAhPSAnQ29tcGxldGVkJ1wiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICA8IS0tIC8vIEhBIDIySkFOMjQgQ29tbW9uaXNlIHRoZSBidXR0b24gc3R5bGUgaW4gZnVzaW9uIC0tPlxyXG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZUJvb2tsZXRBY3Rpb25DbGljayhhY3Rpb24pXCIgbmdDbGFzcz1cImJ0biBidG4tcHJpbWFyeSBmYy1idXR0b24gbnh0QnV0dG9uXCI+XHJcbiAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==