@bnsights/bbsf-controls 1.0.27 → 1.0.30

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 (37) hide show
  1. package/README.md +7 -18
  2. package/bnsights-bbsf-controls-1.0.30.tgz +0 -0
  3. package/bnsights-bbsf-controls.metadata.json +1 -1
  4. package/bundles/bnsights-bbsf-controls.umd.js +555 -382
  5. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  6. package/esm2015/lib/Shared/Enums/LanguageValidation.js +6 -0
  7. package/esm2015/lib/Shared/Models/RepeaterField.js +1 -1
  8. package/esm2015/lib/Shared/Models/RepeaterOptions.js +2 -1
  9. package/esm2015/lib/Shared/Models/TextBoxOptions.js +3 -1
  10. package/esm2015/lib/Shared/services/validationErrorMassage.service.js +12 -12
  11. package/esm2015/lib/controls/ConfirmationModal/ConfirmationModal.component.js +2 -2
  12. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +8 -3
  13. package/esm2015/lib/controls/ImageUpload/ImageUpload.component.js +4 -4
  14. package/esm2015/lib/controls/MultiLingualTextArea/MultiLingualTextArea.component.js +3 -3
  15. package/esm2015/lib/controls/MultiLingualTextBox/MultiLingualTextBox.component.js +3 -3
  16. package/esm2015/lib/controls/Repeater/repeater/repeater.component.js +15 -9
  17. package/esm2015/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.js +376 -336
  18. package/esm2015/lib/controls/Repeater/repeater-table/repeater-table.component.js +105 -0
  19. package/esm2015/lib/controls/TextArea/TextArea.component.js +2 -2
  20. package/esm2015/lib/controls/TextBox/TextBox.component.js +15 -14
  21. package/esm2015/lib/controls/bbsf-controls.module.js +4 -1
  22. package/esm2015/public-api.js +3 -1
  23. package/fesm2015/bnsights-bbsf-controls.js +543 -380
  24. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  25. package/lib/Shared/Enums/LanguageValidation.d.ts +4 -0
  26. package/lib/Shared/Models/RepeaterField.d.ts +1 -0
  27. package/lib/Shared/Models/RepeaterOptions.d.ts +3 -0
  28. package/lib/Shared/Models/TextBoxOptions.d.ts +3 -0
  29. package/lib/controls/DateTimePicker/DateTimePicker.component.d.ts +3 -1
  30. package/lib/controls/ImageUpload/ImageUpload.component.d.ts +1 -1
  31. package/lib/controls/Repeater/repeater/repeater.component.d.ts +2 -1
  32. package/lib/controls/Repeater/repeater-field-builder/repeater-field-builder.component.d.ts +3 -0
  33. package/lib/controls/Repeater/repeater-table/repeater-table.component.d.ts +16 -0
  34. package/package.json +2 -2
  35. package/public-api.d.ts +2 -0
  36. package/src/lib/assets/Style.css +0 -9
  37. package/bnsights-bbsf-controls-1.0.27.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
