@bnsights/bbsf-controls 1.0.26 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +7 -18
  2. package/bnsights-bbsf-controls-1.0.29.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +535 -372
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
  7. package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
  8. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +12 -12
  9. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +2 -2
  10. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +8 -3
  11. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +7 -5
  12. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +3 -3
  13. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +3 -3
  14. package/esm2015/lib/controls/Paging/Paging.component.js +2 -2
  15. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
  16. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +372 -336
  17. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
  18. package/esm2015/lib/controls/TextArea/TextArea.component.js +2 -2
  19. package/esm2015/lib/controls/TextBox/TextBox.component.js +2 -2
  20. package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
  21. package/esm2015/public-api.js +2 -1
  22. package/fesm2015/bnsights-bbsf-controls.js +523 -370
  23. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  24. package/lib/Shared/Models/RepeaterField.d.ts +1 -0
  25. package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
  26. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -1
  27. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +1 -1
  28. package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
  29. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  30. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
  31. package/package.json +2 -2
  32. package/public-api.d.ts +1 -0
  33. package/src/lib/assets/Style.css +0 -9
  34. package/bnsights-bbsf-controls-1.0.26.tgz +0 -0
@@ -31,11 +31,23 @@ export class RepeaterFieldBuilderComponent {
31
31
  constructor(renderComponentService, TextControlHost) {
32
32
  this.renderComponentService = renderComponentService;
33
33
  this.TextControlHost = TextControlHost;
34
+ this.itemsValue = [];
35
+ this.itemValue = null;
34
36
  }
35
37
  ngOnInit() {
36
38
  }
37
39
  ngAfterViewInit() {
38
40
  setTimeout(() => {
41
+ if (this.itemsValue.length > 0)
42
+ this.itemValue = this.itemsValue[this.itemNumber];
43
+ if (this.itemValue) {
44
+ for (const key in this.itemValue) {
45
+ if (Object.prototype.hasOwnProperty.call(this.itemValue, key) && key == this.RepeaterField.ControlOptions.Name) {
46
+ const element = this.itemValue[key];
47
+ this.value = element;
48
+ }
49
+ }
50
+ }
39
51
  this.Item.clear();
40
52
  switch (this.RepeaterField.ControlType) {
41
53
  ///TextBox
@@ -52,6 +64,7 @@ export class RepeaterFieldBuilderComponent {
52
64
  Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
53
65
  if (this.RepeaterField.ControlOptions.minLength)
54
66
  Text.MinLength = this.RepeaterField.ControlOptions.minLength;
67
+ Text.Value = this.value;
55
68
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
56
69
  break;
57
70
  case DataType.Name:
@@ -67,6 +80,7 @@ export class RepeaterFieldBuilderComponent {
67
80
  if (this.RepeaterField.ControlOptions.minLength)
68
81
  Name.MinLength = this.RepeaterField.ControlOptions.minLength;
69
82
  Name.Type = InputType.Text;
83
+ Name.Value = this.value;
70
84
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
71
85
  break;
72
86
  case DataType.Email:
@@ -78,6 +92,7 @@ export class RepeaterFieldBuilderComponent {
78
92
  Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
79
93
  Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
80
94
  Email.Type = InputType.Email;
95
+ Email.Value = this.value;
81
96
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
82
97
  break;
83
98
  case DataType.Number:
@@ -93,6 +108,7 @@ export class RepeaterFieldBuilderComponent {
93
108
  rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
94
109
  rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
95
110
  Number.NumberRange = rangeNumber;
111
+ Number.Value = this.value;
96
112
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
97
113
  break;
98
114
  ///DateTime
@@ -107,6 +123,7 @@ export class RepeaterFieldBuilderComponent {
107
123
  Date.PickerType = PickerType.Calendar;
108
124
  Date.SelectMode = SelectMode.Single;
109
125
  Date.StartView = StartView.Month;
126
+ Date.Value = this.value;
110
127
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
111
128
  break;
112
129
  case DataType.DateTime:
@@ -120,6 +137,7 @@ export class RepeaterFieldBuilderComponent {
120
137
  DateTime.PickerType = PickerType.Both;
121
138
  DateTime.SelectMode = SelectMode.Single;
122
139
  DateTime.StartView = StartView.Month;
140
+ DateTime.Value = this.value;
123
141
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
124
142
  break;
125
143
  case DataType.Time:
@@ -133,6 +151,7 @@ export class RepeaterFieldBuilderComponent {
133
151
  Time.PickerType = PickerType.Timer;
134
152
  Time.SelectMode = SelectMode.Single;
135
153
  Time.StartView = StartView.Month;
154
+ Time.Value = this.value;
136
155
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
137
156
  break;
138
157
  //Dropdown
@@ -148,6 +167,7 @@ export class RepeaterFieldBuilderComponent {
148
167
  SingleSelect.SingleSelection = true;
149
168
  SingleSelect.ShowCheckbox = false;
150
169
  SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
170
+ SingleSelect.SelectedItems = this.value;
151
171
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
152
172
  break;
153
173
  case DataType.MulipleSelect:
@@ -162,6 +182,7 @@ export class RepeaterFieldBuilderComponent {
162
182
  MulipleSelect.SingleSelection = false;
163
183
  MulipleSelect.ShowCheckbox = false;
164
184
  MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
185
+ MulipleSelect.SelectedItems = this.value;
165
186
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
166
187
  break;
167
188
  case DataType.Goal:
@@ -176,6 +197,7 @@ export class RepeaterFieldBuilderComponent {
176
197
  Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
177
198
  Goal.ShowCheckbox = false;
178
199
  Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
200
+ Goal.SelectedItems = this.value;
179
201
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
180
202
  break;
181
203
  case DataType.Challenge:
@@ -191,6 +213,7 @@ export class RepeaterFieldBuilderComponent {
191
213
  Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
192
214
  Challenge.ShowCheckbox = false;
193
215
  Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
216
+ Challenge.SelectedItems = this.value;
194
217
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
195
218
  break;
196
219
  case DataType.InnovationLab:
@@ -205,6 +228,7 @@ export class RepeaterFieldBuilderComponent {
205
228
  InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
206
229
  InnovationLab.ShowCheckbox = false;
207
230
  InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
231
+ InnovationLab.SelectedItems = this.value;
208
232
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
209
233
  break;
210
234
  case DataType.Country:
@@ -219,6 +243,7 @@ export class RepeaterFieldBuilderComponent {
219
243
  Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
220
244
  Country.ShowCheckbox = false;
221
245
  Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
246
+ Country.SelectedItems = this.value;
222
247
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
223
248
  break;
224
249
  //FileUpload
@@ -231,6 +256,7 @@ export class RepeaterFieldBuilderComponent {
231
256
  File.ViewType = this.RepeaterField.ControlOptions.ViewType;
232
257
  File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
233
258
  File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
259
+ File.Value = this.value;
234
260
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
235
261
  break;
236
262
  case DataType.MultiFile:
@@ -244,6 +270,7 @@ export class RepeaterFieldBuilderComponent {
244
270
  MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
245
271
  MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
246
272
  MultiFile.IsMultipleFile = true;
273
+ MultiFile.Value = this.value;
247
274
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
248
275
  break;
249
276
  //ImageUpload
@@ -257,6 +284,7 @@ export class RepeaterFieldBuilderComponent {
257
284
  Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
258
285
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
259
286
  Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
287
+ Image.Value = this.value;
260
288
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
261
289
  break;
262
290
  case DataType.CoverPhoto:
@@ -269,6 +297,7 @@ export class RepeaterFieldBuilderComponent {
269
297
  CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
270
298
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
271
299
  CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
300
+ CoverPhoto.Value = this.value;
272
301
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
273
302
  break;
274
303
  //Mobile
@@ -284,6 +313,7 @@ export class RepeaterFieldBuilderComponent {
284
313
  Mobile.PhoneValidation = true;
285
314
  Mobile.SelectFirstCountry = true;
286
315
  Mobile.EnablePlaceholder = true;
316
+ Mobile.Value = this.value;
287
317
  this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
288
318
  break;
289
319
  //MultilineText
@@ -301,6 +331,7 @@ export class RepeaterFieldBuilderComponent {
301
331
  MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
302
332
  MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
303
333
  MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
334
+ MultilineText.Value = this.value;
304
335
  this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
305
336
  break;
306
337
  //HTML
@@ -318,6 +349,7 @@ export class RepeaterFieldBuilderComponent {
318
349
  HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
319
350
  HTML.Height = this.RepeaterField.ControlOptions.rows;
320
351
  HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
352
+ HTML.Value = this.value;
321
353
  this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
322
354
  break;
323
355
  //Boolean
@@ -327,6 +359,7 @@ export class RepeaterFieldBuilderComponent {
327
359
  Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
328
360
  Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
329
361
  Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
362
+ Boolean.Value = this.value;
330
363
  Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
331
364
  this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
332
365
  break;
@@ -338,6 +371,7 @@ export class RepeaterFieldBuilderComponent {
338
371
  Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
339
372
  Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
340
373
  Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
374
+ Location.Value = this.value;
341
375
  Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
342
376
  this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
343
377
  break;
@@ -347,341 +381,342 @@ export class RepeaterFieldBuilderComponent {
347
381
  }, 0);
348
382
  }
349
383
  ngOnChanges(changes) {
350
- if (changes.itemNumber.previousValue) {
351
- let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
352
- let value = this.group.controls[name].value;
353
- this.Item.clear();
354
- this.group.removeControl(name);
355
- switch (this.RepeaterField.ControlType) {
356
- ///TextBox
357
- case DataType.Text:
358
- let Text = new TextBoxOptions();
359
- Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
360
- Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
361
- Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
362
- Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
363
- Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
364
- Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
365
- Text.Type = InputType.Text;
366
- if (this.RepeaterField.ControlOptions.maxLength)
367
- Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
368
- if (this.RepeaterField.ControlOptions.minLength)
369
- Text.MinLength = this.RepeaterField.ControlOptions.minLength;
370
- Text.Value = value;
371
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
372
- break;
373
- case DataType.Name:
374
- let Name = new TextBoxOptions();
375
- Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
376
- Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
377
- Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
378
- Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
379
- Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
380
- Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
381
- if (this.RepeaterField.ControlOptions.maxLength)
382
- Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
383
- if (this.RepeaterField.ControlOptions.minLength)
384
- Name.MinLength = this.RepeaterField.ControlOptions.minLength;
385
- Name.Type = InputType.Text;
386
- Name.Value = value;
387
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
388
- break;
389
- case DataType.Email:
390
- let Email = new TextBoxOptions();
391
- Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
392
- Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
393
- Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
394
- Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
395
- Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
396
- Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
397
- Email.Type = InputType.Email;
398
- Email.Value = value;
399
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
400
- break;
401
- case DataType.Number:
402
- let Number = new TextBoxOptions();
403
- Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
404
- Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
405
- Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
406
- Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
407
- Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
408
- Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
409
- Number.Type = InputType.Number;
410
- let rangeNumber = new RangeNumber();
411
- rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
412
- rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
413
- Number.NumberRange = rangeNumber;
414
- Number.Value = value;
415
- this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
416
- break;
417
- ///DateTime
418
- case DataType.Date:
419
- let Date = new DatePickerOptions();
420
- Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
421
- Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
422
- Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
423
- Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
424
- Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
425
- Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
426
- Date.PickerType = PickerType.Calendar;
427
- Date.SelectMode = SelectMode.Single;
428
- Date.StartView = StartView.Month;
429
- Date.Value = value;
430
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
431
- break;
432
- case DataType.DateTime:
433
- let DateTime = new DatePickerOptions();
434
- DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
435
- DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
436
- DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
437
- DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
438
- DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
439
- DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
440
- DateTime.PickerType = PickerType.Both;
441
- DateTime.SelectMode = SelectMode.Single;
442
- DateTime.StartView = StartView.Month;
443
- DateTime.Value = value;
444
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
445
- break;
446
- case DataType.Time:
447
- let Time = new DatePickerOptions();
448
- Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
449
- Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
450
- Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
451
- Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
452
- Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
453
- Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
454
- Time.PickerType = PickerType.Timer;
455
- Time.SelectMode = SelectMode.Single;
456
- Time.StartView = StartView.Month;
457
- Time.Value = value;
458
- this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
459
- break;
460
- //Dropdown
461
- case DataType.SingleSelect:
462
- let SingleSelect = new DropdownOptions();
463
- SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
464
- SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
465
- SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
466
- SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
467
- SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
468
- SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
469
- SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
470
- SingleSelect.SingleSelection = true;
471
- SingleSelect.ShowCheckbox = false;
472
- SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
473
- SingleSelect.SelectedItems = value;
474
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
475
- break;
476
- case DataType.MulipleSelect:
477
- let MulipleSelect = new DropdownOptions();
478
- MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
479
- MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
480
- MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
481
- MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
482
- MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
483
- MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
484
- MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
485
- MulipleSelect.SingleSelection = false;
486
- MulipleSelect.ShowCheckbox = false;
487
- MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
488
- MulipleSelect.SelectedItems = value;
489
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
490
- break;
491
- case DataType.Goal:
492
- let Goal = new DropdownOptions();
493
- Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
494
- Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
495
- Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
496
- Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
497
- Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
498
- Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
499
- Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
500
- Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
501
- Goal.ShowCheckbox = false;
502
- Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
503
- Goal.SelectedItems = value;
504
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
505
- break;
506
- case DataType.Challenge:
507
- let Challenge = new DropdownOptions();
508
- Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
509
- Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
510
- Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
511
- Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
512
- Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
513
- Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
514
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
515
- Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
516
- Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
517
- Challenge.ShowCheckbox = false;
518
- Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
519
- Challenge.SelectedItems = value;
520
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
521
- break;
522
- case DataType.InnovationLab:
523
- let InnovationLab = new DropdownOptions();
524
- InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
525
- InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
526
- InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
527
- InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
528
- InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
529
- InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
530
- InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
531
- InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
532
- InnovationLab.ShowCheckbox = false;
533
- InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
534
- InnovationLab.SelectedItems = value;
535
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
536
- break;
537
- case DataType.Country:
538
- let Country = new DropdownOptions();
539
- Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
540
- Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
541
- Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
542
- Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
543
- Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
544
- Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
545
- Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
546
- Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
547
- Country.ShowCheckbox = false;
548
- Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
549
- Country.SelectedItems = value;
550
- this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
551
- break;
552
- //FileUpload
553
- case DataType.File:
554
- let File = new FileUploadOptions();
555
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
556
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
557
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
558
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
559
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
560
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
561
- File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
562
- File.Value = value;
563
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
564
- break;
565
- case DataType.MultiFile:
566
- let MultiFile = new FileUploadOptions();
567
- File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
568
- File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
569
- File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
570
- File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
571
- File.ViewType = this.RepeaterField.ControlOptions.ViewType;
572
- File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
573
- MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
574
- MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
575
- MultiFile.IsMultipleFile = true;
576
- MultiFile.Value = value;
577
- this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
578
- break;
579
- //ImageUpload
580
- case DataType.Image:
581
- let Image = new ImageUploadOptions();
582
- Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
583
- Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
584
- Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
585
- Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
586
- Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
587
- Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
588
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
589
- Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
590
- Image.Value = value;
591
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
592
- break;
593
- case DataType.CoverPhoto:
594
- let CoverPhoto = new ImageUploadOptions();
595
- CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
596
- CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
597
- CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
598
- CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
599
- CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
600
- CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
601
- if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
602
- CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
603
- CoverPhoto.Value = value;
604
- this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
605
- break;
606
- //Mobile
607
- case DataType.Mobile:
608
- let Mobile = new PhoneOptions();
609
- Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
610
- Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
611
- Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
612
- Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
613
- Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
614
- Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
615
- Mobile.AllowSearch = true;
616
- Mobile.PhoneValidation = true;
617
- Mobile.SelectFirstCountry = true;
618
- Mobile.EnablePlaceholder = true;
619
- Mobile.Value = value;
620
- this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
621
- break;
622
- //MultilineText
623
- case DataType.MultilineText:
624
- let MultilineText = new TextAreaOptions();
625
- MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
626
- MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
627
- MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
628
- MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
629
- MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
630
- MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
631
- if (this.RepeaterField.ControlOptions.maxLength)
632
- MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
633
- if (this.RepeaterField.ControlOptions.minLength)
634
- MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
635
- MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
636
- MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
637
- MultilineText.Value = value;
638
- this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
639
- break;
640
- //HTML
641
- case DataType.HTML:
642
- let HTML = new HtmlEditorOptions();
643
- HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
644
- HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
645
- HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
646
- HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
647
- HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
648
- HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
649
- if (this.RepeaterField.ControlOptions.maxLength)
650
- HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
651
- if (this.RepeaterField.ControlOptions.minLength)
652
- HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
653
- HTML.Height = this.RepeaterField.ControlOptions.rows;
654
- HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
655
- HTML.Value = value;
656
- this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
657
- break;
658
- //Boolean
659
- case DataType.Boolean:
660
- let Boolean = new ToggleSlideOptions();
661
- Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
662
- Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
663
- Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
664
- Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
665
- Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
666
- Boolean.Value = value;
667
- this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
668
- break;
669
- //Location
670
- case DataType.Location:
671
- let Location = new MapAutoCompleteOptions();
672
- Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
673
- Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
674
- Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
675
- Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
676
- Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
677
- Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
678
- Location.Value = value;
679
- this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
680
- break;
681
- default:
682
- break;
384
+ if (changes.itemNumber)
385
+ if (changes.itemNumber.previousValue) {
386
+ let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
387
+ let value = this.group.controls[name].value;
388
+ this.Item.clear();
389
+ this.group.removeControl(name);
390
+ switch (this.RepeaterField.ControlType) {
391
+ ///TextBox
392
+ case DataType.Text:
393
+ let Text = new TextBoxOptions();
394
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
395
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
396
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
397
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
398
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
399
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
400
+ Text.Type = InputType.Text;
401
+ if (this.RepeaterField.ControlOptions.maxLength)
402
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
403
+ if (this.RepeaterField.ControlOptions.minLength)
404
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
405
+ Text.Value = value;
406
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
407
+ break;
408
+ case DataType.Name:
409
+ let Name = new TextBoxOptions();
410
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
411
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
412
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
413
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
414
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
415
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
416
+ if (this.RepeaterField.ControlOptions.maxLength)
417
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
418
+ if (this.RepeaterField.ControlOptions.minLength)
419
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
420
+ Name.Type = InputType.Text;
421
+ Name.Value = value;
422
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
423
+ break;
424
+ case DataType.Email:
425
+ let Email = new TextBoxOptions();
426
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
427
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
428
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
429
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
430
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
431
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
432
+ Email.Type = InputType.Email;
433
+ Email.Value = value;
434
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
435
+ break;
436
+ case DataType.Number:
437
+ let Number = new TextBoxOptions();
438
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
439
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
440
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
441
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
442
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
443
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
444
+ Number.Type = InputType.Number;
445
+ let rangeNumber = new RangeNumber();
446
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
447
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
448
+ Number.NumberRange = rangeNumber;
449
+ Number.Value = value;
450
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
451
+ break;
452
+ ///DateTime
453
+ case DataType.Date:
454
+ let Date = new DatePickerOptions();
455
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
456
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
457
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
458
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
459
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
460
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
461
+ Date.PickerType = PickerType.Calendar;
462
+ Date.SelectMode = SelectMode.Single;
463
+ Date.StartView = StartView.Month;
464
+ Date.Value = value;
465
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
466
+ break;
467
+ case DataType.DateTime:
468
+ let DateTime = new DatePickerOptions();
469
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
470
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
471
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
472
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
473
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
474
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
475
+ DateTime.PickerType = PickerType.Both;
476
+ DateTime.SelectMode = SelectMode.Single;
477
+ DateTime.StartView = StartView.Month;
478
+ DateTime.Value = value;
479
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
480
+ break;
481
+ case DataType.Time:
482
+ let Time = new DatePickerOptions();
483
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
484
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
485
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
486
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
487
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
488
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
489
+ Time.PickerType = PickerType.Timer;
490
+ Time.SelectMode = SelectMode.Single;
491
+ Time.StartView = StartView.Month;
492
+ Time.Value = value;
493
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
494
+ break;
495
+ //Dropdown
496
+ case DataType.SingleSelect:
497
+ let SingleSelect = new DropdownOptions();
498
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
499
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
500
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
501
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
502
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
503
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
504
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
505
+ SingleSelect.SingleSelection = true;
506
+ SingleSelect.ShowCheckbox = false;
507
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
508
+ SingleSelect.SelectedItems = value;
509
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
510
+ break;
511
+ case DataType.MulipleSelect:
512
+ let MulipleSelect = new DropdownOptions();
513
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
514
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
515
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
516
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
517
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
518
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
519
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
520
+ MulipleSelect.SingleSelection = false;
521
+ MulipleSelect.ShowCheckbox = false;
522
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
523
+ MulipleSelect.SelectedItems = value;
524
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
525
+ break;
526
+ case DataType.Goal:
527
+ let Goal = new DropdownOptions();
528
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
529
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
530
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
531
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
532
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
533
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
534
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
535
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
536
+ Goal.ShowCheckbox = false;
537
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
538
+ Goal.SelectedItems = value;
539
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
540
+ break;
541
+ case DataType.Challenge:
542
+ let Challenge = new DropdownOptions();
543
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
544
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
545
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
546
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
547
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
548
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
549
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
550
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
551
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
552
+ Challenge.ShowCheckbox = false;
553
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
554
+ Challenge.SelectedItems = value;
555
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
556
+ break;
557
+ case DataType.InnovationLab:
558
+ let InnovationLab = new DropdownOptions();
559
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
560
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
561
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
562
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
563
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
564
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
565
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
566
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
567
+ InnovationLab.ShowCheckbox = false;
568
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
569
+ InnovationLab.SelectedItems = value;
570
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
571
+ break;
572
+ case DataType.Country:
573
+ let Country = new DropdownOptions();
574
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
575
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
576
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
577
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
578
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
579
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
580
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
581
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
582
+ Country.ShowCheckbox = false;
583
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
584
+ Country.SelectedItems = value;
585
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
586
+ break;
587
+ //FileUpload
588
+ case DataType.File:
589
+ let File = new FileUploadOptions();
590
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
591
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
592
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
593
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
594
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
595
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
596
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
597
+ File.Value = value;
598
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
599
+ break;
600
+ case DataType.MultiFile:
601
+ let MultiFile = new FileUploadOptions();
602
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
603
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
604
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
605
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
606
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
607
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
608
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
609
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
610
+ MultiFile.IsMultipleFile = true;
611
+ MultiFile.Value = value;
612
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
613
+ break;
614
+ //ImageUpload
615
+ case DataType.Image:
616
+ let Image = new ImageUploadOptions();
617
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
618
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
619
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
620
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
621
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
622
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
623
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
624
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
625
+ Image.Value = value;
626
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
627
+ break;
628
+ case DataType.CoverPhoto:
629
+ let CoverPhoto = new ImageUploadOptions();
630
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
631
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
632
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
633
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
634
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
635
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
636
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
637
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
638
+ CoverPhoto.Value = value;
639
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
640
+ break;
641
+ //Mobile
642
+ case DataType.Mobile:
643
+ let Mobile = new PhoneOptions();
644
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
645
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
646
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
647
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
648
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
649
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
650
+ Mobile.AllowSearch = true;
651
+ Mobile.PhoneValidation = true;
652
+ Mobile.SelectFirstCountry = true;
653
+ Mobile.EnablePlaceholder = true;
654
+ Mobile.Value = value;
655
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
656
+ break;
657
+ //MultilineText
658
+ case DataType.MultilineText:
659
+ let MultilineText = new TextAreaOptions();
660
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
661
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
662
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
663
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
664
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
665
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
666
+ if (this.RepeaterField.ControlOptions.maxLength)
667
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
668
+ if (this.RepeaterField.ControlOptions.minLength)
669
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
670
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
671
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
672
+ MultilineText.Value = value;
673
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
674
+ break;
675
+ //HTML
676
+ case DataType.HTML:
677
+ let HTML = new HtmlEditorOptions();
678
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
679
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
680
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
681
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
682
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
683
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
684
+ if (this.RepeaterField.ControlOptions.maxLength)
685
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
686
+ if (this.RepeaterField.ControlOptions.minLength)
687
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
688
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
689
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
690
+ HTML.Value = value;
691
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
692
+ break;
693
+ //Boolean
694
+ case DataType.Boolean:
695
+ let Boolean = new ToggleSlideOptions();
696
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
697
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
698
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
699
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
700
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
701
+ Boolean.Value = value;
702
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
703
+ break;
704
+ //Location
705
+ case DataType.Location:
706
+ let Location = new MapAutoCompleteOptions();
707
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
708
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
709
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
710
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
711
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
712
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
713
+ Location.Value = value;
714
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
715
+ break;
716
+ default:
717
+ break;
718
+ }
683
719
  }
684
- }
685
720
  }
686
721
  }
687
722
  RepeaterFieldBuilderComponent.decorators = [
@@ -699,6 +734,7 @@ RepeaterFieldBuilderComponent.propDecorators = {
699
734
  group: [{ type: Input }],
700
735
  itemNumber: [{ type: Input }],
701
736
  controlNumber: [{ type: Input }],
702
- RepeaterField: [{ type: Input }]
737
+ RepeaterField: [{ type: Input }],
738
+ itemsValue: [{ type: Input }]
703
739
  };
704
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7QUFDbkcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDakYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0YsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBTy9FLE1BQU0sT0FBTyw2QkFBNkI7SUFTeEMsWUFBb0Isc0JBQThDLEVBQVMsZUFBbUM7UUFBMUYsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUFTLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtJQUFJLENBQUM7SUFFbkgsUUFBUTtJQUNSLENBQUM7SUFDRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDakIsUUFBUSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDdEMsVUFBVTtnQkFDVixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDM0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUMzQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVM7d0JBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVM7d0JBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDbkgsTUFBTTtnQkFFUixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDM0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsSUFBSSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO29CQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDbkgsTUFBTTtnQkFFUixLQUFLLFFBQVEsQ0FBQyxLQUFLO29CQUNqQixJQUFJLEtBQUssR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNqQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDNUgsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzdELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMzRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzVELEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDckksS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO29CQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQTtvQkFDcEgsTUFBTTtnQkFFUixLQUFLLFFBQVEsQ0FBQyxNQUFNO29CQUNsQixJQUFJLE1BQU0sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDN0gsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzlELE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM1RCxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDakUsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzdELE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDdEksTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO29CQUMvQixJQUFJLFdBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBO29CQUNuQyxXQUFXLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzlELE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUNqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtvQkFDckgsTUFBTTtnQkFFUixXQUFXO2dCQUNYLEtBQUssUUFBUSxDQUFDLElBQUk7b0JBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQzNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3BJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQztvQkFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO29CQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7b0JBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBcUIsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUN2SCxNQUFNO2dCQUVSLEtBQUssUUFBUSxDQUFDLFFBQVE7b0JBQ3BCLElBQUksUUFBUSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDdkMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQy9ILFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDOUQsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMvRCxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3hJLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDdEMsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO29CQUN2QyxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7b0JBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBcUIsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUMzSCxNQUFNO2dCQUVSLEtBQUssUUFBUSxDQUFDLElBQUk7b0JBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQzNILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3BJLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO29CQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7b0JBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBcUIsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUN2SCxNQUFNO2dCQUVSLFVBQVU7Z0JBQ1YsS0FBSyxRQUFRLENBQUMsWUFBWTtvQkFDeEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDekMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ25JLFlBQVksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNwRSxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDbEUsWUFBWSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3ZFLFlBQVksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNuRSxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQzVJLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUN0RSxZQUFZLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQTtvQkFDbkMsWUFBWSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7b0JBQ2pDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBd0IsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFBO29CQUNySSxNQUFNO2dCQUNSLEtBQUssUUFBUSxDQUFDLGFBQWE7b0JBQ3pCLElBQUksYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUNwSSxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDckUsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQ25FLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUN4RSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDcEUsYUFBYSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUM3SSxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDdkUsYUFBYSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7b0JBQ3JDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO29CQUNsQyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM3RSxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXdCLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQTtvQkFDdEksTUFBTTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDM0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7b0JBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7b0JBQ3BFLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO29CQUN6QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNwRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXdCLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDN0gsTUFBTTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxTQUFTO29CQUNyQixJQUFJLFNBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUN0QyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDaEksU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ2pFLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMvRCxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDcEUsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQ2hFLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDekksU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7b0JBQ25FLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUNuRSxTQUFTLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUN6RSxTQUFTLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtvQkFDOUIsU0FBUyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDekUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7b0JBQ2xJLE1BQU07Z0JBQ1IsS0FBSyxRQUFRLENBQUMsYUFBYTtvQkFDekIsSUFBSSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDMUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ3BJLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNyRSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDbkUsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3hFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNwRSxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQzdJLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUN2RSxhQUFhLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUM3RSxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtvQkFDbEMsYUFBYSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDN0UsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7b0JBQ3RJLE1BQU07Z0JBQ1IsS0FBSyxRQUFRLENBQUMsT0FBTztvQkFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQzlILE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUMvRCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDN0QsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ2xFLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUM5RCxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3ZJLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUNqRSxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUN2RSxPQUFPLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtvQkFDNUIsT0FBTyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDdkUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7b0JBQ2hJLE1BQU07Z0JBRVIsWUFBWTtnQkFDWixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUMzSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUNwSSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQTtvQkFDeEUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFzQixJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3pILE1BQU07Z0JBQ1IsS0FBSyxRQUFRLENBQUMsU0FBUztvQkFDckIsSUFBSSxTQUFTLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO29CQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDM0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksU0FBUyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQTtvQkFDcEYsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUE7b0JBQ3ZFLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXNCLElBQUksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDOUgsTUFBTTtnQkFDUixhQUFhO2dCQUNiLEtBQUssUUFBUSxDQUFDLEtBQUs7b0JBQ2pCLElBQUksS0FBSyxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDckMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQzVILEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM3RCxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDM0QsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ2hFLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUM1RCxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3JJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZTt3QkFDbkQsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUE7b0JBQzNFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBeUIsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO29CQUNoSSxNQUFNO2dCQUNSLEtBQUssUUFBUSxDQUFDLFVBQVU7b0JBQ3RCLElBQUksVUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ2pJLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNsRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDaEUsVUFBVSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3JFLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNqRSxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQzFJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZTt3QkFDbkQsVUFBVSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUE7b0JBQ2hGLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBeUIsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFBO29CQUNySSxNQUFNO2dCQUNSLFFBQVE7Z0JBQ1IsS0FBSyxRQUFRLENBQUMsTUFBTTtvQkFDbEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQzdILE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDNUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUM3RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3RJLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUMxQixNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDOUIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFDakMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtvQkFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFpQixJQUFJLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO29CQUNqSCxNQUFNO2dCQUNSLGVBQWU7Z0JBQ2YsS0FBSyxRQUFRLENBQUMsYUFBYTtvQkFDekIsSUFBSSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDMUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ3BJLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNyRSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDbkUsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3hFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNwRSxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQzdJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ3ZFLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ3ZFLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUM1RCxhQUFhLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQTtvQkFDL0UsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFvQixJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7b0JBQzlILE1BQU07Z0JBQ1IsTUFBTTtnQkFDTixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUMzSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUNwSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVM7d0JBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVM7d0JBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztvQkFDckQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUE7b0JBQ3RFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBc0IsSUFBSSxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUN6SCxNQUFNO2dCQUNSLFNBQVM7Z0JBQ1QsS0FBSyxRQUFRLENBQUMsT0FBTztvQkFDbkIsSUFBSSxPQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO29CQUN2QyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDOUgsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQy9ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM3RCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDOUQsT0FBTyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUN2SSxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXVCLElBQUksQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtvQkFDOUgsTUFBTTtnQkFDUixVQUFVO2dCQUNWLEtBQUssUUFBUSxDQUFDLFFBQVE7b0JBQ3BCLElBQUksUUFBUSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztvQkFDNUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQy9ILFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDOUQsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMvRCxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3hJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBMkIsSUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUN2SSxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtRQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNwQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQzNJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQzlCLFFBQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RDLFVBQVU7Z0JBQ1YsS0FBSyxRQUFRLENBQUMsSUFBSTtvQkFDaEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUNoSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUNwSSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7b0JBQzNCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzlELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDbkgsTUFBTTtnQkFFUixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ2hJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQy9ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3BJLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzlELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUzt3QkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzlELElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztvQkFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBbUIsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUNuSCxNQUFNO2dCQUVSLEtBQUssUUFBUSxDQUFDLEtBQUs7b0JBQ2pCLElBQUksS0FBSyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ2pDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDakksS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzdELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMzRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzVELEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDckksS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO29CQUM3QixLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFtQixJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7b0JBQ3BILE1BQU07Z0JBRVIsS0FBSyxRQUFRLENBQUMsTUFBTTtvQkFDbEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxDQUFDLElBQUksR0FBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUNqSSxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUNqRSxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDN0QsTUFBTSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUN0SSxNQUFNLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQy9CLElBQUksV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUE7b0JBQ25DLFdBQVcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM1RCxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7b0JBQ2pDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQW1CLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtvQkFDckgsTUFBTTtnQkFFUixXQUFXO2dCQUNYLEtBQUssUUFBUSxDQUFDLElBQUk7b0JBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUNoSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUNwSSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQTtvQkFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFBO29CQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFxQixJQUFJLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3ZILE1BQU07Z0JBRVIsS0FBSyxRQUFRLENBQUMsUUFBUTtvQkFDcEIsSUFBSSxRQUFRLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO29CQUN2QyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ3BJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDOUQsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUMvRCxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3hJLFFBQVEsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDdEMsUUFBUSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFBO29CQUN2QyxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUE7b0JBQ3BDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXFCLElBQUksQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtvQkFDM0gsTUFBTTtnQkFFUixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDaEksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO29CQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUE7b0JBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQTtvQkFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBcUIsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO29CQUN2SCxNQUFNO2dCQUVSLFVBQVU7Z0JBQ1YsS0FBSyxRQUFRLENBQUMsWUFBWTtvQkFDeEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDekMsWUFBWSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUN4SSxZQUFZLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDcEUsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQ2xFLFlBQVksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUN2RSxZQUFZLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDbkUsWUFBWSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUM1SSxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDdEUsWUFBWSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUE7b0JBQ25DLFlBQVksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO29CQUNqQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM1RSxZQUFZLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUE7b0JBQ3JJLE1BQU07Z0JBQ1IsS0FBSyxRQUFRLENBQUMsYUFBYTtvQkFDekIsSUFBSSxhQUFhLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDMUMsYUFBYSxDQUFDLElBQUksR0FBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUN4SSxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDckUsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQ25FLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUN4RSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDcEUsYUFBYSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUM3SSxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDdkUsYUFBYSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7b0JBQ3JDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO29CQUNsQyxhQUFhLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM3RSxhQUFhLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7b0JBQ3RJLE1BQU07Z0JBQ1IsS0FBSyxRQUFRLENBQUMsSUFBSTtvQkFDaEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUNoSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUNwSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDcEUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7b0JBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ3BFLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXdCLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDN0gsTUFBTTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxTQUFTO29CQUNyQixJQUFJLFNBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUN0QyxTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ3JJLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNqRSxTQUFTLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDL0QsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3BFLFNBQVMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNoRSxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3pJLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUNuRSxTQUFTLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDbkUsU0FBUyxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQTtvQkFDekUsU0FBUyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUE7b0JBQzlCLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ3pFLFNBQVMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUNoQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXdCLElBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQTtvQkFDbEksTUFBTTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxhQUFhO29CQUN6QixJQUFJLGFBQWEsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO29CQUMxQyxhQUFhLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ3pJLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUNyRSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDbkUsYUFBYSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ3hFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUNwRSxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQzdJLGFBQWEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUN2RSxhQUFhLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFBO29CQUM3RSxhQUFhLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtvQkFDbEMsYUFBYSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDN0UsYUFBYSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQ3BDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBd0IsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFBO29CQUN0SSxNQUFNO2dCQUNSLEtBQUssUUFBUSxDQUFDLE9BQU87b0JBQ25CLElBQUksT0FBTyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDbkksT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQy9ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM3RCxPQUFPLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDbEUsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzlELE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDdkksT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7b0JBQ2pFLE9BQU8sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUE7b0JBQ3ZFLE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO29CQUM1QixPQUFPLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUN2RSxPQUFPLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztvQkFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF3QixJQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7b0JBQ2hJLE1BQU07Z0JBRVIsWUFBWTtnQkFDWixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDaEksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUE7b0JBQ3hFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNuQixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQXNCLElBQUksQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDekgsTUFBTTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxTQUFTO29CQUNyQixJQUFJLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDaEksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksU0FBUyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQTtvQkFDcEYsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUE7b0JBQ3ZFLFNBQVMsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDeEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFzQixJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUE7b0JBQzlILE1BQU07Z0JBQ1IsYUFBYTtnQkFDYixLQUFLLFFBQVEsQ0FBQyxLQUFLO29CQUNqQixJQUFJLEtBQUssR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3JDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDakksS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzdELEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMzRCxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzVELEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDckksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxlQUFlO3dCQUNuRCxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQTtvQkFDM0UsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBeUIsSUFBSSxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO29CQUNoSSxNQUFNO2dCQUNSLEtBQUssUUFBUSxDQUFDLFVBQVU7b0JBQ3RCLElBQUksVUFBVSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO29CQUN0SSxVQUFVLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDbEUsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUE7b0JBQ2hFLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDO29CQUNyRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDakUsVUFBVSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUMxSSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGVBQWU7d0JBQ25ELFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFBO29CQUNoRixVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDekIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF5QixJQUFJLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUE7b0JBQ3JJLE1BQU07Z0JBQ1IsUUFBUTtnQkFDUixLQUFLLFFBQVEsQ0FBQyxNQUFNO29CQUNsQixJQUFJLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNoQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7b0JBQ2xJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO29CQUM5RCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTtvQkFDNUQsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7b0JBQ2pFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO29CQUM3RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ3RJLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUMxQixNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztvQkFDOUIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztvQkFDakMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtvQkFDL0IsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBaUIsSUFBSSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtvQkFDakgsTUFBTTtnQkFDUixlQUFlO2dCQUNmLEtBQUssUUFBUSxDQUFDLGFBQWE7b0JBQ3pCLElBQUksYUFBYSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7b0JBQzFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDekksYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ3JFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUNuRSxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDeEUsYUFBYSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQ3BFLGFBQWEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDN0ksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDdkUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDdkUsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQzVELGFBQWEsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFBO29CQUMvRSxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFvQixJQUFJLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7b0JBQzlILE1BQU07Z0JBQ1IsTUFBTTtnQkFDTixLQUFLLFFBQVEsQ0FBQyxJQUFJO29CQUNoQixJQUFJLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7b0JBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDaEksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUMxRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQzNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDcEksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTO3dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtvQkFDOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFBO29CQUN0RSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUFzQixJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3pILE1BQU07Z0JBQ1IsU0FBUztnQkFDVCxLQUFLLFFBQVEsQ0FBQyxPQUFPO29CQUNuQixJQUFJLE9BQU8sR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDbkksT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQy9ELE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM3RCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQztvQkFDOUQsT0FBTyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO29CQUN2SSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztvQkFDdEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUF1QixJQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7b0JBQzlILE1BQU07Z0JBQ1IsVUFBVTtnQkFDVixLQUFLLFFBQVEsQ0FBQyxRQUFRO29CQUNwQixJQUFJLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7b0JBQzVDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtvQkFDcEksUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ2hFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM5RCxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDbkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQy9ELFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDeEksUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBMkIsSUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUN2SSxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtTQUVGO0lBRUgsQ0FBQzs7O1lBM3FCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsbURBQXNEO2FBQ3ZEOzs7WUFoQlEsc0JBQXNCO1lBbkJYLGtCQUFrQjs7O21CQXNDbkMsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDNUMsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IFBpY2tlclR5cGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvUGlja2VyVHlwZSc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvU2VsZWN0TW9kZSc7XHJcbmltcG9ydCB7IFN0YXJ0VmlldyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TdGFydFZpZXcnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvZGF0ZVBpY2tlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duT3B0aW9ucyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9GaWxlVXBsb2FkT3B0aW9ucyc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvSW1hZ2VVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFBob25lT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUGhvbmVPcHRpb25zJztcclxuaW1wb3J0IHsgUmFuZ2VOdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1JhbmdlTnVtYmVyJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJGaWVsZCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJGaWVsZCc7XHJcbmltcG9ydCB7IFRleHRBcmVhT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEFyZWFPcHRpb25zJztcclxuaW1wb3J0IHsgVGV4dEJveE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RleHRCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9Ub2dnbGVzbGlkZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZW5kZXJDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3JlbmRlci1jb21wb25lbnQtc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRGF0ZVRpbWVQaWNrZXIvRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRHJvcGRvd25MaXN0L0Ryb3Bkb3duTGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRmlsZVVwbGFvZC9GaWxlVXBsYW9kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0ltYWdlVXBsb2FkL0ltYWdlVXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL01hcEF1dG9Db21wbGV0ZS9NYXBBdXRvQ29tcGxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGhvbmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9QaG9uZS9QaG9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRBcmVhL1RleHRBcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9UZXh0Qm94L1RleHRCb3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9nZ2xlc2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ub2dnbGVzbGlkZS90b2dnbGVzbGlkZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmVwZWF0ZXItZmllbGQtYnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJGaWVsZEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKFwiSXRlbVwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgSXRlbTogVmlld0NvbnRhaW5lclJlZjtcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGl0ZW1OdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBjb250cm9sTnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgUmVwZWF0ZXJGaWVsZDogUmVwZWF0ZXJGaWVsZDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkl0ZW0uY2xlYXIoKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sVHlwZSkge1xyXG4gICAgICAgIC8vL1RleHRCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICBsZXQgVGV4dCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgVGV4dC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBUZXh0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBUZXh0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFRleHQuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBUZXh0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgVGV4dC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5OYW1lOlxyXG4gICAgICAgICAgbGV0IE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE5hbWUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE5hbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTmFtZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTmFtZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBOYW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTmFtZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBOYW1lLk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBOYW1lLk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBOYW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRW1haWw6XHJcbiAgICAgICAgICBsZXQgRW1haWwgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIEVtYWlsLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEVtYWlsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTnVtYmVyOlxyXG4gICAgICAgICAgbGV0IE51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTnVtYmVyLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOdW1iZXIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOdW1iZXIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTnVtYmVyLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBOdW1iZXIpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy8vRGF0ZVRpbWVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGU6XHJcbiAgICAgICAgICBsZXQgRGF0ZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgRGF0ZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBEYXRlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRGF0ZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5DYWxlbmRhcjtcclxuICAgICAgICAgIERhdGUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgRGF0ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgbGV0IERhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGVUaW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGVUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlVGltZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5Cb3RoO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBTaW5nbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bGlwbGVTZWxlY3Q6XHJcbiAgICAgICAgICBsZXQgTXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsaXBsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuR29hbDpcclxuICAgICAgICAgIGxldCBHb2FsID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgR29hbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgR29hbClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgbGV0IENoYWxsZW5nZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENoYWxsZW5nZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENoYWxsZW5nZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENoYWxsZW5nZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENoYWxsZW5nZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENoYWxsZW5nZS5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIENoYWxsZW5nZS5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIENoYWxsZW5nZS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENoYWxsZW5nZS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbm5vdmF0aW9uTGFiKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3VudHJ5OlxyXG4gICAgICAgICAgbGV0IENvdW50cnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3VudHJ5Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDb3VudHJ5LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENvdW50cnkuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ291bnRyeS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDb3VudHJ5LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ291bnRyeS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENvdW50cnkuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENvdW50cnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3VudHJ5KVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRmlsZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRmlsZTpcclxuICAgICAgICAgIGxldCBGaWxlID0gbmV3IEZpbGVVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBGaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBGaWxlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgICAgbGV0IE11bHRpRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heFNpemVGb3JBbGxGaWxlc0luTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4Tm9PZkZpbGVzID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVDb3VudFxyXG4gICAgICAgICAgTXVsdGlGaWxlLklzTXVsdGlwbGVGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsdGlGaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9JbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgSW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBJbWFnZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbWFnZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ292ZXJQaG90bzpcclxuICAgICAgICAgIGxldCBDb3ZlclBob3RvID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ292ZXJQaG90by5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDb3ZlclBob3RvLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIENvdmVyUGhvdG8uRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3ZlclBob3RvKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Nb2JpbGVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk1vYmlsZTpcclxuICAgICAgICAgIGxldCBNb2JpbGUgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgICAgICBNb2JpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE1vYmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE1vYmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNb2JpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNb2JpbGUuQWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlBob25lVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuU2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5FbmFibGVQbGFjZWhvbGRlciA9IHRydWVcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFBob25lQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFBob25lQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNb2JpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgTXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQm9vbGVhbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBCb29sZWFuLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBCb29sZWFuKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Mb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgTG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgTG9jYXRpb24uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8TWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTG9jYXRpb24pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0sIDApO1xyXG4gIH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUpIHtcclxuICAgICAgbGV0IG5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLnByZXZpb3VzVmFsdWUudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgbGV0IHZhbHVlID0gdGhpcy5ncm91cC5jb250cm9sc1tuYW1lXS52YWx1ZVxyXG4gICAgICB0aGlzLkl0ZW0uY2xlYXIoKVxyXG4gICAgICB0aGlzLmdyb3VwLnJlbW92ZUNvbnRyb2wobmFtZSlcclxuICAgICAgc3dpdGNoICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbFR5cGUpIHtcclxuICAgICAgICAvLy9UZXh0Qm94XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5UZXh0OlxyXG4gICAgICAgICAgbGV0IFRleHQgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIFRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgVGV4dC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBUZXh0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBUZXh0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFRleHQuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBUZXh0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgVGV4dC5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICAgIFRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOYW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE5hbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE5hbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTmFtZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE5hbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIE5hbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTmFtZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IEVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBFbWFpbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID10aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE51bWJlci5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBOdW1iZXIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE51bWJlci5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBOdW1iZXIuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBOdW1iZXIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBOdW1iZXIuVHlwZSA9IElucHV0VHlwZS5OdW1iZXI7XHJcbiAgICAgICAgICBsZXQgcmFuZ2VOdW1iZXIgPSBuZXcgUmFuZ2VOdW1iZXIoKVxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuVG8gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICByYW5nZU51bWJlci5Gcm9tID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgTnVtYmVyLk51bWJlclJhbmdlID0gcmFuZ2VOdW1iZXI7XHJcbiAgICAgICAgICBOdW1iZXIuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTnVtYmVyKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vL0RhdGVUaW1lXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlOlxyXG4gICAgICAgICAgbGV0IERhdGUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIERhdGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBEYXRlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRGF0ZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5DYWxlbmRhcjtcclxuICAgICAgICAgIERhdGUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RGF0ZUlucHV0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERhdGVJbnB1dENvbXBvbmVudCwgdGhpcy5ncm91cCwgRGF0ZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkRhdGVUaW1lOlxyXG4gICAgICAgICAgbGV0IERhdGVUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlVGltZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGVUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICBEYXRlVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGVUaW1lLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZVRpbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgVGltZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIFRpbWUuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuVGltZXI7XHJcbiAgICAgICAgICBUaW1lLlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG4gICAgICAgICAgVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIFRpbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFRpbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy9Ecm9wZG93blxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuU2luZ2xlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IFNpbmdsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IHRydWVcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIFNpbmdsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsaXBsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBNdWxpcGxlU2VsZWN0ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5OYW1lID10aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNpbmdsZVNlbGVjdGlvbiA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWxpcGxlU2VsZWN0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Hb2FsOlxyXG4gICAgICAgICAgbGV0IEdvYWwgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBHb2FsLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEdvYWwuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgR29hbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgR29hbC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBHb2FsLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgR29hbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEdvYWwuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBHb2FsLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgR29hbC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgR29hbC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIEdvYWwuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgR29hbClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ2hhbGxlbmdlOlxyXG4gICAgICAgICAgbGV0IENoYWxsZW5nZSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENoYWxsZW5nZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIElubm92YXRpb25MYWIuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgSW5ub3ZhdGlvbkxhYilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQ291bnRyeTpcclxuICAgICAgICAgIGxldCBDb3VudHJ5ID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ291bnRyeS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDb3VudHJ5LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENvdW50cnkuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ291bnRyeS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIENvdW50cnkuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDb3VudHJ5LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ291bnRyeS5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIENvdW50cnkuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENvdW50cnkuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDb3VudHJ5LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIENvdW50cnkpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgLy9GaWxlVXBsb2FkXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5GaWxlOlxyXG4gICAgICAgICAgbGV0IEZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRmlsZS5GaWxlTWF4U2l6ZUluTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBGaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgIGxldCBNdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heFNpemVGb3JBbGxGaWxlc0luTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4Tm9PZkZpbGVzID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVDb3VudFxyXG4gICAgICAgICAgTXVsdGlGaWxlLklzTXVsdGlwbGVGaWxlID0gdHJ1ZTtcclxuICAgICAgICAgIE11bHRpRmlsZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RmlsZVVwbG9hZENvbXBvbmVudD4odGhpcy5JdGVtLCBGaWxlVXBsb2FkQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWx0aUZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0ltYWdlVXBsb2FkXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5JbWFnZTpcclxuICAgICAgICAgIGxldCBJbWFnZSA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEltYWdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEltYWdlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEltYWdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBJbWFnZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBJbWFnZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEltYWdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIEltYWdlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIEltYWdlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxJbWFnZVVwbG9hZGVyQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEltYWdlVXBsb2FkZXJDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEltYWdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3ZlclBob3RvOlxyXG4gICAgICAgICAgbGV0IENvdmVyUGhvdG8gPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdmVyUGhvdG8uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ292ZXJQaG90by5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CKVxyXG4gICAgICAgICAgICBDb3ZlclBob3RvLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgQ292ZXJQaG90bylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTW9iaWxlXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Nb2JpbGU6XHJcbiAgICAgICAgICBsZXQgTW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgTW9iaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE1vYmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE1vYmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNb2JpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNb2JpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNb2JpbGUuQWxsb3dTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlBob25lVmFsaWRhdGlvbiA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuU2VsZWN0Rmlyc3RDb3VudHJ5ID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5FbmFibGVQbGFjZWhvbGRlciA9IHRydWVcclxuICAgICAgICAgIE1vYmlsZS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8UGhvbmVDb21wb25lbnQ+KHRoaXMuSXRlbSwgUGhvbmVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE1vYmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTXVsdGlsaW5lVGV4dFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlsaW5lVGV4dDpcclxuICAgICAgICAgIGxldCBNdWx0aWxpbmVUZXh0ID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTXVsdGlsaW5lVGV4dC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTXVsdGlsaW5lVGV4dC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlJvd3MgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIE11bHRpbGluZVRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRBcmVhQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRBcmVhQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNdWx0aWxpbmVUZXh0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9IVE1MXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5IVE1MOlxyXG4gICAgICAgICAgbGV0IEhUTUwgPSBuZXcgSHRtbEVkaXRvck9wdGlvbnMoKTtcclxuICAgICAgICAgIEhUTUwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIEhUTUwuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBCb29sZWFuLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEJvb2xlYW4uTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEJvb2xlYW4uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQm9vbGVhbi5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VG9nZ2xlc2xpZGVDb21wb25lbnQ+KHRoaXMuSXRlbSwgVG9nZ2xlc2xpZGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEJvb2xlYW4pXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0xvY2F0aW9uXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Mb2NhdGlvbjpcclxuICAgICAgICAgIGxldCBMb2NhdGlvbiA9IG5ldyBNYXBBdXRvQ29tcGxldGVPcHRpb25zKCk7XHJcbiAgICAgICAgICBMb2NhdGlvbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBMb2NhdGlvbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTG9jYXRpb24uSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTG9jYXRpb24uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIExvY2F0aW9uLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxNYXBBdXRvQ29tcGxldGVDb21wb25lbnQ+KHRoaXMuSXRlbSwgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBMb2NhdGlvbilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
740
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFF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LGdCQUFnQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO3dCQUN4SSxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHNCQUFzQixDQUEyQixJQUFJLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7d0JBQ3ZJLE1BQU07b0JBQ1I7d0JBQ0UsTUFBTTtpQkFDVDthQUVGO0lBRUgsQ0FBQzs7O1lBL3NCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsbURBQXNEO2FBQ3ZEOzs7WUFoQlEsc0JBQXNCO1lBbkJYLGtCQUFrQjs7O21CQXNDbkMsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDNUMsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSzt5QkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvRW51bXMnO1xyXG5pbXBvcnQgeyBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvSW5wdXRUeXBlJztcclxuaW1wb3J0IHsgUGlja2VyVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9QaWNrZXJUeXBlJztcclxuaW1wb3J0IHsgU2VsZWN0TW9kZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TZWxlY3RNb2RlJztcclxuaW1wb3J0IHsgU3RhcnRWaWV3IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1N0YXJ0Vmlldyc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9kYXRlUGlja2VyT3B0aW9ucyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvRHJvcGRvd25PcHRpb25zJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0ZpbGVVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgSHRtbEVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0h0bWxFZGl0b3JPcHRpb25zJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9JbWFnZVVwbG9hZE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvQ29tcGxldGVPcHRpb25zJztcclxuaW1wb3J0IHsgUGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9QaG9uZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSYW5nZU51bWJlciB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmFuZ2VOdW1iZXInO1xyXG5pbXBvcnQgeyBSZXBlYXRlckZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlckZpZWxkJztcclxuaW1wb3J0IHsgVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEJveE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RvZ2dsZXNsaWRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFJlbmRlckNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvc2VydmljZXMvcmVuZGVyLWNvbXBvbmVudC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9GaWxlVXBsYW9kL0ZpbGVVcGxhb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0h0bWxFZGl0b3IvSHRtbEVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbWFnZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vSW1hZ2VVcGxvYWQvSW1hZ2VVcGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vTWFwQXV0b0NvbXBsZXRlL01hcEF1dG9Db21wbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaG9uZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1Bob25lL1Bob25lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVGV4dEFyZWEvVGV4dEFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRCb3gvVGV4dEJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVzbGlkZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RvZ2dsZXNsaWRlL3RvZ2dsZXNsaWRlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyZXBlYXRlci1maWVsZC1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJJdGVtXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBJdGVtOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgaXRlbU51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xOdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBSZXBlYXRlckZpZWxkOiBSZXBlYXRlckZpZWxkO1xyXG4gIEBJbnB1dCgpIGl0ZW1zVmFsdWU6YW55W109W107XHJcbiAgaXRlbVZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZih0aGlzLml0ZW1zVmFsdWUubGVuZ3RoPjApXHJcbiAgICAgICAgIHRoaXMuaXRlbVZhbHVlPXRoaXMuaXRlbXNWYWx1ZVt0aGlzLml0ZW1OdW1iZXJdXHJcbiAgICAgIGlmICh0aGlzLml0ZW1WYWx1ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbVZhbHVlLCBrZXkpICYmIGtleSA9PSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuSXRlbS5jbGVhcigpXHJcbiAgICAgIHN3aXRjaCAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgLy8vVGV4dEJveFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGV4dDpcclxuICAgICAgICAgIGxldCBUZXh0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBUZXh0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUZXh0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIFRleHQuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTmFtZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBOYW1lLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOYW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE5hbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBOYW1lLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBOYW1lLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE5hbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5FbWFpbDpcclxuICAgICAgICAgIGxldCBFbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgRW1haWwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEVtYWlsLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEVtYWlsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBFbWFpbC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBFbWFpbC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEVtYWlsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRW1haWwuVHlwZSA9IElucHV0VHlwZS5FbWFpbDtcclxuICAgICAgICAgIEVtYWlsLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEVtYWlsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTnVtYmVyOlxyXG4gICAgICAgICAgbGV0IE51bWJlciA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTnVtYmVyLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOdW1iZXIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOdW1iZXIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTnVtYmVyLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgTnVtYmVyLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE51bWJlcilcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvLy9EYXRlVGltZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZTpcclxuICAgICAgICAgIGxldCBEYXRlID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIERhdGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIERhdGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkNhbGVuZGFyO1xyXG4gICAgICAgICAgRGF0ZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBEYXRlLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBEYXRlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICBsZXQgRGF0ZVRpbWUgPSBuZXcgRGF0ZVBpY2tlck9wdGlvbnMoKTtcclxuICAgICAgICAgIERhdGVUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBEYXRlVGltZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBEYXRlVGltZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGVUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLkJvdGg7XHJcbiAgICAgICAgICBEYXRlVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIERhdGVUaW1lLlN0YXJ0VmlldyA9IFN0YXJ0Vmlldy5Nb250aFxyXG4gICAgICAgICAgRGF0ZVRpbWUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGVUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGltZTpcclxuICAgICAgICAgIGxldCBUaW1lID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBUaW1lLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBUaW1lLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgU2luZ2xlU2VsZWN0KVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWxpcGxlU2VsZWN0OlxyXG4gICAgICAgICAgbGV0IE11bGlwbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TaW5nbGVTZWxlY3Rpb24gPSBmYWxzZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsaXBsZVNlbGVjdClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuR29hbDpcclxuICAgICAgICAgIGxldCBHb2FsID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgR29hbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgR29hbC5TZWxlY3RlZEl0ZW1zPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBHb2FsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5DaGFsbGVuZ2U6XHJcbiAgICAgICAgICBsZXQgQ2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ2hhbGxlbmdlLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ2hhbGxlbmdlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Jbm5vdmF0aW9uTGFiOlxyXG4gICAgICAgICAgbGV0IElubm92YXRpb25MYWIgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIElubm92YXRpb25MYWIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkRhdGFTb3VyY2UgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TaW5nbGVTZWxlY3Rpb24gPSAhdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmlzTXVsdGlwbGVcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNlbGVjdGVkSXRlbXM9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIElubm92YXRpb25MYWIpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdW50cnk6XHJcbiAgICAgICAgICBsZXQgQ291bnRyeSA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdW50cnkuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdW50cnkuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ291bnRyeS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3VudHJ5LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENvdW50cnkuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDb3VudHJ5LlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ291bnRyeS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ291bnRyeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENvdW50cnkuU2VsZWN0ZWRJdGVtcz10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ291bnRyeSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvL0ZpbGVVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkZpbGU6XHJcbiAgICAgICAgICBsZXQgRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRmlsZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBGaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBGaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEZpbGUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBGaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgRmlsZS5GaWxlTWF4U2l6ZUluTUIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CXHJcbiAgICAgICAgICBGaWxlLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIEZpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpRmlsZTpcclxuICAgICAgICAgIGxldCBNdWx0aUZpbGUgPSBuZXcgRmlsZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIEZpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEZpbGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRmlsZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRmlsZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBGaWxlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRmlsZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE11bHRpRmlsZS5NYXhTaXplRm9yQWxsRmlsZXNJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgTXVsdGlGaWxlLk1heE5vT2ZGaWxlcyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlQ291bnRcclxuICAgICAgICAgIE11bHRpRmlsZS5Jc011bHRpcGxlRmlsZSA9IHRydWU7XHJcbiAgICAgICAgICBNdWx0aUZpbGUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgTXVsdGlGaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9JbWFnZVVwbG9hZFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuSW1hZ2U6XHJcbiAgICAgICAgICBsZXQgSW1hZ2UgPSBuZXcgSW1hZ2VVcGxvYWRPcHRpb25zKCk7XHJcbiAgICAgICAgICBJbWFnZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgSW1hZ2UuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSW1hZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdmVyUGhvdG86XHJcbiAgICAgICAgICBsZXQgQ292ZXJQaG90byA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdmVyUGhvdG8uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdmVyUGhvdG8uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ292ZXJQaG90by5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ292ZXJQaG90by5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZVNpemVJbk1CKVxyXG4gICAgICAgICAgICBDb3ZlclBob3RvLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgQ292ZXJQaG90bylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTW9iaWxlXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Nb2JpbGU6XHJcbiAgICAgICAgICBsZXQgTW9iaWxlID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgICAgICAgTW9iaWxlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBNb2JpbGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTW9iaWxlLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBNb2JpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTW9iaWxlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTW9iaWxlLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTW9iaWxlLkFsbG93U2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5QaG9uZVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLlNlbGVjdEZpcnN0Q291bnRyeSA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuRW5hYmxlUGxhY2Vob2xkZXIgPSB0cnVlXHJcbiAgICAgICAgICBNb2JpbGUuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFBob25lQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFBob25lQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBNb2JpbGUpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL011bHRpbGluZVRleHRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bHRpbGluZVRleHQ6XHJcbiAgICAgICAgICBsZXQgTXVsdGlsaW5lVGV4dCA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSFRNTC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBIVE1MLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBIVE1MLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEhUTUwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBIVE1MLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIEhUTUwuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgSFRNTC5IZWlnaHQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMucm93cztcclxuICAgICAgICAgIEhUTUwuRm9yY2VEaXJlY3Rpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuRm9yY2VEaXJlY3Rpb25cclxuICAgICAgICAgIEhUTUwuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEh0bWxFZGl0b3JDb21wb25lbnQ+KHRoaXMuSXRlbSwgSHRtbEVkaXRvckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSFRNTClcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vQm9vbGVhblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuQm9vbGVhbjpcclxuICAgICAgICAgIGxldCBCb29sZWFuID0gbmV3IFRvZ2dsZVNsaWRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgQm9vbGVhbi5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQm9vbGVhbi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBCb29sZWFuLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBCb29sZWFuLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQm9vbGVhbi5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRvZ2dsZXNsaWRlQ29tcG9uZW50Pih0aGlzLkl0ZW0sIFRvZ2dsZXNsaWRlQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBCb29sZWFuKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Mb2NhdGlvblxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTG9jYXRpb246XHJcbiAgICAgICAgICBsZXQgTG9jYXRpb24gPSBuZXcgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucygpO1xyXG4gICAgICAgICAgTG9jYXRpb24uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICBMb2NhdGlvbi5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudD4odGhpcy5JdGVtLCBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIExvY2F0aW9uKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMuaXRlbU51bWJlcilcclxuICAgIGlmIChjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZSkge1xyXG4gICAgICBsZXQgbmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIucHJldmlvdXNWYWx1ZS50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLmdyb3VwLmNvbnRyb2xzW25hbWVdLnZhbHVlXHJcbiAgICAgIHRoaXMuSXRlbS5jbGVhcigpXHJcbiAgICAgIHRoaXMuZ3JvdXAucmVtb3ZlQ29udHJvbChuYW1lKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sVHlwZSkge1xyXG4gICAgICAgIC8vL1RleHRCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICBsZXQgVGV4dCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUZXh0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIFRleHQuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOYW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE5hbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIE5hbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTmFtZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE5hbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgTmFtZS5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIE5hbWUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgTmFtZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkVtYWlsOlxyXG4gICAgICAgICAgbGV0IEVtYWlsID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBFbWFpbC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBFbWFpbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBFbWFpbC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRW1haWwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRW1haWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBOdW1iZXIuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOdW1iZXIuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgTnVtYmVyLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTnVtYmVyLlR5cGUgPSBJbnB1dFR5cGUuTnVtYmVyO1xyXG4gICAgICAgICAgbGV0IHJhbmdlTnVtYmVyID0gbmV3IFJhbmdlTnVtYmVyKClcclxuICAgICAgICAgIHJhbmdlTnVtYmVyLlRvID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgcmFuZ2VOdW1iZXIuRnJvbSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE51bWJlci5OdW1iZXJSYW5nZSA9IHJhbmdlTnVtYmVyO1xyXG4gICAgICAgICAgTnVtYmVyLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE51bWJlcilcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvLy9EYXRlVGltZVxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuRGF0ZTpcclxuICAgICAgICAgIGxldCBEYXRlID0gbmV3IERhdGVQaWNrZXJPcHRpb25zKCk7XHJcbiAgICAgICAgICBEYXRlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIERhdGUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgRGF0ZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBEYXRlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIERhdGUuUGlja2VyVHlwZSA9IFBpY2tlclR5cGUuQ2FsZW5kYXI7XHJcbiAgICAgICAgICBEYXRlLlNlbGVjdE1vZGUgPSBTZWxlY3RNb2RlLlNpbmdsZVxyXG4gICAgICAgICAgRGF0ZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIERhdGUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERhdGVJbnB1dENvbXBvbmVudD4odGhpcy5JdGVtLCBEYXRlSW5wdXRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIERhdGUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5EYXRlVGltZTpcclxuICAgICAgICAgIGxldCBEYXRlVGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgRGF0ZVRpbWUuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIERhdGVUaW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIERhdGVUaW1lLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBEYXRlVGltZS5QaWNrZXJUeXBlID0gUGlja2VyVHlwZS5Cb3RoO1xyXG4gICAgICAgICAgRGF0ZVRpbWUuU2VsZWN0TW9kZSA9IFNlbGVjdE1vZGUuU2luZ2xlXHJcbiAgICAgICAgICBEYXRlVGltZS5TdGFydFZpZXcgPSBTdGFydFZpZXcuTW9udGhcclxuICAgICAgICAgIERhdGVUaW1lLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBEYXRlVGltZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRpbWU6XHJcbiAgICAgICAgICBsZXQgVGltZSA9IG5ldyBEYXRlUGlja2VyT3B0aW9ucygpO1xyXG4gICAgICAgICAgVGltZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUaW1lLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRpbWUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRpbWUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGltZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRpbWUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUaW1lLlBpY2tlclR5cGUgPSBQaWNrZXJUeXBlLlRpbWVyO1xyXG4gICAgICAgICAgVGltZS5TZWxlY3RNb2RlID0gU2VsZWN0TW9kZS5TaW5nbGVcclxuICAgICAgICAgIFRpbWUuU3RhcnRWaWV3ID0gU3RhcnRWaWV3Lk1vbnRoXHJcbiAgICAgICAgICBUaW1lLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEYXRlSW5wdXRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRGF0ZUlucHV0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBUaW1lKVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIC8vRHJvcGRvd25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLlNpbmdsZVNlbGVjdDpcclxuICAgICAgICAgIGxldCBTaW5nbGVTZWxlY3QgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgU2luZ2xlU2VsZWN0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlXHJcbiAgICAgICAgICBTaW5nbGVTZWxlY3QuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIFNpbmdsZVNlbGVjdC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBTaW5nbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk11bGlwbGVTZWxlY3Q6XHJcbiAgICAgICAgICBsZXQgTXVsaXBsZVNlbGVjdCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTXVsaXBsZVNlbGVjdC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2luZ2xlU2VsZWN0aW9uID0gZmFsc2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIE11bGlwbGVTZWxlY3QuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaGFzU2VhcmNoXHJcbiAgICAgICAgICBNdWxpcGxlU2VsZWN0LlNlbGVjdGVkSXRlbXMgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PERyb3Bkb3duTGlzdENvbXBvbmVudD4odGhpcy5JdGVtLCBEcm9wZG93bkxpc3RDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bGlwbGVTZWxlY3QpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkdvYWw6XHJcbiAgICAgICAgICBsZXQgR29hbCA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIEdvYWwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgR29hbC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBHb2FsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBHb2FsLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEdvYWwuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBHb2FsLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgR29hbC5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIEdvYWwuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBHb2FsLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBHb2FsLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgR29hbC5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBHb2FsKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5DaGFsbGVuZ2U6XHJcbiAgICAgICAgICBsZXQgQ2hhbGxlbmdlID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICAgICAgQ2hhbGxlbmdlLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENoYWxsZW5nZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIENoYWxsZW5nZS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDaGFsbGVuZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBDaGFsbGVuZ2UuU2hvd0NoZWNrYm94ID0gZmFsc2VcclxuICAgICAgICAgIENoYWxsZW5nZS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENoYWxsZW5nZS5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBDaGFsbGVuZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLklubm92YXRpb25MYWI6XHJcbiAgICAgICAgICBsZXQgSW5ub3ZhdGlvbkxhYiA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIElubm92YXRpb25MYWIuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5EYXRhU291cmNlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmRhdGFTb3VyY2VcclxuICAgICAgICAgIElubm92YXRpb25MYWIuU2luZ2xlU2VsZWN0aW9uID0gIXRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5pc011bHRpcGxlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLlNob3dDaGVja2JveCA9IGZhbHNlXHJcbiAgICAgICAgICBJbm5vdmF0aW9uTGFiLkFsbG93U2VhcmNoRmlsdGVyID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLmhhc1NlYXJjaFxyXG4gICAgICAgICAgSW5ub3ZhdGlvbkxhYi5TZWxlY3RlZEl0ZW1zID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxEcm9wZG93bkxpc3RDb21wb25lbnQ+KHRoaXMuSXRlbSwgRHJvcGRvd25MaXN0Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBJbm5vdmF0aW9uTGFiKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Db3VudHJ5OlxyXG4gICAgICAgICAgbGV0IENvdW50cnkgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgICAgICBDb3VudHJ5Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIENvdW50cnkuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQ291bnRyeS5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBDb3VudHJ5LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgQ291bnRyeS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIENvdW50cnkuRGF0YVNvdXJjZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5kYXRhU291cmNlXHJcbiAgICAgICAgICBDb3VudHJ5LlNpbmdsZVNlbGVjdGlvbiA9ICF0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuaXNNdWx0aXBsZVxyXG4gICAgICAgICAgQ291bnRyeS5TaG93Q2hlY2tib3ggPSBmYWxzZVxyXG4gICAgICAgICAgQ291bnRyeS5BbGxvd1NlYXJjaEZpbHRlciA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5oYXNTZWFyY2hcclxuICAgICAgICAgIENvdW50cnkuU2VsZWN0ZWRJdGVtcyA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8RHJvcGRvd25MaXN0Q29tcG9uZW50Pih0aGlzLkl0ZW0sIERyb3Bkb3duTGlzdENvbXBvbmVudCwgdGhpcy5ncm91cCwgQ291bnRyeSlcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAvL0ZpbGVVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkZpbGU6XHJcbiAgICAgICAgICBsZXQgRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBGaWxlLkZpbGVNYXhTaXplSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIEZpbGUuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEZpbGVVcGxvYWRDb21wb25lbnQ+KHRoaXMuSXRlbSwgRmlsZVVwbG9hZENvbXBvbmVudCwgdGhpcy5ncm91cCwgRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuTXVsdGlGaWxlOlxyXG4gICAgICAgICAgbGV0IE11bHRpRmlsZSA9IG5ldyBGaWxlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgRmlsZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBGaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEZpbGUuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEZpbGUuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgRmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEZpbGUuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBNdWx0aUZpbGUuTWF4U2l6ZUZvckFsbEZpbGVzSW5NQiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUJcclxuICAgICAgICAgIE11bHRpRmlsZS5NYXhOb09mRmlsZXMgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4RmlsZUNvdW50XHJcbiAgICAgICAgICBNdWx0aUZpbGUuSXNNdWx0aXBsZUZpbGUgPSB0cnVlO1xyXG4gICAgICAgICAgTXVsdGlGaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxGaWxlVXBsb2FkQ29tcG9uZW50Pih0aGlzLkl0ZW0sIEZpbGVVcGxvYWRDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpRmlsZSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vSW1hZ2VVcGxvYWRcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkltYWdlOlxyXG4gICAgICAgICAgbGV0IEltYWdlID0gbmV3IEltYWdlVXBsb2FkT3B0aW9ucygpO1xyXG4gICAgICAgICAgSW1hZ2UuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgSW1hZ2UuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEltYWdlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIEltYWdlLlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgSW1hZ2UuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQilcclxuICAgICAgICAgICAgSW1hZ2UuRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgSW1hZ2UuVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PEltYWdlVXBsb2FkZXJDb21wb25lbnQ+KHRoaXMuSXRlbSwgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCwgdGhpcy5ncm91cCwgSW1hZ2UpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkNvdmVyUGhvdG86XHJcbiAgICAgICAgICBsZXQgQ292ZXJQaG90byA9IG5ldyBJbWFnZVVwbG9hZE9wdGlvbnMoKTtcclxuICAgICAgICAgIENvdmVyUGhvdG8uTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgQ292ZXJQaG90by5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBDb3ZlclBob3RvLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIENvdmVyUGhvdG8uVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBDb3ZlclBob3RvLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhGaWxlU2l6ZUluTUIpXHJcbiAgICAgICAgICAgIENvdmVyUGhvdG8uRmlsZU1heFNpemVJbk1CID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heEZpbGVTaXplSW5NQlxyXG4gICAgICAgICAgQ292ZXJQaG90by5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SW1hZ2VVcGxvYWRlckNvbXBvbmVudD4odGhpcy5JdGVtLCBJbWFnZVVwbG9hZGVyQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBDb3ZlclBob3RvKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Nb2JpbGVcclxuICAgICAgICBjYXNlIERhdGFUeXBlLk1vYmlsZTpcclxuICAgICAgICAgIGxldCBNb2JpbGUgPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICAgICAgICBNb2JpbGUuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyBjaGFuZ2VzLml0ZW1OdW1iZXIuY3VycmVudFZhbHVlICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTW9iaWxlLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE1vYmlsZS5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTW9iaWxlLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE1vYmlsZS5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE1vYmlsZS5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIE1vYmlsZS5BbGxvd1NlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICBNb2JpbGUuUGhvbmVWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIE1vYmlsZS5TZWxlY3RGaXJzdENvdW50cnkgPSB0cnVlO1xyXG4gICAgICAgICAgTW9iaWxlLkVuYWJsZVBsYWNlaG9sZGVyID0gdHJ1ZVxyXG4gICAgICAgICAgTW9iaWxlLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxQaG9uZUNvbXBvbmVudD4odGhpcy5JdGVtLCBQaG9uZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgTW9iaWxlKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9NdWx0aWxpbmVUZXh0XHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5NdWx0aWxpbmVUZXh0OlxyXG4gICAgICAgICAgbGV0IE11bHRpbGluZVRleHQgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBNdWx0aWxpbmVUZXh0LlZpZXdUeXBlID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLlZpZXdUeXBlO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBNdWx0aWxpbmVUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIE11bHRpbGluZVRleHQuUm93cyA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgTXVsdGlsaW5lVGV4dC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dEFyZWFDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dEFyZWFDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE11bHRpbGluZVRleHQpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvL0hUTUxcclxuICAgICAgICBjYXNlIERhdGFUeXBlLkhUTUw6XHJcbiAgICAgICAgICBsZXQgSFRNTCA9IG5ldyBIdG1sRWRpdG9yT3B0aW9ucygpO1xyXG4gICAgICAgICAgSFRNTC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIGNoYW5nZXMuaXRlbU51bWJlci5jdXJyZW50VmFsdWUgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBIVE1MLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEhUTUwuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIEhUTUwuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgSFRNTC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEhUTUwuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5NYXhMZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoXHJcbiAgICAgICAgICBpZiAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aClcclxuICAgICAgICAgICAgSFRNTC5NaW5MZW5ndGggPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoXHJcbiAgICAgICAgICBIVE1MLkhlaWdodCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5yb3dzO1xyXG4gICAgICAgICAgSFRNTC5Gb3JjZURpcmVjdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Gb3JjZURpcmVjdGlvblxyXG4gICAgICAgICAgSFRNTC5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8SHRtbEVkaXRvckNvbXBvbmVudD4odGhpcy5JdGVtLCBIdG1sRWRpdG9yQ29tcG9uZW50LCB0aGlzLmdyb3VwLCBIVE1MKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy9Cb29sZWFuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5Cb29sZWFuOlxyXG4gICAgICAgICAgbGV0IEJvb2xlYW4gPSBuZXcgVG9nZ2xlU2xpZGVPcHRpb25zKCk7XHJcbiAgICAgICAgICBCb29sZWFuLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEJvb2xlYW4uSGlkZUxhYmVsID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkhpZGVMYWJlbFxyXG4gICAgICAgICAgQm9vbGVhbi5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgQm9vbGVhbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEJvb2xlYW4uTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBCb29sZWFuLlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUb2dnbGVzbGlkZUNvbXBvbmVudD4odGhpcy5JdGVtLCBUb2dnbGVzbGlkZUNvbXBvbmVudCwgdGhpcy5ncm91cCwgQm9vbGVhbilcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vTG9jYXRpb25cclxuICAgICAgICBjYXNlIERhdGFUeXBlLkxvY2F0aW9uOlxyXG4gICAgICAgICAgbGV0IExvY2F0aW9uID0gbmV3IE1hcEF1dG9Db21wbGV0ZU9wdGlvbnMoKTtcclxuICAgICAgICAgIExvY2F0aW9uLk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgY2hhbmdlcy5pdGVtTnVtYmVyLmN1cnJlbnRWYWx1ZSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIExvY2F0aW9uLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBMb2NhdGlvbi5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBMb2NhdGlvbi5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIExvY2F0aW9uLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgTG9jYXRpb24uVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudD4odGhpcy5JdGVtLCBNYXBBdXRvQ29tcGxldGVDb21wb25lbnQsIHRoaXMuZ3JvdXAsIExvY2F0aW9uKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG59XHJcbiJdfQ==