@@ -48,10 +60,12 @@ export class RepeaterFieldBuilderComponent {
48
60
  Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
49
61
  Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
50
62
  Text.Type = InputType.Text;
63
+ Text.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
51
64
  if (this.RepeaterField.ControlOptions.maxLength)
52
65
  Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
53
66
  if (this.RepeaterField.ControlOptions.minLength)
54
67
  Text.MinLength = this.RepeaterField.ControlOptions.minLength;
68
+ Text.Value = this.value;
55
69
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
56
70
  break;
57
71
  case DataType.Name:
@@ -61,12 +75,14 @@ export class RepeaterFieldBuilderComponent {
61
75
  Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
62
76
  Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
63
77
  Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
78
+ Name.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
64
79
  Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
65
80
  if (this.RepeaterField.ControlOptions.maxLength)
66
81
  Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
67
82
  if (this.RepeaterField.ControlOptions.minLength)
68
83
  Name.MinLength = this.RepeaterField.ControlOptions.minLength;
69
84
  Name.Type = InputType.Text;
85
+ Name.Value = this.value;
70
86
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
71
87
  break;
72
88
  case DataType.Email:
@@ -76,8 +92,10 @@ export class RepeaterFieldBuilderComponent {
76
92
  Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
77
93
  Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
78
94
  Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
95
+ Email.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
79
96
  Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
80
97
  Email.Type = InputType.Email;
98
+ Email.Value = this.value;
81
99
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
82
100
  break;
83
101
  case DataType.Number:
@@ -87,12 +105,14 @@ export class RepeaterFieldBuilderComponent {
87
105
  Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
88
106
  Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
89
107
  Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
108
+ Number.LanguageValidation = this.RepeaterField.ControlOptions.LanguageValidation;
90
109
  Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
91
110
  Number.Type = InputType.Number;
92
111
  let rangeNumber = new RangeNumber();
93
112
  rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
94
113
  rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
95
114
  Number.NumberRange = rangeNumber;
115
+ Number.Value = this.value;
96
116
  this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
97
117
  break;
98
118
  ///DateTime
@@ -107,6 +127,7 @@ export class RepeaterFieldBuilderComponent {
107
127
  Date.PickerType = PickerType.Calendar;
108
128
  Date.SelectMode = SelectMode.Single;
109
129
  Date.StartView = StartView.Month;
130
+ Date.Value = this.value;
110
131
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
111
132
  break;
112
133
  case DataType.DateTime:
@@ -120,6 +141,7 @@ export class RepeaterFieldBuilderComponent {
120
141
  DateTime.PickerType = PickerType.Both;
121
142
  DateTime.SelectMode = SelectMode.Single;
122
143
  DateTime.StartView = StartView.Month;
144
+ DateTime.Value = this.value;
123
145
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
124
146
  break;
125
147
  case DataType.Time:
@@ -133,6 +155,7 @@ export class RepeaterFieldBuilderComponent {
133
155
  Time.PickerType = PickerType.Timer;
134
156
  Time.SelectMode = SelectMode.Single;
135
157
  Time.StartView = StartView.Month;
158
+ Time.Value = this.value;
136
159
  this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
137
160
  break;
138
161
  //Dropdown
@@ -148,6 +171,7 @@ export class RepeaterFieldBuilderComponent {
148
171
  SingleSelect.SingleSelection = true;
149
172
  SingleSelect.ShowCheckbox = false;
150
173
  SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
174
+ SingleSelect.SelectedItems = this.value;
151
175
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
152
176
  break;
153
177
  case DataType.MulipleSelect:
@@ -162,6 +186,7 @@ export class RepeaterFieldBuilderComponent {
162
186
  MulipleSelect.SingleSelection = false;
163
187
  MulipleSelect.ShowCheckbox = false;
164
188
  MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
189
+ MulipleSelect.SelectedItems = this.value;
165
190
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
166
191
  break;
167
192
  case DataType.Goal:
@@ -176,6 +201,7 @@ export class RepeaterFieldBuilderComponent {
176
201
  Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
177
202
  Goal.ShowCheckbox = false;
178
203
  Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
204
+ Goal.SelectedItems = this.value;
179
205
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
180
206
  break;
181
207
  case DataType.Challenge:
@@ -191,6 +217,7 @@ export class RepeaterFieldBuilderComponent {
191
217
  Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
192
218
  Challenge.ShowCheckbox = false;
193
219
  Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
220
+ Challenge.SelectedItems = this.value;
194
221
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
195
222
  break;
196
223
  case DataType.InnovationLab:
@@ -205,6 +232,7 @@ export class RepeaterFieldBuilderComponent {
205
232
  InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
206
233
  InnovationLab.ShowCheckbox = false;
207
234
  InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
235
+ InnovationLab.SelectedItems = this.value;
208
236
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
209
237
  break;
210
238
  case DataType.Country:
@@ -219,6 +247,7 @@ export class RepeaterFieldBuilderComponent {
219
247
  Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
220
248
  Country.ShowCheckbox = false;
221
249
  Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
250
+ Country.SelectedItems = this.value;
222
251
  this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
223
252
  break;
224
253
  //FileUpload
@@ -231,6 +260,7 @@ export class RepeaterFieldBuilderComponent {
231
260
  File.ViewType = this.RepeaterField.ControlOptions.ViewType;
232
261
  File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
233
262
  File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
263
+ File.Value = this.value;
234
264
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
235
265
  break;
236
266
  case DataType.MultiFile:
@@ -244,6 +274,7 @@ export class RepeaterFieldBuilderComponent {
244
274
  MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
245
275
  MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
246
276
  MultiFile.IsMultipleFile = true;
277
+ MultiFile.Value = this.value;
247
278
  this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
248
279
  break;
249
280
  //ImageUpload
@@ -257,6 +288,7 @@ export class RepeaterFieldBuilderComponent {
257
288
  Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
258
289
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
259
290
  Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
291
+ Image.Value = this.value;
260
292
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
261
293
  break;
262
294
  case DataType.CoverPhoto:
@@ -269,6 +301,7 @@ export class RepeaterFieldBuilderComponent {
269
301
  CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
270
302
  if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
271
303
  CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
304
+ CoverPhoto.Value = this.value;
272
305
  this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
273
306
  break;
274
307
  //Mobile
@@ -284,6 +317,7 @@ export class RepeaterFieldBuilderComponent {
284
317
  Mobile.PhoneValidation = true;
285
318
  Mobile.SelectFirstCountry = true;
286
319
  Mobile.EnablePlaceholder = true;
320
+ Mobile.Value = this.value;
287
321
  this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
288
322
  break;
289
323
  //MultilineText
@@ -301,6 +335,7 @@ export class RepeaterFieldBuilderComponent {
301
335
  MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
302
336
  MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
303
337
  MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
338
+ MultilineText.Value = this.value;
304
339
  this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
305
340
  break;
306
341
  //HTML
@@ -318,6 +353,7 @@ export class RepeaterFieldBuilderComponent {
318
353
  HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
319
354
  HTML.Height = this.RepeaterField.ControlOptions.rows;
320
355
  HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
356
+ HTML.Value = this.value;
321
357
  this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
322
358
  break;
323
359
  //Boolean
@@ -327,6 +363,7 @@ export class RepeaterFieldBuilderComponent {
327
363
  Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
328
364
  Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
329
365
  Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
366
+ Boolean.Value = this.value;
330
367
  Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
331
368
  this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
332
369
  break;
@@ -338,6 +375,7 @@ export class RepeaterFieldBuilderComponent {
338
375
  Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
339
376
  Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
340
377
  Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
378
+ Location.Value = this.value;
341
379
  Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
342
380
  this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
343
381
  break;
@@ -347,341 +385,342 @@ export class RepeaterFieldBuilderComponent {
347
385
  }, 0);
348
386
  }
349
387
  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;
388
+ if (changes.itemNumber)
389
+ if (changes.itemNumber.previousValue) {
390
+ let name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.previousValue.toString() + "." + this.controlNumber.toString();
391
+ let value = this.group.controls[name].value;
392
+ this.Item.clear();
393
+ this.group.removeControl(name);
394
+ switch (this.RepeaterField.ControlType) {
395
+ ///TextBox
396
+ case DataType.Text:
397
+ let Text = new TextBoxOptions();
398
+ Text.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
399
+ Text.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
400
+ Text.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
401
+ Text.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
402
+ Text.ViewType = this.RepeaterField.ControlOptions.ViewType;
403
+ Text.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
404
+ Text.Type = InputType.Text;
405
+ if (this.RepeaterField.ControlOptions.maxLength)
406
+ Text.MaxLength = this.RepeaterField.ControlOptions.maxLength;
407
+ if (this.RepeaterField.ControlOptions.minLength)
408
+ Text.MinLength = this.RepeaterField.ControlOptions.minLength;
409
+ Text.Value = value;
410
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Text);
411
+ break;
412
+ case DataType.Name:
413
+ let Name = new TextBoxOptions();
414
+ Name.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
415
+ Name.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
416
+ Name.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
417
+ Name.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
418
+ Name.ViewType = this.RepeaterField.ControlOptions.ViewType;
419
+ Name.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
420
+ if (this.RepeaterField.ControlOptions.maxLength)
421
+ Name.MaxLength = this.RepeaterField.ControlOptions.maxLength;
422
+ if (this.RepeaterField.ControlOptions.minLength)
423
+ Name.MinLength = this.RepeaterField.ControlOptions.minLength;
424
+ Name.Type = InputType.Text;
425
+ Name.Value = value;
426
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Name);
427
+ break;
428
+ case DataType.Email:
429
+ let Email = new TextBoxOptions();
430
+ Email.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
431
+ Email.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
432
+ Email.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
433
+ Email.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
434
+ Email.ViewType = this.RepeaterField.ControlOptions.ViewType;
435
+ Email.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
436
+ Email.Type = InputType.Email;
437
+ Email.Value = value;
438
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Email);
439
+ break;
440
+ case DataType.Number:
441
+ let Number = new TextBoxOptions();
442
+ Number.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
443
+ Number.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
444
+ Number.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
445
+ Number.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
446
+ Number.ViewType = this.RepeaterField.ControlOptions.ViewType;
447
+ Number.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
448
+ Number.Type = InputType.Number;
449
+ let rangeNumber = new RangeNumber();
450
+ rangeNumber.To = this.RepeaterField.ControlOptions.maxLength;
451
+ rangeNumber.From = this.RepeaterField.ControlOptions.minLength;
452
+ Number.NumberRange = rangeNumber;
453
+ Number.Value = value;
454
+ this.renderComponentService.renderDynamicComponent(this.Item, TextboxComponent, this.group, Number);
455
+ break;
456
+ ///DateTime
457
+ case DataType.Date:
458
+ let Date = new DatePickerOptions();
459
+ Date.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
460
+ Date.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
461
+ Date.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
462
+ Date.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
463
+ Date.ViewType = this.RepeaterField.ControlOptions.ViewType;
464
+ Date.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
465
+ Date.PickerType = PickerType.Calendar;
466
+ Date.SelectMode = SelectMode.Single;
467
+ Date.StartView = StartView.Month;
468
+ Date.Value = value;
469
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Date);
470
+ break;
471
+ case DataType.DateTime:
472
+ let DateTime = new DatePickerOptions();
473
+ DateTime.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
474
+ DateTime.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
475
+ DateTime.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
476
+ DateTime.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
477
+ DateTime.ViewType = this.RepeaterField.ControlOptions.ViewType;
478
+ DateTime.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
479
+ DateTime.PickerType = PickerType.Both;
480
+ DateTime.SelectMode = SelectMode.Single;
481
+ DateTime.StartView = StartView.Month;
482
+ DateTime.Value = value;
483
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, DateTime);
484
+ break;
485
+ case DataType.Time:
486
+ let Time = new DatePickerOptions();
487
+ Time.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
488
+ Time.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
489
+ Time.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
490
+ Time.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
491
+ Time.ViewType = this.RepeaterField.ControlOptions.ViewType;
492
+ Time.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
493
+ Time.PickerType = PickerType.Timer;
494
+ Time.SelectMode = SelectMode.Single;
495
+ Time.StartView = StartView.Month;
496
+ Time.Value = value;
497
+ this.renderComponentService.renderDynamicComponent(this.Item, DateInputComponent, this.group, Time);
498
+ break;
499
+ //Dropdown
500
+ case DataType.SingleSelect:
501
+ let SingleSelect = new DropdownOptions();
502
+ SingleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
503
+ SingleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
504
+ SingleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
505
+ SingleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
506
+ SingleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
507
+ SingleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
508
+ SingleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
509
+ SingleSelect.SingleSelection = true;
510
+ SingleSelect.ShowCheckbox = false;
511
+ SingleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
512
+ SingleSelect.SelectedItems = value;
513
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, SingleSelect);
514
+ break;
515
+ case DataType.MulipleSelect:
516
+ let MulipleSelect = new DropdownOptions();
517
+ MulipleSelect.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
518
+ MulipleSelect.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
519
+ MulipleSelect.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
520
+ MulipleSelect.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
521
+ MulipleSelect.ViewType = this.RepeaterField.ControlOptions.ViewType;
522
+ MulipleSelect.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
523
+ MulipleSelect.DataSource = this.RepeaterField.ControlOptions.dataSource;
524
+ MulipleSelect.SingleSelection = false;
525
+ MulipleSelect.ShowCheckbox = false;
526
+ MulipleSelect.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
527
+ MulipleSelect.SelectedItems = value;
528
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, MulipleSelect);
529
+ break;
530
+ case DataType.Goal:
531
+ let Goal = new DropdownOptions();
532
+ Goal.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
533
+ Goal.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
534
+ Goal.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
535
+ Goal.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
536
+ Goal.ViewType = this.RepeaterField.ControlOptions.ViewType;
537
+ Goal.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
538
+ Goal.DataSource = this.RepeaterField.ControlOptions.dataSource;
539
+ Goal.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
540
+ Goal.ShowCheckbox = false;
541
+ Goal.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
542
+ Goal.SelectedItems = value;
543
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Goal);
544
+ break;
545
+ case DataType.Challenge:
546
+ let Challenge = new DropdownOptions();
547
+ Challenge.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
548
+ Challenge.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
549
+ Challenge.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
550
+ Challenge.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
551
+ Challenge.ViewType = this.RepeaterField.ControlOptions.ViewType;
552
+ Challenge.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
553
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
554
+ Challenge.DataSource = this.RepeaterField.ControlOptions.dataSource;
555
+ Challenge.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
556
+ Challenge.ShowCheckbox = false;
557
+ Challenge.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
558
+ Challenge.SelectedItems = value;
559
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Challenge);
560
+ break;
561
+ case DataType.InnovationLab:
562
+ let InnovationLab = new DropdownOptions();
563
+ InnovationLab.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
564
+ InnovationLab.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
565
+ InnovationLab.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
566
+ InnovationLab.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
567
+ InnovationLab.ViewType = this.RepeaterField.ControlOptions.ViewType;
568
+ InnovationLab.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
569
+ InnovationLab.DataSource = this.RepeaterField.ControlOptions.dataSource;
570
+ InnovationLab.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
571
+ InnovationLab.ShowCheckbox = false;
572
+ InnovationLab.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
573
+ InnovationLab.SelectedItems = value;
574
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, InnovationLab);
575
+ break;
576
+ case DataType.Country:
577
+ let Country = new DropdownOptions();
578
+ Country.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
579
+ Country.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
580
+ Country.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
581
+ Country.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
582
+ Country.ViewType = this.RepeaterField.ControlOptions.ViewType;
583
+ Country.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
584
+ Country.DataSource = this.RepeaterField.ControlOptions.dataSource;
585
+ Country.SingleSelection = !this.RepeaterField.ControlOptions.isMultiple;
586
+ Country.ShowCheckbox = false;
587
+ Country.AllowSearchFilter = this.RepeaterField.ControlOptions.hasSearch;
588
+ Country.SelectedItems = value;
589
+ this.renderComponentService.renderDynamicComponent(this.Item, DropdownListComponent, this.group, Country);
590
+ break;
591
+ //FileUpload
592
+ case DataType.File:
593
+ let File = new FileUploadOptions();
594
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
595
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
596
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
597
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
598
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
599
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
600
+ File.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
601
+ File.Value = value;
602
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, File);
603
+ break;
604
+ case DataType.MultiFile:
605
+ let MultiFile = new FileUploadOptions();
606
+ File.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
607
+ File.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
608
+ File.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
609
+ File.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
610
+ File.ViewType = this.RepeaterField.ControlOptions.ViewType;
611
+ File.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
612
+ MultiFile.MaxSizeForAllFilesInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
613
+ MultiFile.MaxNoOfFiles = this.RepeaterField.ControlOptions.maxFileCount;
614
+ MultiFile.IsMultipleFile = true;
615
+ MultiFile.Value = value;
616
+ this.renderComponentService.renderDynamicComponent(this.Item, FileUploadComponent, this.group, MultiFile);
617
+ break;
618
+ //ImageUpload
619
+ case DataType.Image:
620
+ let Image = new ImageUploadOptions();
621
+ Image.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
622
+ Image.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
623
+ Image.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
624
+ Image.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
625
+ Image.ViewType = this.RepeaterField.ControlOptions.ViewType;
626
+ Image.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
627
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
628
+ Image.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
629
+ Image.Value = value;
630
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, Image);
631
+ break;
632
+ case DataType.CoverPhoto:
633
+ let CoverPhoto = new ImageUploadOptions();
634
+ CoverPhoto.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
635
+ CoverPhoto.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
636
+ CoverPhoto.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
637
+ CoverPhoto.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
638
+ CoverPhoto.ViewType = this.RepeaterField.ControlOptions.ViewType;
639
+ CoverPhoto.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
640
+ if (this.RepeaterField.ControlOptions.maxFileSizeInMB)
641
+ CoverPhoto.FileMaxSizeInMB = this.RepeaterField.ControlOptions.maxFileSizeInMB;
642
+ CoverPhoto.Value = value;
643
+ this.renderComponentService.renderDynamicComponent(this.Item, ImageUploaderComponent, this.group, CoverPhoto);
644
+ break;
645
+ //Mobile
646
+ case DataType.Mobile:
647
+ let Mobile = new PhoneOptions();
648
+ Mobile.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
649
+ Mobile.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
650
+ Mobile.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
651
+ Mobile.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
652
+ Mobile.ViewType = this.RepeaterField.ControlOptions.ViewType;
653
+ Mobile.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
654
+ Mobile.AllowSearch = true;
655
+ Mobile.PhoneValidation = true;
656
+ Mobile.SelectFirstCountry = true;
657
+ Mobile.EnablePlaceholder = true;
658
+ Mobile.Value = value;
659
+ this.renderComponentService.renderDynamicComponent(this.Item, PhoneComponent, this.group, Mobile);
660
+ break;
661
+ //MultilineText
662
+ case DataType.MultilineText:
663
+ let MultilineText = new TextAreaOptions();
664
+ MultilineText.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
665
+ MultilineText.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
666
+ MultilineText.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
667
+ MultilineText.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
668
+ MultilineText.ViewType = this.RepeaterField.ControlOptions.ViewType;
669
+ MultilineText.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
670
+ if (this.RepeaterField.ControlOptions.maxLength)
671
+ MultilineText.MaxLength = this.RepeaterField.ControlOptions.maxLength;
672
+ if (this.RepeaterField.ControlOptions.minLength)
673
+ MultilineText.MinLength = this.RepeaterField.ControlOptions.minLength;
674
+ MultilineText.Rows = this.RepeaterField.ControlOptions.rows;
675
+ MultilineText.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
676
+ MultilineText.Value = value;
677
+ this.renderComponentService.renderDynamicComponent(this.Item, TextAreaComponent, this.group, MultilineText);
678
+ break;
679
+ //HTML
680
+ case DataType.HTML:
681
+ let HTML = new HtmlEditorOptions();
682
+ HTML.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
683
+ HTML.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
684
+ HTML.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
685
+ HTML.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
686
+ HTML.ViewType = this.RepeaterField.ControlOptions.ViewType;
687
+ HTML.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
688
+ if (this.RepeaterField.ControlOptions.maxLength)
689
+ HTML.MaxLength = this.RepeaterField.ControlOptions.maxLength;
690
+ if (this.RepeaterField.ControlOptions.minLength)
691
+ HTML.MinLength = this.RepeaterField.ControlOptions.minLength;
692
+ HTML.Height = this.RepeaterField.ControlOptions.rows;
693
+ HTML.ForceDirection = this.RepeaterField.ControlOptions.ForceDirection;
694
+ HTML.Value = value;
695
+ this.renderComponentService.renderDynamicComponent(this.Item, HtmlEditorComponent, this.group, HTML);
696
+ break;
697
+ //Boolean
698
+ case DataType.Boolean:
699
+ let Boolean = new ToggleSlideOptions();
700
+ Boolean.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
701
+ Boolean.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
702
+ Boolean.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
703
+ Boolean.ViewType = this.RepeaterField.ControlOptions.ViewType;
704
+ Boolean.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
705
+ Boolean.Value = value;
706
+ this.renderComponentService.renderDynamicComponent(this.Item, ToggleslideComponent, this.group, Boolean);
707
+ break;
708
+ //Location
709
+ case DataType.Location:
710
+ let Location = new MapAutoCompleteOptions();
711
+ Location.Name = this.RepeaterField.ControlOptions.Name + "." + changes.itemNumber.currentValue + "." + this.controlNumber.toString();
712
+ Location.HideLabel = this.RepeaterField.ControlOptions.HideLabel;
713
+ Location.LabelKey = this.RepeaterField.ControlOptions.LabelKey;
714
+ Location.IsRequired = this.RepeaterField.ControlOptions.IsRequired;
715
+ Location.ViewType = this.RepeaterField.ControlOptions.ViewType;
716
+ Location.LabelDescription = this.RepeaterField.ControlOptions.LabelDescription ? this.RepeaterField.ControlOptions.LabelDescription : "";
717
+ Location.Value = value;
718
+ this.renderComponentService.renderDynamicComponent(this.Item, MapAutoCompleteComponent, this.group, Location);
719
+ break;
720
+ default:
721
+ break;
722
+ }
683
723
  }
684
- }
685
724
  }
686
725
  }
687
726
  RepeaterFieldBuilderComponent.decorators = [
@@ -699,6 +738,7 @@ RepeaterFieldBuilderComponent.propDecorators = {
699
738
  group: [{ type: Input }],
700
739
  itemNumber: [{ type: Input }],
701
740
  controlNumber: [{ type: Input }],
702
- RepeaterField: [{ type: Input }]
741
+ RepeaterField: [{ type: Input }],
742
+ itemsValue: [{ type: Input }]
703
743
  };
704
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFF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LGNBQWMsQ0FBQyxTQUFTLENBQUE7b0JBQ2hFLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFBO29CQUM5RCxRQUFRLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztvQkFDbkUsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7b0JBQy9ELFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtvQkFDeEksUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBMkIsSUFBSSxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO29CQUN2SSxNQUFNO2dCQUNSO29CQUNFLE1BQU07YUFDVDtTQUVGO0lBRUgsQ0FBQzs7O1lBM3FCRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsbURBQXNEO2FBQ3ZEOzs7WUFoQlEsc0JBQXNCO1lBbkJYLGtCQUFrQjs7O21CQXNDbkMsU0FBUyxTQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtvQkFDNUMsS0FBSzt5QkFDTCxLQUFLOzRCQUNMLEtBQUs7NEJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BibnNpZ2h0cy9iYnNmLXV0aWxpdGllcyc7XHJcbmltcG9ydCB7IERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0VudW1zJztcclxuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL0lucHV0VHlwZSc7XHJcbmltcG9ydCB7IFBpY2tlclR5cGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvUGlja2VyVHlwZSc7XHJcbmltcG9ydCB7IFNlbGVjdE1vZGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvU2VsZWN0TW9kZSc7XHJcbmltcG9ydCB7IFN0YXJ0VmlldyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TdGFydFZpZXcnO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvZGF0ZVBpY2tlck9wdGlvbnMnO1xyXG5pbXBvcnQgeyBEcm9wZG93bk9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0Ryb3Bkb3duT3B0aW9ucyc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9GaWxlVXBsb2FkT3B0aW9ucyc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9IdG1sRWRpdG9yT3B0aW9ucyc7XHJcbmltcG9ydCB7IEltYWdlVXBsb2FkT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvSW1hZ2VVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvTWFwQXV0b0NvbXBsZXRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFBob25lT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUGhvbmVPcHRpb25zJztcclxuaW1wb3J0IHsgUmFuZ2VOdW1iZXIgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1JhbmdlTnVtYmVyJztcclxuaW1wb3J0IHsgUmVwZWF0ZXJGaWVsZCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmVwZWF0ZXJGaWVsZCc7XHJcbmltcG9ydCB7IFRleHRBcmVhT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEFyZWFPcHRpb25zJztcclxuaW1wb3J0IHsgVGV4dEJveE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RleHRCb3hPcHRpb25zJztcclxuaW1wb3J0IHsgVG9nZ2xlU2xpZGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9Ub2dnbGVzbGlkZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSZW5kZXJDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL3NlcnZpY2VzL3JlbmRlci1jb21wb25lbnQtc2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0ZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRGF0ZVRpbWVQaWNrZXIvRGF0ZVRpbWVQaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRHJvcGRvd25MaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRHJvcGRvd25MaXN0L0Ryb3Bkb3duTGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBGaWxlVXBsb2FkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vRmlsZVVwbGFvZC9GaWxlVXBsYW9kLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEh0bWxFZGl0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9IdG1sRWRpdG9yL0h0bWxFZGl0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0ltYWdlVXBsb2FkL0ltYWdlVXBsb2FkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hcEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL01hcEF1dG9Db21wbGV0ZS9NYXBBdXRvQ29tcGxldGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGhvbmVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9QaG9uZS9QaG9uZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRBcmVhL1RleHRBcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRib3hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9UZXh0Qm94L1RleHRCb3guY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9nZ2xlc2xpZGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ub2dnbGVzbGlkZS90b2dnbGVzbGlkZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncmVwZWF0ZXItZmllbGQtYnVpbGRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGVhdGVyLWZpZWxkLWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVwZWF0ZXJGaWVsZEJ1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBAVmlld0NoaWxkKFwiSXRlbVwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgSXRlbTogVmlld0NvbnRhaW5lclJlZjtcclxuICBASW5wdXQoKSBncm91cDogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGl0ZW1OdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBjb250cm9sTnVtYmVyOiBudW1iZXI7XHJcbiAgQElucHV0KCkgUmVwZWF0ZXJGaWVsZDogUmVwZWF0ZXJGaWVsZDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkl0ZW0uY2xlYXIoKVxyXG4gICAgICBzd2l0Y2ggKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sVHlwZSkge1xyXG4gICAgICAgIC8vL1RleHRCb3hcclxuICAgICAgICBjYXNlIERhdGFUeXBlLlRleHQ6XHJcbiAgICAgICAgICBsZXQgVGV4dCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgVGV4dC5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgVGV4dC5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBUZXh0LkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBUZXh0LklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIFRleHQuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBUZXh0LkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/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=
744
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLWNvbnRyb2xzL3NyYy9saWIvY29udHJvbHMvUmVwZWF0ZXIvcmVwZWF0ZXItZmllbGQtYnVpbGRlci9yZXBlYXRlci1maWVsZC1idWlsZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxLQUFLLEVBQXlCLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwSCxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFF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d0JBQ3BJLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFBO3dCQUNoRSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQTt3QkFDOUQsUUFBUSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUM7d0JBQ25FLFFBQVEsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO3dCQUMvRCxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7d0JBQ3hJLFFBQVEsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO3dCQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQTJCLElBQUksQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTt3QkFDdkksTUFBTTtvQkFDUjt3QkFDRSxNQUFNO2lCQUNUO2FBRUY7SUFFSCxDQUFDOzs7WUFudEJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxtREFBc0Q7YUFDdkQ7OztZQWhCUSxzQkFBc0I7WUFwQlgsa0JBQWtCOzs7bUJBdUNuQyxTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO29CQUM1QyxLQUFLO3lCQUNMLEtBQUs7NEJBQ0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tICdAYm5zaWdodHMvYmJzZi11dGlsaXRpZXMnO1xyXG5pbXBvcnQgeyBEYXRhVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9FbnVtcyc7XHJcbmltcG9ydCB7IElucHV0VHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9JbnB1dFR5cGUnO1xyXG5pbXBvcnQgeyBMYW5ndWFnZVZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvRW51bXMvTGFuZ3VhZ2VWYWxpZGF0aW9uJztcclxuaW1wb3J0IHsgUGlja2VyVHlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9QaWNrZXJUeXBlJztcclxuaW1wb3J0IHsgU2VsZWN0TW9kZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9FbnVtcy9TZWxlY3RNb2RlJztcclxuaW1wb3J0IHsgU3RhcnRWaWV3IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL0VudW1zL1N0YXJ0Vmlldyc7XHJcbmltcG9ydCB7IERhdGVQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9kYXRlUGlja2VyT3B0aW9ucyc7XHJcbmltcG9ydCB7IERyb3Bkb3duT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvRHJvcGRvd25PcHRpb25zJztcclxuaW1wb3J0IHsgRmlsZVVwbG9hZE9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0ZpbGVVcGxvYWRPcHRpb25zJztcclxuaW1wb3J0IHsgSHRtbEVkaXRvck9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL0h0bWxFZGl0b3JPcHRpb25zJztcclxuaW1wb3J0IHsgSW1hZ2VVcGxvYWRPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9JbWFnZVVwbG9hZE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBNYXBBdXRvQ29tcGxldGVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9NYXBBdXRvQ29tcGxldGVPcHRpb25zJztcclxuaW1wb3J0IHsgUGhvbmVPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9QaG9uZU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBSYW5nZU51bWJlciB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvUmFuZ2VOdW1iZXInO1xyXG5pbXBvcnQgeyBSZXBlYXRlckZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9SZXBlYXRlckZpZWxkJztcclxuaW1wb3J0IHsgVGV4dEFyZWFPcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL01vZGVscy9UZXh0QXJlYU9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUZXh0Qm94T3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9Nb2RlbHMvVGV4dEJveE9wdGlvbnMnO1xyXG5pbXBvcnQgeyBUb2dnbGVTbGlkZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvTW9kZWxzL1RvZ2dsZXNsaWRlT3B0aW9ucyc7XHJcbmltcG9ydCB7IFJlbmRlckNvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvc2VydmljZXMvcmVuZGVyLWNvbXBvbmVudC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEYXRlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9EYXRlVGltZVBpY2tlci9EYXRlVGltZVBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcm9wZG93bkxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9Ecm9wZG93bkxpc3QvRHJvcGRvd25MaXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9GaWxlVXBsYW9kL0ZpbGVVcGxhb2QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSHRtbEVkaXRvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL0h0bWxFZGl0b3IvSHRtbEVkaXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJbWFnZVVwbG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vSW1hZ2VVcGxvYWQvSW1hZ2VVcGxvYWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWFwQXV0b0NvbXBsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vTWFwQXV0b0NvbXBsZXRlL01hcEF1dG9Db21wbGV0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBQaG9uZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1Bob25lL1Bob25lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRleHRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vVGV4dEFyZWEvVGV4dEFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGV4dGJveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RleHRCb3gvVGV4dEJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb2dnbGVzbGlkZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL1RvZ2dsZXNsaWRlL3RvZ2dsZXNsaWRlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdyZXBlYXRlci1maWVsZC1idWlsZGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwZWF0ZXItZmllbGQtYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSZXBlYXRlckZpZWxkQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJJdGVtXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiB9KSBJdGVtOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBJbnB1dCgpIGdyb3VwOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgaXRlbU51bWJlcjogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbnRyb2xOdW1iZXI6IG51bWJlcjtcclxuICBASW5wdXQoKSBSZXBlYXRlckZpZWxkOiBSZXBlYXRlckZpZWxkO1xyXG4gIEBJbnB1dCgpIGl0ZW1zVmFsdWU6YW55W109W107XHJcbiAgaXRlbVZhbHVlOiBhbnkgPSBudWxsO1xyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyQ29tcG9uZW50U2VydmljZTogUmVuZGVyQ29tcG9uZW50U2VydmljZSwgcHVibGljIFRleHRDb250cm9sSG9zdDogRm9ybUdyb3VwRGlyZWN0aXZlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZih0aGlzLml0ZW1zVmFsdWUubGVuZ3RoPjApXHJcbiAgICAgICAgIHRoaXMuaXRlbVZhbHVlPXRoaXMuaXRlbXNWYWx1ZVt0aGlzLml0ZW1OdW1iZXJdXHJcbiAgICAgIGlmICh0aGlzLml0ZW1WYWx1ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuaXRlbVZhbHVlLCBrZXkpICYmIGtleSA9PSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5pdGVtVmFsdWVba2V5XTtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuSXRlbS5jbGVhcigpXHJcbiAgICAgIHN3aXRjaCAodGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xUeXBlKSB7XHJcbiAgICAgICAgLy8vVGV4dEJveFxyXG4gICAgICAgIGNhc2UgRGF0YVR5cGUuVGV4dDpcclxuICAgICAgICAgIGxldCBUZXh0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgICAgICBUZXh0Lk5hbWUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTmFtZSArIFwiLlwiICsgdGhpcy5pdGVtTnVtYmVyLnRvU3RyaW5nKCkgKyBcIi5cIiArIHRoaXMuY29udHJvbE51bWJlci50b1N0cmluZygpXHJcbiAgICAgICAgICBUZXh0LkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIFRleHQuTGFiZWxLZXkgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxLZXlcclxuICAgICAgICAgIFRleHQuSXNSZXF1aXJlZCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5Jc1JlcXVpcmVkO1xyXG4gICAgICAgICAgVGV4dC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIFRleHQuTGFiZWxEZXNjcmlwdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uID8gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gOiBcIlwiXHJcbiAgICAgICAgICBUZXh0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgICAgIFRleHQuTGFuZ3VhZ2VWYWxpZGF0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhbmd1YWdlVmFsaWRhdGlvbjtcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWF4TGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1heExlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGhcclxuICAgICAgICAgIGlmICh0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMubWluTGVuZ3RoKVxyXG4gICAgICAgICAgICBUZXh0Lk1pbkxlbmd0aCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGhcclxuICAgICAgICAgIFRleHQuVmFsdWU9dGhpcy52YWx1ZTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyQ29tcG9uZW50U2VydmljZS5yZW5kZXJEeW5hbWljQ29tcG9uZW50PFRleHRib3hDb21wb25lbnQ+KHRoaXMuSXRlbSwgVGV4dGJveENvbXBvbmVudCwgdGhpcy5ncm91cCwgVGV4dClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk5hbWU6XHJcbiAgICAgICAgICBsZXQgTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgTmFtZS5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTmFtZS5IaWRlTGFiZWwgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSGlkZUxhYmVsXHJcbiAgICAgICAgICBOYW1lLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBOYW1lLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE5hbWUuVmlld1R5cGUgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuVmlld1R5cGU7XHJcbiAgICAgICAgICBOYW1lLkxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBOYW1lLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbERlc2NyaXB0aW9uIDogXCJcIlxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5tYXhMZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWF4TGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1heExlbmd0aFxyXG4gICAgICAgICAgaWYgKHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5taW5MZW5ndGgpXHJcbiAgICAgICAgICAgIE5hbWUuTWluTGVuZ3RoID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLm1pbkxlbmd0aFxyXG4gICAgICAgICAgTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgICAgICBOYW1lLlZhbHVlPXRoaXMudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlckNvbXBvbmVudFNlcnZpY2UucmVuZGVyRHluYW1pY0NvbXBvbmVudDxUZXh0Ym94Q29tcG9uZW50Pih0aGlzLkl0ZW0sIFRleHRib3hDb21wb25lbnQsIHRoaXMuZ3JvdXAsIE5hbWUpXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBEYXRhVHlwZS5FbWFpbDpcclxuICAgICAgICAgIGxldCBFbWFpbCA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICAgICAgRW1haWwuTmFtZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5OYW1lICsgXCIuXCIgKyB0aGlzLml0ZW1OdW1iZXIudG9TdHJpbmcoKSArIFwiLlwiICsgdGhpcy5jb250cm9sTnVtYmVyLnRvU3RyaW5nKClcclxuICAgICAgICAgIEVtYWlsLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIEVtYWlsLkxhYmVsS2V5ID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsS2V5XHJcbiAgICAgICAgICBFbWFpbC5Jc1JlcXVpcmVkID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLklzUmVxdWlyZWQ7XHJcbiAgICAgICAgICBFbWFpbC5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIEVtYWlsLkxhbmd1YWdlVmFsaWRhdGlvbiA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYW5ndWFnZVZhbGlkYXRpb247XHJcbiAgICAgICAgICBFbWFpbC5MYWJlbERlc2NyaXB0aW9uID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLkxhYmVsRGVzY3JpcHRpb24gPyB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA6IFwiXCJcclxuICAgICAgICAgIEVtYWlsLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICAgICAgICBFbWFpbC5WYWx1ZT10aGlzLnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5yZW5kZXJDb21wb25lbnRTZXJ2aWNlLnJlbmRlckR5bmFtaWNDb21wb25lbnQ8VGV4dGJveENvbXBvbmVudD4odGhpcy5JdGVtLCBUZXh0Ym94Q29tcG9uZW50LCB0aGlzLmdyb3VwLCBFbWFpbClcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIERhdGFUeXBlLk51bWJlcjpcclxuICAgICAgICAgIGxldCBOdW1iZXIgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgICAgIE51bWJlci5OYW1lID0gdGhpcy5SZXBlYXRlckZpZWxkLkNvbnRyb2xPcHRpb25zLk5hbWUgKyBcIi5cIiArIHRoaXMuaXRlbU51bWJlci50b1N0cmluZygpICsgXCIuXCIgKyB0aGlzLmNvbnRyb2xOdW1iZXIudG9TdHJpbmcoKVxyXG4gICAgICAgICAgTnVtYmVyLkhpZGVMYWJlbCA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5IaWRlTGFiZWxcclxuICAgICAgICAgIE51bWJlci5MYWJlbEtleSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5MYWJlbEtleVxyXG4gICAgICAgICAgTnVtYmVyLklzUmVxdWlyZWQgPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuSXNSZXF1aXJlZDtcclxuICAgICAgICAgIE51bWJlci5WaWV3VHlwZSA9IHRoaXMuUmVwZWF0ZXJGaWVsZC5Db250cm9sT3B0aW9ucy5WaWV3VHlwZTtcclxuICAgICAgICAgIE51bWJlci5MYW5ndWFnZVZhbGlkYXRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFuZ3VhZ2VWYWxpZGF0aW9uO1xyXG4gICAgICAgICAgTnVtYmVyLkxhYmVsRGVzY3JpcHRpb24gPSB0aGlzLlJlcGVhdGVyRmllbGQuQ29udHJvbE9wdGlvbnMuTGFiZWxEZXNjcmlwdGlvbiA/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==