@magic-xpa/engine 4.801.0-dev481.306 → 4.801.0-dev481.307

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 (32) hide show
  1. package/esm2020/src/ClientManager.mjs +1 -2
  2. package/esm2020/src/CommandsTable.mjs +12 -13
  3. package/esm2020/src/CurrentClientVersion.mjs +2 -2
  4. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
  5. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +1 -2
  6. package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +5 -5
  7. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +1 -1
  8. package/esm2020/src/data/DataSourceIdKey.mjs +1 -9
  9. package/esm2020/src/data/DataView.mjs +52 -54
  10. package/esm2020/src/event/ActionManager.mjs +2 -5
  11. package/esm2020/src/event/Event.mjs +249 -353
  12. package/esm2020/src/event/EventHandler.mjs +1 -2
  13. package/esm2020/src/event/EventHandlerPosition.mjs +1 -2
  14. package/esm2020/src/event/EventsManager.mjs +20 -28
  15. package/esm2020/src/exp/ExpressionEvaluator.mjs +1 -6
  16. package/esm2020/src/rt/DataviewHeaders.mjs +1 -3
  17. package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +1 -2
  18. package/esm2020/src/tasks/Task.mjs +2 -13
  19. package/esm2020/src/util/FlowMonitorQueue.mjs +1 -12
  20. package/fesm2015/magic-xpa-engine.mjs +356 -515
  21. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  22. package/fesm2020/magic-xpa-engine.mjs +356 -515
  23. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  24. package/package.json +4 -4
  25. package/src/CommandsTable.d.ts +5 -5
  26. package/src/commands/ServerToClient/ResetLocateCommand.d.ts +2 -2
  27. package/src/data/DataSourceIdKey.d.ts +0 -5
  28. package/src/data/DataView.d.ts +0 -1
  29. package/src/event/ActionManager.d.ts +1 -3
  30. package/src/event/Event.d.ts +5 -21
  31. package/src/event/EventsManager.d.ts +1 -4
  32. package/src/util/FlowMonitorQueue.d.ts +0 -11
@@ -1,17 +1,14 @@
1
- import { ApplicationException, Char, Exception, HashUtils, Int32, NNumber, NString, NumberStyles, RefParam, StringBuilder } from "@magic-xpa/mscorelib";
2
- import { Base64, ForceExit, InternalInterface, Logger, Misc, StorageAttribute, StrUtil, XMLConstants, XmlParser } from "@magic-xpa/utils";
3
- import { BlobType, DisplayConvertor, KeyboardItem, Modifiers, PIC, RecordUtils, TaskDefinitionIdTableSaxHandler } from "@magic-xpa/gui";
4
- import { ConstInterface } from "../ConstInterface";
5
- import { LastFocusedManager } from "../rt/LastFocusedManager";
6
- import { AccessHelper } from "../AccessHelper";
1
+ import { ApplicationException, Char, HashUtils, Int32, NNumber, NString, NumberStyles, RefParam, StringBuilder } from '@magic-xpa/mscorelib';
2
+ import { Base64, ForceExit, InternalInterface, Logger, Misc, StorageAttribute, StrUtil, XMLConstants, XmlParser } from '@magic-xpa/utils';
3
+ import { DisplayConvertor, KeyboardItem, Modifiers, RecordUtils, TaskDefinitionIdTableSaxHandler } from '@magic-xpa/gui';
4
+ import { ConstInterface } from '../ConstInterface';
5
+ import { LastFocusedManager } from '../rt/LastFocusedManager';
6
+ import { AccessHelper } from '../AccessHelper';
7
7
  export class Event {
8
8
  constructor() {
9
9
  this.Exp = null;
10
10
  this._forceExit = ForceExit.None;
11
11
  this.kbdItm = null;
12
- this._osCommandShow = 0;
13
- this._osCommandText = null;
14
- this._osCommandWait = false;
15
12
  this._paramAttrs = null;
16
13
  this._paramNulls = null;
17
14
  this._paramVals = null;
@@ -22,11 +19,10 @@ export class Event {
22
19
  this._type = Char.MinValue;
23
20
  this._userDefinedFuncName = null;
24
21
  this._userDefinedFuncNameHashCode = 0;
25
- this._userEvtDesc = "";
22
+ this._userEvtDesc = '';
26
23
  this._userEvtIdx = Int32.MinValue;
27
24
  this.ownerTaskDefinitionId = null;
28
25
  this.InternalEvent = 0;
29
- this.PrgDescription = null;
30
26
  this.PublicName = null;
31
27
  this.UserEvt = null;
32
28
  this.UserEvtTaskTag = null;
@@ -67,7 +63,7 @@ export class Event {
67
63
  this.InitUserData(taskRef, userValue);
68
64
  }
69
65
  else
70
- Logger.Instance.WriteExceptionToLogWithMsg("in Event.FillData() out of string bounds");
66
+ Logger.Instance.WriteExceptionToLogWithMsg('in Event.FillData() out of string bounds');
71
67
  }
72
68
  InitInnerObjects(xmlParser) {
73
69
  let nextTag = xmlParser.getNextTag();
@@ -143,7 +139,7 @@ export class Event {
143
139
  case ConstInterface.MG_TAG_USR_DEF_FUC_RET_EXP_ATTR:
144
140
  break;
145
141
  default:
146
- Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("There is no such tag in Event class. Insert case to Event.initElements for {0}", attribute));
142
+ Logger.Instance.WriteExceptionToLogWithMsg(NString.Format('There is no such tag in Event class. Insert case to Event.initElements for {0}', attribute));
147
143
  break;
148
144
  }
149
145
  }
@@ -151,7 +147,7 @@ export class Event {
151
147
  this.kbdItm = new KeyboardItem(keyCode, modifier);
152
148
  }
153
149
  InitUserData(taskRef, userValue) {
154
- let comma = userValue.indexOf(",");
150
+ let comma = userValue.indexOf(',');
155
151
  if (comma > -1) {
156
152
  let ueTaskId = userValue.substr(0, comma);
157
153
  if (taskRef !== null)
@@ -161,8 +157,8 @@ export class Event {
161
157
  if (ueTask !== null) {
162
158
  this.UserEvt = ueTask.getUserEvent(ueIdx);
163
159
  if (this.UserEvt === null) {
164
- throw new ApplicationException("in Event.fillData(): user event not found. task id = " + ueTaskId +
165
- ", user event index = " + ueIdx);
160
+ throw new ApplicationException('in Event.fillData(): user event not found. task id = ' + ueTaskId +
161
+ ', user event index = ' + ueIdx);
166
162
  }
167
163
  this.UserEvtTaskTag = ueTaskId;
168
164
  this._userEvtIdx = ueIdx;
@@ -187,7 +183,7 @@ export class Event {
187
183
  if (ueTask !== null)
188
184
  this.UserEvt = ueTask.getUserEvent(this._userEvtIdx);
189
185
  if (this.UserEvt === null)
190
- throw new ApplicationException(NString.Format("in Event.findUserEvent(): user event not found. task id = {0} doesn't exist", this.UserEvtTaskTag));
186
+ throw new ApplicationException(NString.Format('in Event.findUserEvent(): user event not found. task id = {0} doesn\'t exist', this.UserEvtTaskTag));
191
187
  }
192
188
  }
193
189
  equals(evt) {
@@ -321,7 +317,7 @@ export class Event {
321
317
  return this.getBrkLevel(false);
322
318
  }
323
319
  getBrkLevel_1(flowMonitor) {
324
- let level = "";
320
+ let level = '';
325
321
  switch (this._type) {
326
322
  case ConstInterface.EVENT_TYPE_INTERNAL:
327
323
  switch (this.InternalEvent) {
@@ -366,7 +362,7 @@ export class Event {
366
362
  level = flowMonitor ? ConstInterface.BRK_LEVEL_HANDLER_EXPRESSION_FM : ConstInterface.BRK_LEVEL_HANDLER_EXPRESSION + '_' + this.Exp.getId();
367
363
  break;
368
364
  case ConstInterface.EVENT_TYPE_USER:
369
- level = (flowMonitor ? (ConstInterface.BRK_LEVEL_HANDLER_USER_FM + ": ") : (ConstInterface.BRK_LEVEL_HANDLER_USER + '_')) + (this.UserEvt != null ? this.UserEvt._userEvtDesc : this._userEvtDesc);
365
+ level = (flowMonitor ? (ConstInterface.BRK_LEVEL_HANDLER_USER_FM + ': ') : (ConstInterface.BRK_LEVEL_HANDLER_USER + '_')) + (this.UserEvt != null ? this.UserEvt._userEvtDesc : this._userEvtDesc);
370
366
  break;
371
367
  case ConstInterface.EVENT_TYPE_USER_FUNC:
372
368
  level = (flowMonitor ? (ConstInterface.BRK_LEVEL_USER_FUNCTION_FM + ':') : (ConstInterface.BRK_LEVEL_USER_FUNCTION + '_')) + this._userDefinedFuncName;
@@ -378,580 +374,580 @@ export class Event {
378
374
  let description;
379
375
  switch (internalEventCode) {
380
376
  case InternalInterface.MG_ACT_ABOUT:
381
- description = "About Magic";
377
+ description = 'About Magic';
382
378
  break;
383
379
  case InternalInterface.MG_ACT_ACTION_LIST:
384
- description = "Action List";
380
+ description = 'Action List';
385
381
  break;
386
382
  case InternalInterface.MG_ACT_ADD_HYPERLINK:
387
- description = "";
383
+ description = '';
388
384
  break;
389
385
  case InternalInterface.MG_ACT_ALIGN_LEFT:
390
- description = "Left";
386
+ description = 'Left';
391
387
  break;
392
388
  case InternalInterface.MG_ACT_ALIGN_RIGHT:
393
- description = "Right";
389
+ description = 'Right';
394
390
  break;
395
391
  case InternalInterface.MG_ACT_APPL_PROPERTIES:
396
- description = "";
392
+ description = '';
397
393
  break;
398
394
  case InternalInterface.MG_ACT_APPLICATIONS:
399
- description = "Applications";
395
+ description = 'Applications';
400
396
  break;
401
397
  case InternalInterface.MG_ACT_APPLICATIONS_LIST:
402
- description = "Applications List";
398
+ description = 'Applications List';
403
399
  break;
404
400
  case InternalInterface.MG_ACT_ATTACH_TO_TABLE:
405
- description = "Attach to Table";
401
+ description = 'Attach to Table';
406
402
  break;
407
403
  case InternalInterface.MG_ACT_AUTHORIZE:
408
- description = "Authorize";
404
+ description = 'Authorize';
409
405
  break;
410
406
  case InternalInterface.MG_ACT_EDT_BEGFLD:
411
- description = "Begin Field";
407
+ description = 'Begin Field';
412
408
  break;
413
409
  case InternalInterface.MG_ACT_EDT_BEGFORM:
414
- description = "Begin Form";
410
+ description = 'Begin Form';
415
411
  break;
416
412
  case InternalInterface.MG_ACT_EDT_BEGLINE:
417
- description = "Begin Line";
413
+ description = 'Begin Line';
418
414
  break;
419
415
  case InternalInterface.MG_ACT_EDT_BEGNXTLINE:
420
- description = "Begin Next Line";
416
+ description = 'Begin Next Line';
421
417
  break;
422
418
  case InternalInterface.MG_ACT_EDT_BEGPAGE:
423
- description = "Begin Page";
419
+ description = 'Begin Page';
424
420
  break;
425
421
  case InternalInterface.MG_ACT_TBL_BEGLINE:
426
- description = "Begin Row";
422
+ description = 'Begin Row';
427
423
  break;
428
424
  case InternalInterface.MG_ACT_TBL_BEGPAGE:
429
- description = "Begin Screen";
425
+ description = 'Begin Screen';
430
426
  break;
431
427
  case InternalInterface.MG_ACT_TBL_BEGTBL:
432
- description = "Begin table";
428
+ description = 'Begin table';
433
429
  break;
434
430
  case InternalInterface.MG_ACT_BOTTOM:
435
- description = "Bottom";
431
+ description = 'Bottom';
436
432
  break;
437
433
  case InternalInterface.MG_ACT_BULLET:
438
- description = "Bullet";
434
+ description = 'Bullet';
439
435
  break;
440
436
  case InternalInterface.MG_ACT_BUTTON:
441
- description = "Button Press";
437
+ description = 'Button Press';
442
438
  break;
443
439
  case InternalInterface.MG_ACT_CANCEL:
444
- description = "Cancel";
440
+ description = 'Cancel';
445
441
  break;
446
442
  case InternalInterface.MG_ACT_RT_QUIT:
447
- description = "Quit";
443
+ description = 'Quit';
448
444
  break;
449
445
  case InternalInterface.MG_ACT_CENTER:
450
- description = "Center";
446
+ description = 'Center';
451
447
  break;
452
448
  case InternalInterface.MG_ACT_CHECK_SYNTAX:
453
- description = "Check Syntax";
449
+ description = 'Check Syntax';
454
450
  break;
455
451
  case InternalInterface.MG_ACT_CHECK_TO_END:
456
- description = "Check to End";
452
+ description = 'Check to End';
457
453
  break;
458
454
  case InternalInterface.MG_ACT_CLEAR_TEMPLATE:
459
- description = "Clear Template";
455
+ description = 'Clear Template';
460
456
  break;
461
457
  case InternalInterface.MG_ACT_CLEAR_VALUE:
462
- description = "Clear Value";
458
+ description = 'Clear Value';
463
459
  break;
464
460
  case InternalInterface.MG_ACT_CLOSE:
465
- description = "Close";
461
+ description = 'Close';
466
462
  break;
467
463
  case InternalInterface.MG_ACT_ACT_CLOSE_APPL:
468
- description = "Close Application";
464
+ description = 'Close Application';
469
465
  break;
470
466
  case InternalInterface.MG_ACT_COMMUNICATIONS:
471
- description = "Communications";
467
+ description = 'Communications';
472
468
  break;
473
469
  case InternalInterface.MG_ACT_COMPONENTS:
474
- description = "Components";
470
+ description = 'Components';
475
471
  break;
476
472
  case InternalInterface.MG_ACT_CTRL_HIT:
477
- description = "Control Hit";
473
+ description = 'Control Hit';
478
474
  break;
479
475
  case InternalInterface.MG_ACT_CONTROL_NAME_LIST:
480
- description = "Control Name List";
476
+ description = 'Control Name List';
481
477
  break;
482
478
  case InternalInterface.MG_ACT_CLIP_COPY:
483
- description = "Copy";
479
+ description = 'Copy';
484
480
  break;
485
481
  case InternalInterface.MG_ACT_COPY_LAYOUT:
486
- description = "Copy Layout";
482
+ description = 'Copy Layout';
487
483
  break;
488
484
  case InternalInterface.MG_ACT_COPY_SUBTREE:
489
- description = "Copy Subtree";
485
+ description = 'Copy Subtree';
490
486
  break;
491
487
  case InternalInterface.MG_ACT_CRELINE:
492
- description = "Create Line";
488
+ description = 'Create Line';
493
489
  break;
494
490
  case InternalInterface.MG_ACT_CRELINE_ABOVE:
495
- description = "Create Line Above";
491
+ description = 'Create Line Above';
496
492
  break;
497
493
  case InternalInterface.MG_ACT_CREATE_PARENT:
498
- description = "Create Parent";
494
+ description = 'Create Parent';
499
495
  break;
500
496
  case InternalInterface.MG_ACT_RTO_CREATE:
501
- description = "Create Records";
497
+ description = 'Create Records';
502
498
  break;
503
499
  case InternalInterface.MG_ACT_CREATE_SUBTASK:
504
- description = "Create Subtask";
500
+ description = 'Create Subtask';
505
501
  break;
506
502
  case InternalInterface.MG_ACT_CROSS_REFERENCE:
507
- description = "Cross Reference";
503
+ description = 'Cross Reference';
508
504
  break;
509
505
  case InternalInterface.MG_ACT_CUT:
510
- description = "Cut";
506
+ description = 'Cut';
511
507
  break;
512
508
  case InternalInterface.MG_ACT_DB_TABLES:
513
- description = "";
509
+ description = '';
514
510
  break;
515
511
  case InternalInterface.MG_ACT_DBMS:
516
- description = "DBMS";
512
+ description = 'DBMS';
517
513
  break;
518
514
  case InternalInterface.MG_ACT_DDF_MAKE:
519
- description = "DDF Make";
515
+ description = 'DDF Make';
520
516
  break;
521
517
  case InternalInterface.MG_ACT_DATABASES:
522
- description = "Databases";
518
+ description = 'Databases';
523
519
  break;
524
520
  case InternalInterface.MG_ACT_DEFAULT_LAYOUT:
525
- description = "Default Layout";
521
+ description = 'Default Layout';
526
522
  break;
527
523
  case InternalInterface.MG_ACT_DEFINE_EXPRESSION:
528
- description = "Define Expression";
524
+ description = 'Define Expression';
529
525
  break;
530
526
  case InternalInterface.MG_ACT_EDT_DELCURCH:
531
- description = "Current Char";
527
+ description = 'Current Char';
532
528
  break;
533
529
  case InternalInterface.MG_ACT_EDT_DELPRVCH:
534
- description = "Previous Char";
530
+ description = 'Previous Char';
535
531
  break;
536
532
  case InternalInterface.MG_ACT_DELETE_HYPERLINK:
537
- description = "Delete Hyperlink";
533
+ description = 'Delete Hyperlink';
538
534
  break;
539
535
  case InternalInterface.MG_ACT_DELLINE:
540
- description = "Delete Line";
536
+ description = 'Delete Line';
541
537
  break;
542
538
  case InternalInterface.MG_ACT_DELETE_SUBTREE:
543
- description = "Delete Subtree";
539
+ description = 'Delete Subtree';
544
540
  break;
545
541
  case InternalInterface.MG_ACT_RT_COPYFLD:
546
- description = "Ditto";
542
+ description = 'Ditto';
547
543
  break;
548
544
  case InternalInterface.MG_ACT_DISPLAY_REFRESH:
549
- description = "Display Refresh";
545
+ description = 'Display Refresh';
550
546
  break;
551
547
  case InternalInterface.MG_ACT_EDIT_MAIN_FORM:
552
- description = "Edit Main Form";
548
+ description = 'Edit Main Form';
553
549
  break;
554
550
  case InternalInterface.MG_ACT_EDT_ENDFLD:
555
- description = "End Field";
551
+ description = 'End Field';
556
552
  break;
557
553
  case InternalInterface.MG_ACT_EDT_ENDFORM:
558
- description = "End Form";
554
+ description = 'End Form';
559
555
  break;
560
556
  case InternalInterface.MG_ACT_EDT_ENDLINE:
561
- description = "End Line";
557
+ description = 'End Line';
562
558
  break;
563
559
  case InternalInterface.MG_ACT_EDT_ENDPAGE:
564
- description = "End Page";
560
+ description = 'End Page';
565
561
  break;
566
562
  case InternalInterface.MG_ACT_TBL_ENDLINE:
567
- description = "End Row";
563
+ description = 'End Row';
568
564
  break;
569
565
  case InternalInterface.MG_ACT_TBL_ENDPAGE:
570
- description = "End Screen";
566
+ description = 'End Screen';
571
567
  break;
572
568
  case InternalInterface.MG_ACT_TBL_ENDTBL:
573
- description = "End Table";
569
+ description = 'End Table';
574
570
  break;
575
571
  case InternalInterface.MG_ACT_ENVIRONMENT:
576
- description = "Environment";
572
+ description = 'Environment';
577
573
  break;
578
574
  case InternalInterface.MG_ACT_EXECUTE_PROGRAM:
579
- description = "Execute Program";
575
+ description = 'Execute Program';
580
576
  break;
581
577
  case InternalInterface.MG_ACT_EXECUTE_REPORT:
582
- description = "Execute Report";
578
+ description = 'Execute Report';
583
579
  break;
584
580
  case InternalInterface.MG_ACT_EXIT:
585
- description = "Exit";
581
+ description = 'Exit';
586
582
  break;
587
583
  case InternalInterface.MG_ACT_EXIT_SYSTEM:
588
- description = "Exit System";
584
+ description = 'Exit System';
589
585
  break;
590
586
  case InternalInterface.MG_ACT_EXPORT_IMPORT:
591
- description = "Export/Import";
587
+ description = 'Export/Import';
592
588
  break;
593
589
  case InternalInterface.MG_ACT_EXPRESSION_RULES:
594
- description = "Expression rules";
590
+ description = 'Expression rules';
595
591
  break;
596
592
  case InternalInterface.MG_ACT_EXTERNAL_EDITOR:
597
- description = "External Editor";
593
+ description = 'External Editor';
598
594
  break;
599
595
  case InternalInterface.MG_ACT_EXT_EVENT:
600
- description = "External Event";
596
+ description = 'External Event';
601
597
  break;
602
598
  case InternalInterface.MG_ACT_FORMS:
603
- description = "Forms";
599
+ description = 'Forms';
604
600
  break;
605
601
  case InternalInterface.MG_ACT_FROM_VALUE:
606
- description = "From Value";
602
+ description = 'From Value';
607
603
  break;
608
604
  case InternalInterface.MG_ACT_FUNCTION_LIST:
609
- description = "Function List";
605
+ description = 'Function List';
610
606
  break;
611
607
  case InternalInterface.MG_ACT_GENERATE_FORM:
612
- description = "Generate Form";
608
+ description = 'Generate Form';
613
609
  break;
614
610
  case InternalInterface.MG_ACT_GENERATE_PROGRAM:
615
- description = "Generate Program";
611
+ description = 'Generate Program';
616
612
  break;
617
613
  case InternalInterface.MG_ACT_GO_TO_TOP:
618
- description = "Go to Top";
614
+ description = 'Go to Top';
619
615
  break;
620
616
  case InternalInterface.MG_ACT_H_CENTER_OF_FORM:
621
- description = "";
617
+ description = '';
622
618
  break;
623
619
  case InternalInterface.MG_ACT_HTML_STYLES:
624
- description = "HTML Styles";
620
+ description = 'HTML Styles';
625
621
  break;
626
622
  case InternalInterface.MG_ACT_HELP:
627
- description = "Help";
623
+ description = 'Help';
628
624
  break;
629
625
  case InternalInterface.MG_ACT_HELP_SCREENS:
630
- description = "Help Screens";
626
+ description = 'Help Screens';
631
627
  break;
632
628
  case InternalInterface.MG_ACT_HORIZ_CENTER:
633
- description = "Horiz. Center";
629
+ description = 'Horiz. Center';
634
630
  break;
635
631
  case InternalInterface.MG_ACT_I_O_FILES:
636
- description = "Tables";
632
+ description = 'Tables';
637
633
  break;
638
634
  case InternalInterface.MG_ACT_INDENT:
639
- description = "Indent";
635
+ description = 'Indent';
640
636
  break;
641
637
  case InternalInterface.MG_ACT_INSERT_OBJECT:
642
- description = "Insert Object";
638
+ description = 'Insert Object';
643
639
  break;
644
640
  case InternalInterface.MG_ACT_JUMP_TO_ROW:
645
- description = "Jump to Row";
641
+ description = 'Jump to Row';
646
642
  break;
647
643
  case InternalInterface.MG_ACT_KEYBOARD_LIST:
648
- description = "Keyboard List";
644
+ description = 'Keyboard List';
649
645
  break;
650
646
  case InternalInterface.MG_ACT_KEYBOARD_MAPPING:
651
- description = "Keyboard Mapping";
647
+ description = 'Keyboard Mapping';
652
648
  break;
653
649
  case InternalInterface.MG_ACT_LANGUAGES:
654
- description = "languages";
650
+ description = 'languages';
655
651
  break;
656
652
  case InternalInterface.MG_ACT_RTO_SEARCH:
657
- description = "Locate Next";
653
+ description = 'Locate Next';
658
654
  break;
659
655
  case InternalInterface.MG_ACT_RTO_LOCATE:
660
- description = "Locate a Record";
656
+ description = 'Locate a Record';
661
657
  break;
662
658
  case InternalInterface.MG_ACT_LOGICALPNAMES:
663
- description = "";
659
+ description = '';
664
660
  break;
665
661
  case InternalInterface.MG_ACT_LOGON:
666
- description = "Logon";
662
+ description = 'Logon';
667
663
  break;
668
664
  case InternalInterface.MG_ACT_USING_HELP:
669
- description = "Help Topics";
665
+ description = 'Help Topics';
670
666
  break;
671
667
  case InternalInterface.MG_ACT_EDT_MARKNXTCH:
672
- description = "Mark Next Char";
668
+ description = 'Mark Next Char';
673
669
  break;
674
670
  case InternalInterface.MG_ACT_MARK_NEXT_LINE:
675
- description = "Mark Next Line MLE";
671
+ description = 'Mark Next Line MLE';
676
672
  break;
677
673
  case InternalInterface.MG_ACT_EDT_MARKPRVCH:
678
- description = "Mark Previous Char";
674
+ description = 'Mark Previous Char';
679
675
  break;
680
676
  case InternalInterface.MG_ACT_EDT_MARKPRVLINE:
681
- description = "Mark Previous Line MLE";
677
+ description = 'Mark Previous Line MLE';
682
678
  break;
683
679
  case InternalInterface.MG_ACT_MARK_SUBTREE:
684
- description = "";
680
+ description = '';
685
681
  break;
686
682
  case InternalInterface.MG_ACT_EDT_MARKTOBEG:
687
- description = "Mark To Beginning";
683
+ description = 'Mark To Beginning';
688
684
  break;
689
685
  case InternalInterface.MG_ACT_EDT_MARKTOEND:
690
- description = "Mark To End";
686
+ description = 'Mark To End';
691
687
  break;
692
688
  case InternalInterface.MG_ACT_MAXIMUM_HEIGHT:
693
- description = "Maximum Height";
689
+ description = 'Maximum Height';
694
690
  break;
695
691
  case InternalInterface.MG_ACT_MAXIMUM_WIDTH:
696
- description = "Maximum Width";
692
+ description = 'Maximum Width';
697
693
  break;
698
694
  case InternalInterface.MG_ACT_MENU_BAR:
699
- description = "Menu Bar";
695
+ description = 'Menu Bar';
700
696
  break;
701
697
  case InternalInterface.MG_ACT_MENUS:
702
- description = "";
698
+ description = '';
703
699
  break;
704
700
  case InternalInterface.MG_ACT_MINIMUM_HEIGHT:
705
- description = "Minimum Height";
701
+ description = 'Minimum Height';
706
702
  break;
707
703
  case InternalInterface.MG_ACT_MINIMUM_WIDTH:
708
- description = "Minimum Width";
704
+ description = 'Minimum Width';
709
705
  break;
710
706
  case InternalInterface.MG_ACT_RTO_MODIFY:
711
- description = "Modify Records";
707
+ description = 'Modify Records';
712
708
  break;
713
709
  case InternalInterface.MG_ACT_MONITOR_DEBUGGER:
714
- description = "Monitor/Debugger";
710
+ description = 'Monitor/Debugger';
715
711
  break;
716
712
  case InternalInterface.MG_ACT_MOVE_ENTRY:
717
- description = "Move Entry";
713
+ description = 'Move Entry';
718
714
  break;
719
715
  case InternalInterface.MG_ACT_MOVE_SUBTREE:
720
- description = "Move Subtree";
716
+ description = 'Move Subtree';
721
717
  break;
722
718
  case InternalInterface.MG_ACT_NULL_SETTINGS:
723
- description = "NULL Settings";
719
+ description = 'NULL Settings';
724
720
  break;
725
721
  case InternalInterface.MG_ACT_EDT_NXTCHAR:
726
- description = "Next Char";
722
+ description = 'Next Char';
727
723
  break;
728
724
  case InternalInterface.MG_ACT_EDT_NXTLINE:
729
- description = "Next Line";
725
+ description = 'Next Line';
730
726
  break;
731
727
  case InternalInterface.MG_ACT_EDT_NXTPAGE:
732
- description = "Next Page";
728
+ description = 'Next Page';
733
729
  break;
734
730
  case InternalInterface.MG_ACT_TBL_NXTLINE:
735
- description = "Next Row";
731
+ description = 'Next Row';
736
732
  break;
737
733
  case InternalInterface.MG_ACT_TBL_NXTPAGE:
738
- description = "Next Screen";
734
+ description = 'Next Screen';
739
735
  break;
740
736
  case InternalInterface.MG_ACT_EDT_NXTTAB:
741
- description = "Next Tab";
737
+ description = 'Next Tab';
742
738
  break;
743
739
  case InternalInterface.MG_ACT_EDT_NXTWORD:
744
- description = "Next Word";
740
+ description = 'Next Word';
745
741
  break;
746
742
  case InternalInterface.MG_ACT_NORMAL:
747
- description = "Normal";
743
+ description = 'Normal';
748
744
  break;
749
745
  case InternalInterface.MG_ACT_OK:
750
- description = "OK";
746
+ description = 'OK';
751
747
  break;
752
748
  case InternalInterface.MG_ACT_OLE2:
753
- description = "OLE2";
749
+ description = 'OLE2';
754
750
  break;
755
751
  case InternalInterface.MG_ACT_OPEN_APPLICATION:
756
- description = "Open Application";
752
+ description = 'Open Application';
757
753
  break;
758
754
  case InternalInterface.MG_ACT_OVERWRITE_ENTRY:
759
- description = "Overwrite Entry";
755
+ description = 'Overwrite Entry';
760
756
  break;
761
757
  case InternalInterface.MG_ACT_OVERWRITE_SUBTREE:
762
- description = "Overwrite Subtree";
758
+ description = 'Overwrite Subtree';
763
759
  break;
764
760
  case InternalInterface.MG_ACT_PPD:
765
- description = "PPD";
761
+ description = 'PPD';
766
762
  break;
767
763
  case InternalInterface.MG_ACT_PAGE_FOOTER:
768
- description = "Page Footer";
764
+ description = 'Page Footer';
769
765
  break;
770
766
  case InternalInterface.MG_ACT_PAGE_HEADER:
771
- description = "Page Header";
767
+ description = 'Page Header';
772
768
  break;
773
769
  case InternalInterface.MG_ACT_CLIP_PASTE:
774
- description = "Paste";
770
+ description = 'Paste';
775
771
  break;
776
772
  case InternalInterface.MG_ACT_PASTE_LINK:
777
- description = "Paste Link";
773
+ description = 'Paste Link';
778
774
  break;
779
775
  case InternalInterface.MG_ACT_PASTE_SUBTREE:
780
- description = "Paste Subtree";
776
+ description = 'Paste Subtree';
781
777
  break;
782
778
  case InternalInterface.MG_ACT_EDT_PRVCHAR:
783
- description = "Previous Char";
779
+ description = 'Previous Char';
784
780
  break;
785
781
  case InternalInterface.MG_ACT_EDT_PRVLINE:
786
- description = "Previous Line";
782
+ description = 'Previous Line';
787
783
  break;
788
784
  case InternalInterface.MG_ACT_EDT_PRVPAGE:
789
- description = "Previous Page";
785
+ description = 'Previous Page';
790
786
  break;
791
787
  case InternalInterface.MG_ACT_TBL_PRVLINE:
792
- description = "Previous Row";
788
+ description = 'Previous Row';
793
789
  break;
794
790
  case InternalInterface.MG_ACT_TBL_PRVPAGE:
795
- description = "Previous Screen";
791
+ description = 'Previous Screen';
796
792
  break;
797
793
  case InternalInterface.MG_ACT_EDT_PRVTAB:
798
- description = "Previous Tab";
794
+ description = 'Previous Tab';
799
795
  break;
800
796
  case InternalInterface.MG_ACT_EDT_PRVWORD:
801
- description = "Previous Word";
797
+ description = 'Previous Word';
802
798
  break;
803
799
  case InternalInterface.MG_ACT_PRINT_ATTRIBUTES:
804
- description = "Print Attributes";
800
+ description = 'Print Attributes';
805
801
  break;
806
802
  case InternalInterface.MG_ACT_PRINTER_SETUP:
807
- description = "Printer Setup";
803
+ description = 'Printer Setup';
808
804
  break;
809
805
  case InternalInterface.MG_ACT_PRINTERS:
810
- description = "Printers";
806
+ description = 'Printers';
811
807
  break;
812
808
  case InternalInterface.MG_ACT_PROGRAMS:
813
- description = "Programs";
809
+ description = 'Programs';
814
810
  break;
815
811
  case InternalInterface.MG_ACT_PROPERTIES:
816
- description = "Properties";
812
+ description = 'Properties';
817
813
  break;
818
814
  case InternalInterface.MG_ACT_RTO_QUERY:
819
- description = "Query Records";
815
+ description = 'Query Records';
820
816
  break;
821
817
  case InternalInterface.MG_ACT_RTO_RANGE:
822
- description = "Range of Records";
818
+ description = 'Range of Records';
823
819
  break;
824
820
  case InternalInterface.MG_ACT_RT_REFRESH_RECORD:
825
- description = "Record Flush";
821
+ description = 'Record Flush';
826
822
  break;
827
823
  case InternalInterface.MG_ACT_REDIRECT_FILES:
828
- description = "Redirect Files";
824
+ description = 'Redirect Files';
829
825
  break;
830
826
  case InternalInterface.MG_ACT_REDRAW_LAYOUT:
831
- description = "";
827
+ description = '';
832
828
  break;
833
829
  case InternalInterface.MG_ACT_REPEAT_ENTRY:
834
- description = "Repeat Entry";
830
+ description = 'Repeat Entry';
835
831
  break;
836
832
  case InternalInterface.MG_ACT_REPEAT_SUBTREE:
837
- description = "Repeat Subtree";
833
+ description = 'Repeat Subtree';
838
834
  break;
839
835
  case InternalInterface.MG_ACT_REPORT_GENERATOR:
840
- description = "";
836
+ description = '';
841
837
  break;
842
838
  case InternalInterface.MG_ACT_RESTORE_DEFAULTS:
843
- description = "Restore Defaults";
839
+ description = 'Restore Defaults';
844
840
  break;
845
841
  case InternalInterface.MG_ACT_RETURN_TO_TREE:
846
- description = "";
842
+ description = '';
847
843
  break;
848
844
  case InternalInterface.MG_ACT_RIGHT:
849
- description = "Right";
845
+ description = 'Right';
850
846
  break;
851
847
  case InternalInterface.MG_ACT_RIGHTS:
852
- description = "";
848
+ description = '';
853
849
  break;
854
850
  case InternalInterface.MG_ACT_RIGHTS_LIST:
855
- description = "Rights List";
851
+ description = 'Rights List';
856
852
  break;
857
853
  case InternalInterface.MG_ACT_SQL_ASSIST:
858
- description = "SQL Assist";
854
+ description = 'SQL Assist';
859
855
  break;
860
856
  case InternalInterface.MG_ACT_SQL_COLUMNS:
861
- description = "SQL Columns";
857
+ description = 'SQL Columns';
862
858
  break;
863
859
  case InternalInterface.MG_ACT_SQL_COMMAND:
864
- description = "SQL Command";
860
+ description = 'SQL Command';
865
861
  break;
866
862
  case InternalInterface.MG_ACT_SQL_FLIP_DESC:
867
- description = "SQL Flip Desc.";
863
+ description = 'SQL Flip Desc.';
868
864
  break;
869
865
  case InternalInterface.MG_ACT_SQL_KEYWORDS:
870
- description = "SQL Keywords";
866
+ description = 'SQL Keywords';
871
867
  break;
872
868
  case InternalInterface.MG_ACT_SQL_OPERATORS:
873
- description = "SQL Operators";
869
+ description = 'SQL Operators';
874
870
  break;
875
871
  case InternalInterface.MG_ACT_SQL_TABLES:
876
- description = "SQL Tables";
872
+ description = 'SQL Tables';
877
873
  break;
878
874
  case InternalInterface.MG_ACT_SQL_WHERE_CLAUSE:
879
- description = "";
875
+ description = '';
880
876
  break;
881
877
  case InternalInterface.MG_ACT_RT_REFRESH_SCREEN:
882
- description = "Screen Refresh";
878
+ description = 'Screen Refresh';
883
879
  break;
884
880
  case InternalInterface.MG_ACT_SECRET_NAMES:
885
- description = "Secret Names";
881
+ description = 'Secret Names';
886
882
  break;
887
883
  case InternalInterface.MG_ACT_SELECT:
888
- description = "Select";
884
+ description = 'Select';
889
885
  break;
890
886
  case InternalInterface.MG_ACT_EDT_MARKALL:
891
- description = "Select All";
887
+ description = 'Select All';
892
888
  break;
893
889
  case InternalInterface.MG_ACT_SERVERS:
894
- description = "";
890
+ description = '';
895
891
  break;
896
892
  case InternalInterface.MG_ACT_SERVICES:
897
- description = "";
893
+ description = '';
898
894
  break;
899
895
  case InternalInterface.MG_ACT_RT_EDT_NULL:
900
- description = "Set to NULL";
896
+ description = 'Set to NULL';
901
897
  break;
902
898
  case InternalInterface.MG_ACT_SHELL_TO_OS:
903
- description = "Shell to OS";
899
+ description = 'Shell to OS';
904
900
  break;
905
901
  case InternalInterface.MG_ACT_SHOW_EXPRESSION:
906
- description = "Show Expression";
902
+ description = 'Show Expression';
907
903
  break;
908
904
  case InternalInterface.MG_ACT_SHOW_FULL_LAYOUT:
909
- description = "";
905
+ description = '';
910
906
  break;
911
907
  case InternalInterface.MG_ACT_SHRINK_TREE:
912
- description = "";
908
+ description = '';
913
909
  break;
914
910
  case InternalInterface.MG_ACT_SORT:
915
- description = "Sort";
911
+ description = 'Sort';
916
912
  break;
917
913
  case InternalInterface.MG_ACT_SORT_RECORDS:
918
- description = "Sort Records";
914
+ description = 'Sort Records';
919
915
  break;
920
916
  case InternalInterface.MG_ACT_TABLE_LOCATE:
921
- description = "Table Locate";
917
+ description = 'Table Locate';
922
918
  break;
923
919
  case InternalInterface.MG_ACT_TABLE_LOCATE_NEXT:
924
- description = "Table Locate Next";
920
+ description = 'Table Locate Next';
925
921
  break;
926
922
  case InternalInterface.MG_ACT_TABLES:
927
- description = "";
923
+ description = '';
928
924
  break;
929
925
  case InternalInterface.MG_ACT_TASK_CONTROL:
930
- description = "";
926
+ description = '';
931
927
  break;
932
928
  case InternalInterface.MG_ACT_TASK_EVENTS:
933
- description = "";
929
+ description = '';
934
930
  break;
935
931
  case InternalInterface.MG_ACT_TO_VALUE:
936
- description = "To Value";
932
+ description = 'To Value';
937
933
  break;
938
934
  case InternalInterface.MG_ACT_TOOLKIT_RUNTIME:
939
- description = "Toolkit/Runtime";
935
+ description = 'Toolkit/Runtime';
940
936
  break;
941
937
  case InternalInterface.MG_ACT_TOP:
942
- description = "Top";
938
+ description = 'Top';
943
939
  break;
944
940
  case InternalInterface.MG_ACT_TYPES:
945
- description = "";
941
+ description = '';
946
942
  break;
947
943
  case InternalInterface.MG_ACT_EDT_UNDO:
948
- description = "Undo Editing";
944
+ description = 'Undo Editing';
949
945
  break;
950
946
  case InternalInterface.MG_ACT_UNINDENT:
951
- description = "Unindent";
947
+ description = 'Unindent';
952
948
  break;
953
949
  case InternalInterface.MG_ACT_UPDATE_LINK:
954
- description = "";
950
+ description = '';
955
951
  break;
956
952
  case InternalInterface.MG_ACT_USER_ACTION_1:
957
953
  case InternalInterface.MG_ACT_USER_ACTION_2:
@@ -973,100 +969,100 @@ export class Event {
973
969
  case InternalInterface.MG_ACT_USER_ACTION_18:
974
970
  case InternalInterface.MG_ACT_USER_ACTION_19:
975
971
  case InternalInterface.MG_ACT_USER_ACTION_20:
976
- description = "User Action " + (internalEventCode - InternalInterface.MG_ACT_USER_ACTION_1 + 1);
972
+ description = 'User Action ' + (internalEventCode - InternalInterface.MG_ACT_USER_ACTION_1 + 1);
977
973
  break;
978
974
  case InternalInterface.MG_ACT_USER_GROUPS:
979
- description = "";
975
+ description = '';
980
976
  break;
981
977
  case InternalInterface.MG_ACT_USER_IDS:
982
- description = "User IDs";
978
+ description = 'User IDs';
983
979
  break;
984
980
  case InternalInterface.MG_ACT_V_CENTER_OF_FORM:
985
- description = "Center of Form";
981
+ description = 'Center of Form';
986
982
  break;
987
983
  case InternalInterface.MG_ACT_VERTICAL_CENTER:
988
- description = "Vertical Center";
984
+ description = 'Vertical Center';
989
985
  break;
990
986
  case InternalInterface.MG_ACT_VIEW_BY_KEY:
991
- description = "View by Key";
987
+ description = 'View by Key';
992
988
  break;
993
989
  case InternalInterface.MG_ACT_RT_REFRESH_VIEW:
994
- description = "View Refresh";
990
+ description = 'View Refresh';
995
991
  break;
996
992
  case InternalInterface.MG_ACT_VIRTUAL_VARIABLES:
997
- description = "Variables";
993
+ description = 'Variables';
998
994
  break;
999
995
  case InternalInterface.MG_ACT_VISUAL_CONNECTION:
1000
- description = "Visual Connection";
996
+ description = 'Visual Connection';
1001
997
  break;
1002
998
  case InternalInterface.MG_ACT_HIT:
1003
- description = "Window Hit";
999
+ description = 'Window Hit';
1004
1000
  break;
1005
1001
  case InternalInterface.MG_ACT_WINMOVE:
1006
- description = "Window Reposition";
1002
+ description = 'Window Reposition';
1007
1003
  break;
1008
1004
  case InternalInterface.MG_ACT_WINSIZE:
1009
- description = "Window Resize";
1005
+ description = 'Window Resize';
1010
1006
  break;
1011
1007
  case InternalInterface.MG_ACT_ZOOM:
1012
- description = "Zoom";
1008
+ description = 'Zoom';
1013
1009
  break;
1014
1010
  case InternalInterface.MG_ACT_LOCKING_DETAILS:
1015
- description = "Locking Details";
1011
+ description = 'Locking Details';
1016
1012
  break;
1017
1013
  case InternalInterface.MG_ACT_LOCKING_ABORT:
1018
- description = "Locking Abort";
1014
+ description = 'Locking Abort';
1019
1015
  break;
1020
1016
  case InternalInterface.MG_ACT_LOCKING_RETRY:
1021
- description = "Locking Retry";
1017
+ description = 'Locking Retry';
1022
1018
  break;
1023
1019
  case InternalInterface.MG_ACT_CHECK_OBJECT_LIST:
1024
- description = "Check Object List";
1020
+ description = 'Check Object List';
1025
1021
  break;
1026
1022
  case InternalInterface.MG_ACT_USERS_LIST:
1027
- description = "Users List";
1023
+ description = 'Users List';
1028
1024
  break;
1029
1025
  case InternalInterface.MG_ACT_MODELS:
1030
- description = "Models";
1026
+ description = 'Models';
1031
1027
  break;
1032
1028
  case InternalInterface.MG_ACT_WEB_CLICK:
1033
- description = "Click";
1029
+ description = 'Click';
1034
1030
  break;
1035
1031
  case InternalInterface.MG_ACT_WEB_ON_DBLICK:
1036
- description = "DblClick";
1032
+ description = 'DblClick';
1037
1033
  break;
1038
1034
  case InternalInterface.MG_ACT_BROWSER_ESC:
1039
- description = "Esc";
1035
+ description = 'Esc';
1040
1036
  break;
1041
1037
  case InternalInterface.MG_ACT_ROLLBACK:
1042
- description = "Rollback";
1038
+ description = 'Rollback';
1043
1039
  break;
1044
1040
  case InternalInterface.MG_ACT_EMPTY_DATAVIEW:
1045
- description = "Empty Dataview";
1041
+ description = 'Empty Dataview';
1046
1042
  break;
1047
1043
  case InternalInterface.MG_ACT_CTRL_MODIFY:
1048
- description = "Control Modify";
1044
+ description = 'Control Modify';
1049
1045
  break;
1050
1046
  case InternalInterface.MG_ACT_PRINT_DATA:
1051
- description = "Print Data";
1047
+ description = 'Print Data';
1052
1048
  break;
1053
1049
  case InternalInterface.MG_ACT_POST_REFRESH_BY_PARENT:
1054
- description = "Post Refresh by Parent";
1050
+ description = 'Post Refresh by Parent';
1055
1051
  break;
1056
1052
  case InternalInterface.MG_ACT_SWITCH_TO_OFFLINE:
1057
- description = "Switch To Offline";
1053
+ description = 'Switch To Offline';
1058
1054
  break;
1059
1055
  case InternalInterface.MG_ACT_UNAVAILABLE_SERVER:
1060
- description = "Unavailable Server";
1056
+ description = 'Unavailable Server';
1061
1057
  break;
1062
1058
  case InternalInterface.MG_ACT_CONTEXT_MENU:
1063
- description = "Context Menu";
1059
+ description = 'Context Menu';
1064
1060
  break;
1065
1061
  case InternalInterface.MG_ACT_ENTER_ROW_EDITING:
1066
- description = "Enter Row Editing";
1062
+ description = 'Enter Row Editing';
1067
1063
  break;
1068
1064
  case InternalInterface.MG_ACT_NO_PROG_EXE_RIGHTS:
1069
- description = "No Program Execution Rights";
1065
+ description = 'No Program Execution Rights';
1070
1066
  break;
1071
1067
  case InternalInterface.MG_ACT_WEBCLIENT_ROUTE:
1072
1068
  description = 'Route';
@@ -1102,7 +1098,7 @@ export class Event {
1102
1098
  description = 'Index Change';
1103
1099
  break;
1104
1100
  default:
1105
- description = "";
1101
+ description = '';
1106
1102
  break;
1107
1103
  }
1108
1104
  return description;
@@ -1121,37 +1117,34 @@ export class Event {
1121
1117
  getKeyboardItemString() {
1122
1118
  let kbi = this.getKbdItm();
1123
1119
  if (kbi === null)
1124
- return "";
1120
+ return '';
1125
1121
  return kbi.ToString();
1126
1122
  }
1127
1123
  seconds2String() {
1128
1124
  let time = new Array(3);
1129
- let buffer = "";
1125
+ let buffer = '';
1130
1126
  time[0] = Math.floor(this._seconds / 3600);
1131
1127
  time[1] = Math.floor((this._seconds - time[0] * 3600) / 60);
1132
1128
  time[2] = this._seconds % 60;
1133
1129
  for (let i = 0; i < time.length; i++) {
1134
1130
  if (time[i] === 0)
1135
- buffer += "00";
1131
+ buffer += '00';
1136
1132
  else if (time[i] < 10)
1137
- buffer += ("0" + time[i]);
1133
+ buffer += ('0' + time[i]);
1138
1134
  else
1139
1135
  buffer += time[i];
1140
1136
  if (i < time.length - 1)
1141
- buffer += ":";
1137
+ buffer += ':';
1142
1138
  }
1143
1139
  return buffer;
1144
1140
  }
1145
- getParamVal(idx) {
1146
- return this._paramVals[idx];
1147
- }
1148
1141
  parseParamVal(valueStr) {
1149
1142
  let startOfs = 0, endOfs = 0, nLen, j;
1150
1143
  let sLen, sValue = null;
1151
1144
  for (j = 0; j < this._parameters; j++) {
1152
1145
  switch (this._paramAttrs[j]) {
1153
1146
  case StorageAttribute.SKIP:
1154
- sValue = "";
1147
+ sValue = '';
1155
1148
  break;
1156
1149
  case StorageAttribute.ALPHA:
1157
1150
  case StorageAttribute.BLOB_VECTOR:
@@ -1211,88 +1204,9 @@ export class Event {
1211
1204
  }
1212
1205
  return endOfs;
1213
1206
  }
1214
- setParamVals(paramVals_) {
1215
- this._paramVals = paramVals_;
1216
- this._paramAttrs = this._paramNulls = "";
1217
- this._parameters = 0;
1218
- if (this._paramVals !== null) {
1219
- this._parameters = this._paramVals.length;
1220
- for (let i = 0; i < this._parameters; i++) {
1221
- this._paramAttrs += StorageAttribute.ALPHA;
1222
- this._paramNulls += "0";
1223
- }
1224
- }
1225
- }
1226
- setParamType(paramNum, fld) {
1227
- let currType;
1228
- let currValue;
1229
- let newType = fld.getType();
1230
- let pic = null;
1231
- let sameType = false;
1232
- if (this._paramVals != null && this.getParamNum() >= paramNum) {
1233
- currType = this._paramAttrs[paramNum];
1234
- sameType = (currType === newType);
1235
- if (!sameType) {
1236
- let charArr = null;
1237
- currValue = this._paramVals[paramNum];
1238
- switch (newType) {
1239
- case StorageAttribute.ALPHA:
1240
- case StorageAttribute.BLOB:
1241
- case StorageAttribute.BLOB_VECTOR:
1242
- case StorageAttribute.MEMO:
1243
- case StorageAttribute.UNICODE:
1244
- break;
1245
- case StorageAttribute.NUMERIC:
1246
- case StorageAttribute.DATE:
1247
- case StorageAttribute.TIME:
1248
- if (currType === StorageAttribute.ALPHA) {
1249
- try {
1250
- pic = PIC.buildPicture(newType, currValue, fld.getTask().getCompIdx(), true);
1251
- this._paramVals[paramNum] = DisplayConvertor.Instance.disp2mg(currValue, pic, fld.getTask().getCompIdx(), BlobType.CONTENT_TYPE_UNKNOWN);
1252
- sameType = true;
1253
- }
1254
- catch (exception) {
1255
- if (exception instanceof Exception) {
1256
- sameType = false;
1257
- Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Event.setParamType() cannot transfer {0} to Numeric with picture {1}", currValue, (pic != null ? pic.getFormat() : "null")));
1258
- }
1259
- else
1260
- throw exception;
1261
- }
1262
- }
1263
- break;
1264
- case StorageAttribute.BOOLEAN:
1265
- if (currType === StorageAttribute.ALPHA) {
1266
- currValue = currValue.trim();
1267
- if (currValue === "1" || currValue.toLowerCase() === "true")
1268
- this._paramVals[paramNum] = "1";
1269
- else
1270
- this._paramVals[paramNum] = "0";
1271
- sameType = true;
1272
- }
1273
- break;
1274
- }
1275
- if (sameType) {
1276
- charArr = NString.ToCharArray(this._paramAttrs);
1277
- charArr[paramNum] = newType;
1278
- this._paramAttrs = NString.FromChars(charArr);
1279
- }
1280
- }
1281
- }
1282
- return sameType;
1283
- }
1284
1207
  getParamNum() {
1285
1208
  return this._parameters;
1286
1209
  }
1287
- getParamNull(idx) {
1288
- if ('0' === this._paramNulls.charAt(idx))
1289
- return false;
1290
- else
1291
- return true;
1292
- }
1293
- getParamAttr(idx) {
1294
- return this._paramAttrs.charAt(idx);
1295
- }
1296
1210
  isControlHeader() {
1297
1211
  return this.getType() == ConstInterface.EVENT_TYPE_INTERNAL &&
1298
1212
  (this.getInternalCode() == InternalInterface.MG_ACT_CTRL_PREFIX ||
@@ -1324,7 +1238,7 @@ export class Event {
1324
1238
  buffer.Append('ID ' + this.Exp.getId().toString());
1325
1239
  break;
1326
1240
  default:
1327
- buffer.Append("unknown event type ");
1241
+ buffer.Append('unknown event type ');
1328
1242
  break;
1329
1243
  }
1330
1244
  }
@@ -1404,24 +1318,6 @@ export class Event {
1404
1318
  getUserDefinedFuncRetExp() {
1405
1319
  return this._returnExp;
1406
1320
  }
1407
- getOsCommandText() {
1408
- return this._osCommandText;
1409
- }
1410
- setOsCommandText(osCommandText) {
1411
- this._osCommandText = osCommandText;
1412
- }
1413
- getOsCommandWait() {
1414
- return this._osCommandWait;
1415
- }
1416
- setOsCommandWait(wait) {
1417
- this._osCommandWait = wait;
1418
- }
1419
- getOsCommandShow() {
1420
- return this._osCommandShow;
1421
- }
1422
- setOsCommandShow(osShow) {
1423
- this._osCommandShow = osShow;
1424
- }
1425
1321
  setTimestamp() {
1426
1322
  this._timestamp = Event._lastTimestamp++;
1427
1323
  }
@@ -1429,8 +1325,8 @@ export class Event {
1429
1325
  return this._timestamp;
1430
1326
  }
1431
1327
  toString() {
1432
- return NString.Format("{{Event: {0}}}", this.getBrkLevel());
1328
+ return NString.Format('{{Event: {0}}}', this.getBrkLevel());
1433
1329
  }
1434
1330
  }
1435
1331
  Event._lastTimestamp = 0;
1436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsS0FBSyxFQUVMLE9BQU8sRUFDUCxPQUFPLEVBQ1AsWUFBWSxFQUNaLFFBQVEsRUFDUixhQUFhLEVBQ2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxFQUNOLElBQUksRUFDSixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLFlBQVksRUFDWixTQUFTLEVBQ1YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osU0FBUyxFQUNULEdBQUcsRUFDSCxXQUFXLEVBRVgsK0JBQStCLEVBQ2hDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBR2pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sS0FBSztJQWlDaEI7UUE1QkEsUUFBRyxHQUFlLElBQUksQ0FBQztRQUN2QixlQUFVLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUN2QyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQUNwQixtQkFBYyxHQUFlLENBQUMsQ0FBQztRQUMvQixtQkFBYyxHQUFXLElBQUksQ0FBQztRQUM5QixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUN4QyxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixl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LEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDOztBQXQrRGMsb0JBQWMsR0FBVyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFwcGxpY2F0aW9uRXhjZXB0aW9uLFxyXG4gIENoYXIsXHJcbiAgRXhjZXB0aW9uLFxyXG4gIEhhc2hVdGlscyxcclxuICBJbnQzMixcclxuICBMaXN0LFxyXG4gIE5OdW1iZXIsXHJcbiAgTlN0cmluZyxcclxuICBOdW1iZXJTdHlsZXMsXHJcbiAgUmVmUGFyYW0sXHJcbiAgU3RyaW5nQnVpbGRlclxyXG59IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1xyXG4gIEJhc2U2NCxcclxuICBDYWxsT3NTaG93LFxyXG4gIEZvcmNlRXhpdCxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWlzYyxcclxuICBTdG9yYWdlQXR0cmlidXRlLFxyXG4gIFN0clV0aWwsXHJcbiAgWE1MQ29uc3RhbnRzLFxyXG4gIFhtbFBhcnNlclxyXG59IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgQmxvYlR5cGUsXHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBLZXlib2FyZEl0ZW0sXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFBJQyxcclxuICBSZWNvcmRVdGlscyxcclxuICBUYXNrRGVmaW5pdGlvbklkLFxyXG4gIFRhc2tEZWZpbml0aW9uSWRUYWJsZVNheEhhbmRsZXJcclxufSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtFeHByZXNzaW9ufSBmcm9tIFwiLi4vZXhwL0V4cHJlc3Npb25cIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7VGFza0Jhc2V9IGZyb20gXCIuLi90YXNrcy9UYXNrQmFzZVwiO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkTWFuYWdlcn0gZnJvbSBcIi4uL3J0L0xhc3RGb2N1c2VkTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCB0aGUgZXZlbnQgZW50aXR5XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFdmVudCB7XHJcbiAgLy8gQVRURU5USU9OICFcclxuICAvLyBhbnkgY2hhbmdlIHRvIHRoZSBtZW1iZXIgdmFyaWFibGVzIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjaGFuZ2UgdG8gdGhlIENUT1IgdGhhdFxyXG4gIC8vIGdldHMgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdFdmVudCcuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2xhc3RUaW1lc3RhbXA6IG51bWJlciA9IDA7IC8vIGxhc3QgdGltZXN0YW1wXHJcbiAgRXhwOiBFeHByZXNzaW9uID0gbnVsbDsgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgX2ZvcmNlRXhpdDogRm9yY2VFeGl0ID0gRm9yY2VFeGl0Lk5vbmU7IC8vIFRoZSDigJxmb3JjZSBleGl0P2lzIG9uZSBvZjogUmVjb3JkLCBDb250cm9sLCBOb25lLiBUaGlzIGF0dHJpYnV0ZSBpcyByZWxldmFudCBvbmx5IGZvciBldmVudHMgaW4gdGhlIOKAnHVzZXIgZXZlbnRzP3RhYmxlLlxyXG4gIGtiZEl0bTogS2V5Ym9hcmRJdGVtID0gbnVsbDsgLy8gZm9yIHN5c3RlbSBldmVudHNcclxuICBwcml2YXRlIF9vc0NvbW1hbmRTaG93OiBDYWxsT3NTaG93ID0gMDtcclxuICBwcml2YXRlIF9vc0NvbW1hbmRUZXh0OiBzdHJpbmcgPSBudWxsO1xyXG4gIHByaXZhdGUgX29zQ29tbWFuZFdhaXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfcGFyYW1BdHRyczogc3RyaW5nID0gbnVsbDtcclxuICBfcGFyYW1OdWxsczogc3RyaW5nID0gbnVsbDtcclxuICBfcGFyYW1WYWxzOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgX3BhcmFtZXRlcnM6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfcmV0dXJuRXhwOiBudW1iZXIgPSAwO1xyXG4gIC8qIGV4cHJlc3Npb24gbnVtYmVyIHRvIHNwZWNpZnkgdGhlIEZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlICovXHJcbiAgX3NlY29uZHM6IG51bWJlciA9IEludDMyLk1pblZhbHVlOyAvLyBmb3IgdGltZXIgZXZlbnRzXHJcbiAgX3RpbWVzdGFtcDogbnVtYmVyID0gMDtcclxuICBfdHlwZTogc3RyaW5nID0gQ2hhci5NaW5WYWx1ZTsgLy8gU3lzdGVtfEludGVybmFsfFRpbWVyfEV4cHJlc3Npb258VXNlcnxOb25lXHJcbiAgcHJpdmF0ZSBfdXNlckRlZmluZWRGdW5jTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBwcml2YXRlIF91c2VyRGVmaW5lZEZ1bmNOYW1lSGFzaENvZGU6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfdXNlckV2dERlc2M6IHN0cmluZyA9IFwiXCI7XHJcbiAgX3VzZXJFdnRJZHg6IG51bWJlciA9IEludDMyLk1pblZhbHVlOyAvLyB0aGUgaW5kZXggb2YgdGhlIHVzZXIgZXZlbnQgaW4gdGhlIHRhc2tzIHVzZXIgZXZlbnRzIHRhYmxlXHJcblxyXG4gIHByaXZhdGUgb3duZXJUYXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkID0gbnVsbDtcclxuICBJbnRlcm5hbEV2ZW50OiBudW1iZXIgPSAwOyAvLyBpbnRlcm5hbCBldmVudCBjb2RlXHJcbiAgUHJnRGVzY3JpcHRpb246IHN0cmluZyA9IG51bGw7XHJcbiAgUHVibGljTmFtZTogc3RyaW5nID0gbnVsbDtcclxuICBVc2VyRXZ0OiBFdmVudCA9IG51bGw7XHJcbiAgVXNlckV2dFRhc2tUYWc6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICAgIHRoaXMuY29uc3RydWN0b3JfMCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMCgpOiB2b2lkIHtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IEludDMyLk1pblZhbHVlO1xyXG4gICAgdGhpcy5zZXRUaW1lc3RhbXAoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb3B5IENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcl8xKGV2dDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBldnQuX3R5cGU7XHJcbiAgICB0aGlzLmtiZEl0bSA9IGV2dC5rYmRJdG07XHJcbiAgICB0aGlzLkludGVybmFsRXZlbnQgPSBldnQuSW50ZXJuYWxFdmVudDtcclxuICAgIHRoaXMuX3NlY29uZHMgPSBldnQuX3NlY29uZHM7XHJcbiAgICB0aGlzLkV4cCA9IGV2dC5FeHA7XHJcbiAgICB0aGlzLl9mb3JjZUV4aXQgPSBldnQuX2ZvcmNlRXhpdDtcclxuICAgIHRoaXMuVXNlckV2dCA9IGV2dC5Vc2VyRXZ0O1xyXG4gICAgdGhpcy5Vc2VyRXZ0VGFza1RhZyA9IGV2dC5Vc2VyRXZ0VGFza1RhZztcclxuICAgIHRoaXMuX3VzZXJFdnRJZHggPSBldnQuX3VzZXJFdnRJZHg7XHJcbiAgICB0aGlzLl90aW1lc3RhbXAgPSAwO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldCBGb3JjZUV4aXQoKTogRm9yY2VFeGl0IHtcclxuICAgIHJldHVybiB0aGlzLl9mb3JjZUV4aXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTmVlZCBwYXJ0IGlucHV0IFN0cmluZyB0byByZWxldmFudCBmb3IgdGhlIGNsYXNzIGRhdGEuXHJcbiAgLy8vICAgaW5kZXggb2YgZW5kIDxldmVudCAuLi4+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ4bWxQYXJzZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPjwvcGFyYW0+XHJcbiAgZmlsbERhdGEoeG1sUGFyc2VyOiBYbWxQYXJzZXIsIHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICBsZXQgdXNlclZhbHVlOiBzdHJpbmdcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgeG1sUGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHhtbFBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCkgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMoeG1sUGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGxldCByZWZVc2VyVmFsdWU6IFJlZlBhcmFtPHN0cmluZz4gPSBuZXcgUmVmUGFyYW0odXNlclZhbHVlKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvciwgdGFza1JlZiwgcmVmVXNlclZhbHVlKTtcclxuICAgICAgdXNlclZhbHVlID0gcmVmVXNlclZhbHVlLnZhbHVlO1xyXG5cclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0ICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcblxyXG4gICAgICB0aGlzLkluaXRJbm5lck9iamVjdHMoeG1sUGFyc2VyKTtcclxuXHJcbiAgICAgIGlmICh1c2VyVmFsdWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Jbml0VXNlckRhdGEodGFza1JlZiwgdXNlclZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gRXZlbnQuRmlsbERhdGEoKSBvdXQgb2Ygc3RyaW5nIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdElubmVyT2JqZWN0cyh4bWxQYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IG5leHRUYWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXROZXh0VGFnKCk7XHJcbiAgICBzd2l0Y2ggKG5leHRUYWcpIHtcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfVEFHX1RBU0tERUZJTklUSU9OSURfRU5UUlk6XHJcbiAgICAgICAgbGV0IHhtbEJ1ZmZlcjogc3RyaW5nID0geG1sUGFyc2VyLlJlYWRUb0VuZE9mQ3VycmVudEVsZW1lbnQoKTtcclxuICAgICAgICB0aGlzLkluaXRUYXNrRGVmaW5pdGlvbklkKHhtbEJ1ZmZlcik7XHJcblxyXG4gICAgICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyAoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSkubGVuZ3RoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBNYWtlIGluaXRpYWxpemF0aW9uIG9mIHByaXZhdGUgZWxlbWVudHMgYnkgZm91bmQgdG9rZW5zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmZvdW5kIHRva2Vucywgd2hpY2ggY29uc2lzdCBhdHRyaWJ1dGUvdmFsdWUgb2YgZXZlcnkgZm91bmRlbGVtZW50PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+LCB0YXNrUmVmOiBUYXNrQmFzZSwgcmVmVXNlclZhbHVlOiBSZWZQYXJhbTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBsZXQgbW9kaWZpZXI6IE1vZGlmaWVycyA9IE1vZGlmaWVycy5NT0RJRklFUl9OT05FO1xyXG4gICAgbGV0IGtleUNvZGU6IG51bWJlciA9IC0xO1xyXG4gICAgcmVmVXNlclZhbHVlLnZhbHVlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpe1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9FVkVOVFRZUEU6XHJcbiAgICAgICAgICB0aGlzLl90eXBlID0gdmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NT0RJRklFUjpcclxuICAgICAgICAgIG1vZGlmaWVyID0gPE1vZGlmaWVycz52YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIEFsdHxDdHJsfFNoaWZ0fE5vbmVcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5URVJOQUxFVkVOVDpcclxuICAgICAgICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0tFWUNPREU6XHJcbiAgICAgICAgICBrZXlDb2RlID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU0VDT05EUzpcclxuICAgICAgICAgIHRoaXMuX3NlY29uZHMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfRVhQOlxyXG4gICAgICAgICAgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgICAgICAgICB0aGlzLkV4cCA9IHRhc2tSZWYuZ2V0RXhwQnlJZChYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRk9SQ0VfRVhJVDpcclxuICAgICAgICAgIHRoaXMuX2ZvcmNlRXhpdCA9IDxGb3JjZUV4aXQ+dmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfREVTQzpcclxuICAgICAgICAgIHRoaXMuX3VzZXJFdnREZXNjID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QVUJMSUM6XHJcbiAgICAgICAgICB0aGlzLlB1YmxpY05hbWUgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1BBUkFNUzpcclxuICAgICAgICAgIHRoaXMuX3BhcmFtZXRlcnMgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QQVJfQVRUUlM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbUF0dHJzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX1ZBTFVFOlxyXG4gICAgICAgICAgbGV0IHBhcmFtU3RyOiBzdHJpbmcgPSBYbWxQYXJzZXIudW5lc2NhcGUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgdGhpcy5fcGFyYW1WYWxzID0gbmV3IEFycmF5KHRoaXMuX3BhcmFtZXRlcnMpO1xyXG4gICAgICAgICAgLy8gcHV0IHRoZSBwYXJhbVZhbHMgaW4gcGxhY2VcclxuICAgICAgICAgIHRoaXMucGFyc2VQYXJhbVZhbChwYXJhbVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTlVMTFM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbU51bGxzID0gdmFsdWVTdHI7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUjpcclxuICAgICAgICAgIHJlZlVzZXJWYWx1ZS52YWx1ZSA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gVVNFUiBldmVudFxyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTkFNRTpcclxuICAgICAgICAgIHRoaXMuc2V0VXNlckRlZmluZWRGdW5jTmFtZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0lEOlxyXG4gICAgICAgICAgdGhpcy5fcmV0dXJuRXhwID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU1JfREVGX0ZVQ19SRVRfRVhQX0FUVFI6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gRXZlbnQgY2xhc3MuIEluc2VydCBjYXNlIHRvIEV2ZW50LmluaXRFbGVtZW50cyBmb3IgezB9XCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSlcclxuICAgICAgdGhpcy5rYmRJdG0gPSBuZXcgS2V5Ym9hcmRJdGVtKGtleUNvZGUsIG1vZGlmaWVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24gY29kZSBmcm9tIHRoZSBcInVzZXJcIiBhdHRyaWJ1dGUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWx1ZVN0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza1JlZlwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBJbml0VXNlckRhdGEodGFza1JlZjogVGFza0Jhc2UsIHVzZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgY29tbWE6IG51bWJlciA9IHVzZXJWYWx1ZS5pbmRleE9mKFwiLFwiKTtcclxuICAgIGlmIChjb21tYSA+IC0xKSB7XHJcbiAgICAgIGxldCB1ZVRhc2tJZDogc3RyaW5nID0gdXNlclZhbHVlLnN1YnN0cigwLCBjb21tYSk7XHJcbiAgICAgIGlmICh0YXNrUmVmICE9PSBudWxsKVxyXG4gICAgICAgIHVlVGFza0lkID0gdGFza1JlZi5UYXNrU2VydmljZS5HZXRFdmVudFRhc2tJZCggdWVUYXNrSWQpO1xyXG5cclxuICAgICAgbGV0IHVlVGFzazogVGFza0Jhc2UgPSA8VGFza0Jhc2U+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHVlVGFza0lkKTtcclxuXHJcbiAgICAgIGxldCB1ZUlkeDogbnVtYmVyID0gWG1sUGFyc2VyLmdldEludCh1c2VyVmFsdWUuc3Vic3RyKGNvbW1hICsgMSkpO1xyXG5cclxuICAgICAgaWYgKHVlVGFzayAhPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IHVlVGFzay5nZXRVc2VyRXZlbnQodWVJZHgpO1xyXG4gICAgICAgIGlmICh0aGlzLlVzZXJFdnQgPT09IG51bGwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIEV2ZW50LmZpbGxEYXRhKCk6IHVzZXIgZXZlbnQgbm90IGZvdW5kLiB0YXNrIGlkID0gXCIgKyB1ZVRhc2tJZCArXHJcbiAgICAgICAgICAgIFwiLCB1c2VyIGV2ZW50IGluZGV4ID0gXCIgKyB1ZUlkeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuVXNlckV2dFRhc2tUYWcgPSB1ZVRhc2tJZDtcclxuICAgICAgICB0aGlzLl91c2VyRXZ0SWR4ID0gdWVJZHg7XHJcbiAgICAgIH1cclxuICAgICAgLy8gdGhlIHRhc2sgaGFzbid0IGJlZW4gZm91bmQsIGl0IG5vdCBwYXJzZWQsIHlldFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLlVzZXJFdnRUYXNrVGFnID0gdWVUYXNrSWQ7XHJcbiAgICAgICAgdGhpcy5fdXNlckV2dElkeCA9IHVlSWR4O1xyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IG51bGw7IC8vIGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQgb24gdGhpcyBzdGVwXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdFRhc2tEZWZpbml0aW9uSWQoeG1sQnVmZmVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBoYW5kbGVyOiBUYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyID0gbmV3IFRhc2tEZWZpbml0aW9uSWRUYWJsZVNheEhhbmRsZXIodGhpcy5TZXRUYXNrRGVmaW5pdGlvbklkKTtcclxuICAgIGhhbmRsZXIucGFyc2UoeG1sQnVmZmVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2FsbGJhY2sgZm9yIHRoZSBzYXggcGFyc2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrRGVmaW5pdGlvbklkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ4bWxJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGVmYXVsdFRhZ0xpc3RcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgU2V0VGFza0RlZmluaXRpb25JZCh0YXNrRGVmaW5pdGlvbklkOiBUYXNrRGVmaW5pdGlvbklkKTogdm9pZCB7XHJcbiAgICB0aGlzLm93bmVyVGFza0RlZmluaXRpb25JZCA9IHRhc2tEZWZpbml0aW9uSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmluZCB0YXNrIGZvciBVc2VyIEV2ZW50IGlmIGl0IHdhcyBub3QgZm91bmQgZHVyaW5nIHBhcnNpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbmRVc2VyRXZlbnQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIHRoaXMuVXNlckV2dCA9PT0gbnVsbCkge1xyXG4gICAgICBsZXQgdWVUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodGhpcy5Vc2VyRXZ0VGFza1RhZyk7XHJcbiAgICAgIGlmICh1ZVRhc2sgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Vc2VyRXZ0ID0gdWVUYXNrLmdldFVzZXJFdmVudCh0aGlzLl91c2VyRXZ0SWR4KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLlVzZXJFdnQgPT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKE5TdHJpbmcuRm9ybWF0KFwiaW4gRXZlbnQuZmluZFVzZXJFdmVudCgpOiB1c2VyIGV2ZW50IG5vdCBmb3VuZC4gdGFzayBpZCA9IHswfSBkb2Vzbid0IGV4aXN0XCIsIHRoaXMuVXNlckV2dFRhc2tUYWcpKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29tcGFyZSB0aGlzIGV2ZW50IHRvIGFub3RoZXIgLSByZXR1cm5zIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlIGV2ZW50cyBhcmUgaWRlbnRpY2FsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBlcXVhbHMoZXZ0OiBFdmVudCk6IGJvb2xlYW57XHJcbiAgICBsZXQgYkVxdWFsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLy8gY29tcGFyZSByZWZlcmVuY2VzXHJcbiAgICBpZiAodGhpcyA9PT0gZXZ0KVxyXG4gICAgICBiRXF1YWwgPSB0cnVlO1xyXG4gICAgLy8gZG8gc2hhbGxvdyBjb21wYXJpc2lvblxyXG4gICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gZXZ0Ll90eXBlKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgICBiRXF1YWwgPSB0aGlzLmtiZEl0bS5lcXVhbHMoZXZ0LmtiZEl0bSk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuSW50ZXJuYWxFdmVudCA9PT0gZXZ0LkludGVybmFsRXZlbnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICAgIGJFcXVhbCA9ICh0aGlzLl9zZWNvbmRzID09PSBldnQuX3NlY29uZHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUM6XHJcbiAgICAgICAgICBiRXF1YWwgPSAodGhpcy5FeHAgPT09IGV2dC5FeHApO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuVXNlckV2dCA9PT0gZXZ0LlVzZXJFdnQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkM6XHJcbiAgICAgICAgICBpZiAodGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlID09PSBldnQuZ2V0VXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlKCkpIHtcclxuICAgICAgICAgICAgaWYgKE5TdHJpbmcuRXF1YWxzKGV2dC5nZXRVc2VyRGVmaW5lZEZ1bmNOYW1lKCksIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWUsIHRydWUpKVxyXG4gICAgICAgICAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGJFcXVhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGb3IgaW50ZXJuYWwgZXZlbnRzLCBjb21wYXJlIHRoZSBpbnRlcm5hbCBuYW1lc1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDIHx8IGV2dC5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUMpIHtcclxuICAgICAgbGV0IG5hbWUxOiBTdHJpbmcgPSBudWxsO1xyXG4gICAgICBsZXQgbmFtZTI6IFN0cmluZyA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgZXZ0Ll90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIpXHJcbiAgICAgICAgYkVxdWFsID0gZmFsc2U7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDKSB7XHJcbiAgICAgICAgbmFtZTEgPSB0aGlzLlB1YmxpY05hbWU7XHJcbiAgICAgICAgbmFtZTIgPSBldnQuZ2V0VXNlckV2ZW50KCkuUHVibGljTmFtZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuYW1lMSA9IGV2dC5QdWJsaWNOYW1lO1xyXG4gICAgICAgIG5hbWUyID0gdGhpcy5nZXRVc2VyRXZlbnQoKS5QdWJsaWNOYW1lO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChuYW1lMSA9PT0gbnVsbCB8fCBuYW1lMiA9PT0gbnVsbClcclxuICAgICAgICBiRXF1YWwgPSBmYWxzZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGJFcXVhbCA9IChuYW1lMSA9PT0gbmFtZTIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCAmJiBldnQuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKSB7XHJcbiAgICAgIGlmIChMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0Q3VyclRhc2soKSAhPT0gbnVsbCAmJiAoQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuZ2V0TWF0Y2hpbmdBY3Rpb24oIGV2dC5nZXRLYmRJdG0oKSkpID09PSB0aGlzLmdldEludGVybmFsQ29kZSgpKVxyXG4gICAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgZXZ0Ll90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIpIHtcclxuICAgICAgLy8gYmVmb3JlIHVzaW5nIHRoZSB1c2VyIGV2ZW50LCBjaGVjayB0aGF0IGl0IGlzIHZhbGlkXHJcbiAgICAgIHRoaXMuZmluZFVzZXJFdmVudCgpO1xyXG5cclxuICAgICAgLy8gaWYgb25lIGV2ZW50IG9mIHRoZSB0d28gaXMgYSB1c2VyIGV2ZW50IGFuZCB0aGUgb3RoZXIgaXNuJ3QgdGhlblxyXG4gICAgICAvLyBjb21wYXJlIHRoZSB0cmlnZ2VyIG9mIHRoZSB1c2VyIGV2ZW50IHRvIHRoZSBub24tdXNlciBldmVudFxyXG4gICAgICBiRXF1YWwgPSAgdGhpcy5Vc2VyRXZ0LmVxdWFscyhldnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJFcXVhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGludGVybmFsIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHNldFB1YmxpY05hbWUoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBGb3IgYSBydW50aW1lIGludGVybmFsIGV2ZW50IC0gY2FsY3VsYXRlIHRoZSBpbnRlcm5hbCBuYW1lLlxyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfUFVCTElDICYmIHRoaXMuRXhwICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuUHVibGljTmFtZSA9IChhd2FpdCB0aGlzLkV4cC5ldmFsdWF0ZVdpdGhSZXNMZW5ndGgoMjU1KSkubWdWYWw7XHJcbiAgICAgIGlmICh0aGlzLlB1YmxpY05hbWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5QdWJsaWNOYW1lID0gU3RyVXRpbC5ydHJpbSh0aGlzLlB1YmxpY05hbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhbiBJbnRlcm5hbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb2RlXCI+dGhlIGNvZGUgb2YgdGhlIGludGVybmFsIGV2ZW50IDwvcGFyYW0+XHJcbiAgc2V0SW50ZXJuYWwoY29kZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl90eXBlID0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IGNvZGU7XHJcblxyXG4gICAgLy8gTUdfQUNUX0hJVC9NR19BQ1RfQ1RSTF9ISVQgYXJlIGNhdXNlZCBieSBtb3VzZSBjbGljay4gSW4gdGhpcyBjYXNlXHJcbiAgICAvLyB0aW1lIG9mIGxhc3QgdXNlciBhY3Rpb24gZm9yIElETEUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlLWV2YWx1YXRlZC5cclxuICAgIGlmIChjb2RlID09PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUIHx8IGNvZGUgPT09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVClcclxuICAgICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLkxhc3RBY3Rpb25UaW1lID0gTWlzYy5nZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYW4gRXhwcmVzc2lvbiBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJleHBSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZXhwcmVzc2lvbiBvYmplY3QgPC9wYXJhbT5cclxuICBzZXRFeHByZXNzaW9uKGV4cFJlZjogRXhwcmVzc2lvbik6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjtcclxuICAgIHRoaXMuRXhwID0gZXhwUmVmO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBFeHByZXNzaW9uIG9mIHRoZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0RXhwcmVzc2lvbigpOiBFeHByZXNzaW9uIHtcclxuICAgIHJldHVybiB0aGlzLkV4cDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgVXNlckV2ZW50IGRlc2NyaXB0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldFVzckV2bnREZXNjKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKHRoaXMuVXNlckV2dCAhPT0gbnVsbCkgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldFN5c3RlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNO1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgU3lzdGVtIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImtleWJvYXJkSXRlbVwiPnRoZSBrZXlib2FyZCBpdGVtIG9iamVjdCA8L3BhcmFtPlxyXG4gIHNldEtleWJvYXJkSXRlbShrZXlib2FyZEl0ZW06IEtleWJvYXJkSXRlbSk6IHZvaWQge1xyXG4gICAgdGhpcy5rYmRJdG0gPSBrZXlib2FyZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHR5cGUgcmV0dXJucyBTeXN0ZW18SW50ZXJuYWx8VXNlcnxUaW1lcnxFeHByZXNzaW9ufFJlY29tcHV0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3R5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHR5cGUgcmVjZWl2ZXMgU3lzdGVtfEludGVybmFsfFVzZXJ8VGltZXJ8RXhwcmVzc2lvbnxSZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFR5cGUoYVR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IGFUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBpbnRlcm5hbCBldmVudCBjb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IGludCBpcyB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSA8L3JldHVybnM+XHJcbiAgZ2V0SW50ZXJuYWxDb2RlKCk6IG51bWJlciB7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTClcclxuICAgICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudDtcclxuICAgIHJldHVybiBJbnQzMi5NaW5WYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bSgpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKVxyXG4gICAgICByZXR1cm4gdGhpcy5rYmRJdG07XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGtleWJvYXJkIGl0ZW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEtiZEl0bUFsd2F5cygpOiBLZXlib2FyZEl0ZW0ge1xyXG4gICAgcmV0dXJuIHRoaXMua2JkSXRtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBmb3Igbm9uIGRhdGEgZXZlbnRzIG9yIGRhdGEgZXZlbnRzIHdoaWNoIHRoZWlyIGV4cHJlc3Npb25cclxuICAvLy8gICBldmFsdWF0ZXMgdG8gdHJ1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgZGF0YUV2ZW50SXNUcnVlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT04gJiZcclxuICAgICAgISh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIgJiYgdGhpcy5nZXRVc2VyRXZlbnRUeXBlKCkgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTikpXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUilcclxuICAgICAgcmV0dXJuIERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKGF3YWl0IHRoaXMuRXhwLmV2YWx1YXRlV2l0aFJlc3VsdFR5cGVBbmRMZW5ndGgoU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOLCAwKSk7XHJcbiAgICByZXR1cm4gRGlzcGxheUNvbnZlcnRvci50b0Jvb2xlYW4oYXdhaXQgdGhpcy5Vc2VyRXZ0LmdldEV4cHJlc3Npb24oKS5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgbnVtYmVyIG9mIHNlY29uZHMgKGZvciB0aW1lciBldmVudHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2Vjb25kcztcclxuICB9XHJcblxyXG4gIGdldEJya0xldmVsKCk6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZztcclxuICBnZXRCcmtMZXZlbChmbG93TW9uaXRvcj86IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWxfMShmbG93TW9uaXRvcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudCBub3QgZm9yIEZsb3cgTW9uaXRvcmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8wKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBicmVhayBsZXZlbCBvZiBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbG93TW9uaXRvclwiPmlzIGl0IG5lZWRlZCBmb3IgRmxvdyBNb25pdG9yaW5nIHVzYWdlIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBnZXRCcmtMZXZlbF8xKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCBsZXZlbDogc3RyaW5nID0gXCJcIjtcclxuICAgIHN3aXRjaCAodGhpcy5fdHlwZSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLkludGVybmFsRXZlbnQpIHtcclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfUFJFRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfUFJFRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfUFJFRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1NVRkZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1NVRkZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9UQVNLX1NVRkZJWDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19QUkVGSVg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfU1VGRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWCArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9TVUZGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9TVUZGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9TVUZGSVggKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfVkVSSUZJQ0FUSU9OOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfVkVSSUZJQ0FUSU9OX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfVkVSSUZJQ0FUSU9OICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRV9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRSArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX0lOVEVSTkFMX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfSU5URVJOQUwgKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXZlbCArPSBFdmVudC5nZXRJbnRlcm5hbEV2dERlc2NyaXB0aW9uKHRoaXMuSW50ZXJuYWxFdmVudCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNOlxyXG4gICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9TWVNURU1fRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9TWVNURU0gKyAnXyc7XHJcbiAgICAgICAgbGV2ZWwgKz0gdGhpcy5nZXRLZXlib2FyZEl0ZW1TdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfVElNRVJfRk0gKyAnICcgKyB0aGlzLnNlY29uZHMyU3RyaW5nKCkgOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9USU1FUiArICdfJyArIHRoaXMuc2Vjb25kczJTdHJpbmcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OOlxyXG4gICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9FWFBSRVNTSU9OX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfRVhQUkVTU0lPTiArICdfJyArIHRoaXMuRXhwLmdldElkKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUjpcclxuICAgICAgICBsZXZlbCA9IChmbG93TW9uaXRvciA/IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9VU0VSX0ZNICsgXCI6IFwiKSA6IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9VU0VSICsgJ18nKSkgKyAodGhpcy5Vc2VyRXZ0ICE9IG51bGwgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVJfRlVOQzpcclxuICAgICAgICBsZXZlbCA9IChmbG93TW9uaXRvciA/IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVVNFUl9GVU5DVElPTl9GTSArICc6JykgOiAoQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1VTRVJfRlVOQ1RJT04gKyAnXycpKSArIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZGVzY3JpcHRpb24gb2YgdGhlIGV2ZW50IDwvcmV0dXJucz5cclxuICBwdWJsaWMgc3RhdGljIGdldEludGVybmFsRXZ0RGVzY3JpcHRpb24oaW50ZXJuYWxFdmVudENvZGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHN3aXRjaCAoaW50ZXJuYWxFdmVudENvZGUpIHtcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUJPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkFib3V0IE1hZ2ljXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQ1RJT05fTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQWN0aW9uIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FERF9IWVBFUkxJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fTEVGVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTGVmdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BUFBMX1BST1BFUlRJRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVBQTElDQVRJT05TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBcHBsaWNhdGlvbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FQUExJQ0FUSU9OU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBcHBsaWNhdGlvbnMgTGlzdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVRUQUNIX1RPX1RBQkxFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJBdHRhY2ggdG8gVGFibGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FVVEhPUklaRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQXV0aG9yaXplXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHRkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCZWdpbiBGaWVsZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIEZvcm1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9CRUdMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCZWdpbiBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gTmV4dCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gUGFnZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR0xJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIFJvd1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJlZ2luIFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR1RCTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQmVnaW4gdGFibGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JPVFRPTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQm90dG9tXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CVUxMRVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkJ1bGxldFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQlVUVE9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJCdXR0b24gUHJlc3NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBTkNFTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2FuY2VsXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9RVUlUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJRdWl0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DRU5URVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfU1lOVEFYOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDaGVjayBTeW50YXhcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NIRUNLX1RPX0VORDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2hlY2sgdG8gRW5kXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTEVBUl9URU1QTEFURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2xlYXIgVGVtcGxhdGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMRUFSX1ZBTFVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDbGVhciBWYWx1ZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xPU0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNsb3NlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BQ1RfQ0xPU0VfQVBQTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ2xvc2UgQXBwbGljYXRpb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01NVU5JQ0FUSU9OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29tbXVuaWNhdGlvbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTVBPTkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvbXBvbmVudHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfSElUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb250cm9sIEhpdFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09OVFJPTF9OQU1FX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvbnRyb2wgTmFtZSBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTElQX0NPUFk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNvcHlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPUFlfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb3B5IExheW91dFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09QWV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDb3B5IFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNyZWF0ZSBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUkVMSU5FX0FCT1ZFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcmVhdGUgTGluZSBBYm92ZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JFQVRFX1BBUkVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3JlYXRlIFBhcmVudFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0NSRUFURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3JlYXRlIFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUFURV9TVUJUQVNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcmVhdGUgU3VidGFza1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JPU1NfUkVGRVJFTkNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDcm9zcyBSZWZlcmVuY2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NVVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3V0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9EQl9UQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREJNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiREJNU1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRERGX01BS0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRERiBNYWtlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9EQVRBQkFTRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRhdGFiYXNlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREVGQVVMVF9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlZmF1bHQgTGF5b3V0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUZJTkVfRVhQUkVTU0lPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGVmaW5lIEV4cHJlc3Npb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9ERUxDVVJDSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ3VycmVudCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfREVMUFJWQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIENoYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTEVURV9IWVBFUkxJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlbGV0ZSBIeXBlcmxpbmtcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RFTExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRlbGV0ZSBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUxFVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGVsZXRlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX0NPUFlGTEQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRpdHRvXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ESVNQTEFZX1JFRlJFU0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkRpc3BsYXkgUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURJVF9NQUlOX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVkaXQgTWFpbiBGb3JtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5ERkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgRmllbGRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9FTkRGT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgRm9ybVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VORExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVuZCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFBhZ2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9FTkRMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFbmQgUm93XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORFRCTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW5kIFRhYmxlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTlZJUk9OTUVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW52aXJvbm1lbnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYRUNVVEVfUFJPR1JBTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhlY3V0ZSBQcm9ncmFtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWEVDVVRFX1JFUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhlY3V0ZSBSZXBvcnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYSVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkV4aXRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYSVRfU1lTVEVNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFeGl0IFN5c3RlbVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhQT1JUX0lNUE9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhwb3J0L0ltcG9ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhQUkVTU0lPTl9SVUxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRXhwcmVzc2lvbiBydWxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhURVJOQUxfRURJVE9SOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFeHRlcm5hbCBFZGl0b3JcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWFRfRVZFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkV4dGVybmFsIEV2ZW50XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9GT1JNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRm9ybXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZST01fVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkZyb20gVmFsdWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZVTkNUSU9OX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkZ1bmN0aW9uIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dFTkVSQVRFX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkdlbmVyYXRlIEZvcm1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dFTkVSQVRFX1BST0dSQU06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkdlbmVyYXRlIFByb2dyYW1cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dPX1RPX1RPUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiR28gdG8gVG9wXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9IX0NFTlRFUl9PRl9GT1JNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hUTUxfU1RZTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJIVE1MIFN0eWxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSGVscFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSEVMUF9TQ1JFRU5TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJIZWxwIFNjcmVlbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hPUklaX0NFTlRFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSG9yaXouIENlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSV9PX0ZJTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJUYWJsZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lOREVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSW5kZW50XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9JTlNFUlRfT0JKRUNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJJbnNlcnQgT2JqZWN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9KVU1QX1RPX1JPVzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSnVtcCB0byBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0tFWUJPQVJEX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIktleWJvYXJkIExpc3RcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0tFWUJPQVJEX01BUFBJTkc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIktleWJvYXJkIE1hcHBpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xBTkdVQUdFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwibGFuZ3VhZ2VzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fU0VBUkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJMb2NhdGUgTmV4dFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9jYXRlIGEgUmVjb3JkXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0dJQ0FMUE5BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0xPR09OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJMb2dvblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNJTkdfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiSGVscCBUb3BpY3NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLTlhUQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1hcmsgTmV4dCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVJLX05FWFRfTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWFyayBOZXh0IExpbmUgTUxFXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1BSVkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXJrIFByZXZpb3VzIENoYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWFyayBQcmV2aW91cyBMaW5lIE1MRVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUFSS19TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLVE9CRUc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1hcmsgVG8gQmVnaW5uaW5nXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1RPRU5EOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXJrIFRvIEVuZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUFYSU1VTV9IRUlHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1heGltdW0gSGVpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVhJTVVNX1dJRFRIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNYXhpbXVtIFdpZHRoXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NRU5VX0JBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWVudSBCYXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01FTlVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01JTklNVU1fSEVJR0hUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJNaW5pbXVtIEhlaWdodFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUlOSU1VTV9XSURUSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTWluaW11bSBXaWR0aFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX01PRElGWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTW9kaWZ5IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PTklUT1JfREVCVUdHRVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vbml0b3IvRGVidWdnZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PVkVfRU5UUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vdmUgRW50cnlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PVkVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTW92ZSBTdWJ0cmVlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9OVUxMX1NFVFRJTkdTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOVUxMIFNldHRpbmdzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUQ0hBUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBMaW5lXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBQYWdlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfTlhUTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9OWFRQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOZXh0IFNjcmVlblwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX05YVFRBQjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTmV4dCBUYWJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9OWFRXT1JEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJOZXh0IFdvcmRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX05PUk1BTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTm9ybWFsXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT0tcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09MRTI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk9MRTJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09QRU5fQVBQTElDQVRJT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk9wZW4gQXBwbGljYXRpb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09WRVJXUklURV9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT3ZlcndyaXRlIEVudHJ5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PVkVSV1JJVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiT3ZlcndyaXRlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BQRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUFBEXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QQUdFX0ZPT1RFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUGFnZSBGb290ZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBR0VfSEVBREVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQYWdlIEhlYWRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xJUF9QQVNURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUGFzdGVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX0xJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBhc3RlIExpbmtcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBhc3RlIFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZDSEFSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBDaGFyXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUHJldmlvdXMgTGluZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVlBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFBhZ2VcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBSb3dcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmV2aW91cyBTY3JlZW5cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZUQUI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFRhYlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVldPUkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByZXZpb3VzIFdvcmRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0FUVFJJQlVURVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50IEF0dHJpYnV0ZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5URVJfU0VUVVA6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50ZXIgU2V0dXBcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5URVJTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcmludGVyc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJPR1JBTVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByb2dyYW1zXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUk9QRVJUSUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJQcm9wZXJ0aWVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fUVVFUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlF1ZXJ5IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19SQU5HRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmFuZ2Ugb2YgUmVjb3Jkc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfUkVGUkVTSF9SRUNPUkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJlY29yZCBGbHVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVESVJFQ1RfRklMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJlZGlyZWN0IEZpbGVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRURSQVdfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUEVBVF9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVwZWF0IEVudHJ5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVBFQVRfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVwZWF0IFN1YnRyZWVcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUE9SVF9HRU5FUkFUT1I6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVTVE9SRV9ERUZBVUxUUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiUmVzdG9yZSBEZWZhdWx0c1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVUVVJOX1RPX1RSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SSUdIVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFRTX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlJpZ2h0cyBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQVNTSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgQXNzaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQ09MVU1OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIENvbHVtbnNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9DT01NQU5EOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgQ29tbWFuZFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX0ZMSVBfREVTQzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIEZsaXAgRGVzYy5cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9LRVlXT1JEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU1FMIEtleXdvcmRzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfT1BFUkFUT1JTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgT3BlcmF0b3JzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfVEFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTUUwgVGFibGVzXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfV0hFUkVfQ0xBVVNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX1JFRlJFU0hfU0NSRUVOOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTY3JlZW4gUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VDUkVUX05BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTZWNyZXQgTmFtZXNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NFTEVDVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2VsZWN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS0FMTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2VsZWN0IEFsbFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VSVkVSUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRVJWSUNFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9FRFRfTlVMTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU2V0IHRvIE5VTExcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIRUxMX1RPX09TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTaGVsbCB0byBPU1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hPV19FWFBSRVNTSU9OOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTaG93IEV4cHJlc3Npb25cIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIT1dfRlVMTF9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hSSU5LX1RSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU09SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiU29ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU09SVF9SRUNPUkRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTb3J0IFJlY29yZHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBQkxFX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVGFibGUgTG9jYXRlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQUJMRV9MT0NBVEVfTkVYVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVGFibGUgTG9jYXRlIE5leHRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBQkxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX0NPTlRST0w6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19FVkVOVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVE9fVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlRvIFZhbHVlXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UT09MS0lUX1JVTlRJTUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlRvb2xraXQvUnVudGltZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVE9QOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJUb3BcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RZUEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9VTkRPOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmRvIEVkaXRpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VOSU5ERU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmluZGVudFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVBEQVRFX0xJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNDpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fOTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTA6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzExOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTM6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE0OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTY6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE3OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTk6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzIwOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVc2VyIEFjdGlvbiBcIiArIChpbnRlcm5hbEV2ZW50Q29kZSAtIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xICsgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0dST1VQUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0lEUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiVXNlciBJRHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZfQ0VOVEVSX09GX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNlbnRlciBvZiBGb3JtXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WRVJUSUNBTF9DRU5URVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZlcnRpY2FsIENlbnRlclwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklFV19CWV9LRVk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpZXcgYnkgS2V5XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9SRUZSRVNIX1ZJRVc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpZXcgUmVmcmVzaFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklSVFVBTF9WQVJJQUJMRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZhcmlhYmxlc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVklTVUFMX0NPTk5FQ1RJT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlZpc3VhbCBDb25uZWN0aW9uXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIldpbmRvdyBIaXRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dJTk1PVkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIldpbmRvdyBSZXBvc2l0aW9uXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XSU5TSVpFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJXaW5kb3cgUmVzaXplXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9aT09NOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJab29tXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0NLSU5HX0RFVEFJTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkxvY2tpbmcgRGV0YWlsc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19BQk9SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9ja2luZyBBYm9ydFwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19SRVRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiTG9ja2luZyBSZXRyeVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfT0JKRUNUX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkNoZWNrIE9iamVjdCBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSU19MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVc2VycyBMaXN0XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NT0RFTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIk1vZGVsc1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX0NMSUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJDbGlja1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX09OX0RCTElDSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRGJsQ2xpY2tcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JST1dTRVJfRVNDOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJFc2NcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JPTExCQUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJSb2xsYmFja1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRU1QVFlfREFUQVZJRVc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIkVtcHR5IERhdGF2aWV3XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX01PRElGWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29udHJvbCBNb2RpZnlcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0RBVEE6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlByaW50IERhdGFcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BPU1RfUkVGUkVTSF9CWV9QQVJFTlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSBcIlBvc3QgUmVmcmVzaCBieSBQYXJlbnRcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NXSVRDSF9UT19PRkZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJTd2l0Y2ggVG8gT2ZmbGluZVwiO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVU5BVkFJTEFCTEVfU0VSVkVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJVbmF2YWlsYWJsZSBTZXJ2ZXJcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTlRFWFRfTUVOVTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiQ29udGV4dCBNZW51XCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTlRFUl9ST1dfRURJVElORzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiRW50ZXIgUm93IEVkaXRpbmdcIjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9fUFJPR19FWEVfUklHSFRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gXCJObyBQcm9ncmFtIEV4ZWN1dGlvbiBSaWdodHNcIjtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQkNMSUVOVF9ST1VURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSb3V0ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT0xfU09SVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb2x1bW4gU29ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ST1dfREFUQV9DVVJSX1BBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2V0IFJvd3MnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9DTE9TRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTdWJmb3JtIENsb3NlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NVQkZPUk1fUkVGUkVTSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTdWJmb3JtIFJlZnJlc2gnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9PUEVOOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1N1YmZvcm0gT3Blbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01QVVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbXB1dGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0FDSEVfTkVYVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZXQgTmV4dCBEYXRhJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBQ0hFX1BSRVY6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2V0IFByZXZpb3VzIERhdGEnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRkVUQ0hfREFUQV9DT05UUk9MX1ZBTFVFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdGZXRjaCBkYXRhIGNvbnRyb2wgdmFsdWVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lOREVYX0NIQU5HRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdJbmRleCBDaGFuZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9IFwiXCI7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdHlwZSBvZiBVc2VyIEV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHR5cGUgb2YgdXNlciBldmVudCA8L3JldHVybnM+XHJcbiAgZ2V0VXNlckV2ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuVXNlckV2dCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfTk9USU5JVEVEO1xyXG5cclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzZWNvbmRzIG9mIHRoZSB1c2VyIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzT2ZVc2VyRXZlbnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdXNlciBldmVudCBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHVzZXIgZXZlbnQgb2JqZWN0IDwvcmV0dXJucz5cclxuICBnZXRVc2VyRXZlbnQoKTogRXZlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuVXNlckV2dDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQga2V5Ym9hcmQgaXRlbSAoIGZvciBzeXN0ZW0gZXZlbnQgKSBpbiBmb3JtIG9mIHN0cmluZ1xyXG4gIC8vLyAgIGZvciBzeXN0ZW0gZXZlbnRzIE9OTFlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRJdGVtU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBsZXQga2JpOiBLZXlib2FyZEl0ZW0gPSB0aGlzLmdldEtiZEl0bSgpO1xyXG4gICAgaWYgKGtiaSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICByZXR1cm4ga2JpLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0IHRoZSBzZWNvbmRzIHRvIHRoZSBwaWN0dXJlIFwiSEg6TU06U1NcIiBmb3IgU1RPUkFHRV9BVFRSX1RJTUVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZm9ybWF0ZWQgc3RyaW5nIG9mIHNlY29uZHNcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc2Vjb25kczJTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIGxldCB0aW1lOiBudW1iZXJbXSA9IG5ldyBBcnJheTxudW1iZXI+KDMpO1xyXG4gICAgbGV0IGJ1ZmZlcjogc3RyaW5nID0gXCJcIjtcclxuICAgIHRpbWVbMF0gPSBNYXRoLmZsb29yKHRoaXMuX3NlY29uZHMgLyAzNjAwKTtcclxuICAgIHRpbWVbMV0gPSBNYXRoLmZsb29yKCh0aGlzLl9zZWNvbmRzIC0gdGltZVswXSAqIDM2MDApIC8gNjApO1xyXG4gICAgdGltZVsyXSA9IHRoaXMuX3NlY29uZHMgJSA2MDtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aW1lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmICh0aW1lW2ldID09PSAwKVxyXG4gICAgICAgIGJ1ZmZlciArPSBcIjAwXCI7XHJcbiAgICAgIGVsc2UgaWYgKHRpbWVbaV0gPCAxMClcclxuICAgICAgICBidWZmZXIgKz0gKFwiMFwiICsgdGltZVtpXSk7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICBidWZmZXIgKz0gdGltZVtpXTtcclxuICAgICAgLy8gZG9uJ3QgaW5zZXJ0IGRlbGltaXRlciBhZnRlciB0aGUgbGFzdCBjYXNlXHJcbiAgICAgIGlmIChpIDwgdGltZS5sZW5ndGggLSAxKVxyXG4gICAgICAgIGJ1ZmZlciArPSBcIjpcIjtcclxuICAgIH1cclxuICAgIHJldHVybiBidWZmZXI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPi0gdGhlIGluZGV4IG9mIHRoZSBwYXJhbWV0ZXIgKCAwID0gZmlyc3QgcGFyYW0pIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgdmFsdWUgaW4gYSBzdHJpbmcgPC9yZXR1cm5zPlxyXG4gIGdldFBhcmFtVmFsKGlkeDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJhbVZhbHNbaWR4XTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZSB0aGUgcGFyYW1ldGVycyB2YWx1ZXMgZnJvbSB0aGUgdmFsdWUgc3RyaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbHVlU3RyXCI+aW5kZXggb2YgdGhlIHBhcmFtIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgcGFyYW1ldGVyIHZhbHVlIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHBhcnNlUGFyYW1WYWwodmFsdWVTdHI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICBsZXQgc3RhcnRPZnM6IG51bWJlciA9IDAsIGVuZE9mcyA9IDAsIG5MZW4sIGo7XHJcbiAgICBsZXQgc0xlbjogc3RyaW5nLCBzVmFsdWUgPSBudWxsO1xyXG5cclxuICAgIC8vIGZpbmQgdGhlIHZhbHVlIGxvY2F0aW9uXHJcbiAgICBmb3IgKGogPSAwOyBqIDwgdGhpcy5fcGFyYW1ldGVyczsgaisrKSB7XHJcbiAgICAgIHN3aXRjaCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkge1xyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5TS0lQOlxyXG4gICAgICAgICAgc1ZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0JfVkVDVE9SOlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5NRU1POlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFOlxyXG4gICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyA0O1xyXG4gICAgICAgICAgc0xlbiA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgIG5MZW4gPSBOTnVtYmVyLlBhcnNlKHNMZW4sIE51bWJlclN0eWxlcy5IZXhOdW1iZXIpO1xyXG4gICAgICAgICAgc3RhcnRPZnMgPSBlbmRPZnM7XHJcblxyXG4gICAgICAgICAgLy8gUUNSIDE2OTkgZGVjb2RlIHRoZSBwYXJhbWV0ZXIgZnJvbSBiYXNlNjQgaWYgbmVlZGVkXHJcbiAgICAgICAgICBpZiAoQWNjZXNzSGVscGVyLmVudmlyb25tZW50LkdldERlYnVnTGV2ZWwoKSA+IDEgfHwgKDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0pID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8ICg8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8ICg8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5NRU1PKSB7XHJcbiAgICAgICAgICAgIGlmICgobkxlbiAmIDB4ODAwMCkgPiAwKVxyXG4gICAgICAgICAgICAvLyBwYXJzZSBzcGFubmVkIHJlY29yZCBlbmNvZGVkIHRvIEhleFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuIG9mIHRoZSBwYXJhbWV0ZXIgZGF0YVxyXG4gICAgICAgICAgICAgIG5MZW4gPSAobkxlbiAmIDB4N0ZGRik7XHJcbiAgICAgICAgICAgICAgbkxlbiAqPSAyO1xyXG5cclxuICAgICAgICAgICAgICAvLyBwYXJzZSB0aGUgU3RyaW5nXHJcbiAgICAgICAgICAgICAgbGV0IHJlczogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICAgICAgICAgICAgZW5kT2ZzICs9IFJlY29yZFV0aWxzLmdldFNwYW5uZWRGaWVsZCh2YWx1ZVN0ciwgbkxlbiwgc3RhcnRPZnMsIDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0sIHJlcywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgdmFsdWVTdHIgPSByZXMuVG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBub24gc3Bhbm5lZCBwYXJhbXNcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyBuTGVuO1xyXG4gICAgICAgICAgICAgIHNWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICgobkxlbiAmIDB4ODAwMCkgPiAwKVxyXG4gICAgICAgICAgICAvLyBwYXJzZSBzcGFubmVkIHJlY29yZCBlbmNvZGVkIHRvIEhleFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGUgbGVuIG9mIHRoZSBwYXJhbWV0ZXIgZGF0YVxyXG4gICAgICAgICAgICAgIG5MZW4gPSAobkxlbiAmIDB4N0ZGRik7XHJcbiAgICAgICAgICAgICAgbkxlbiA9IE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuXHJcbiAgICAgICAgICAgICAgLy8gcGFyc2UgdGhlIFN0cmluZ1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgICAgICAgICAgIGVuZE9mcyArPSBSZWNvcmRVdGlscy5nZXRTcGFubmVkRmllbGQodmFsdWVTdHIsIG5MZW4sIHN0YXJ0T2ZzLCA8U3RvcmFnZUF0dHJpYnV0ZT50aGlzLl9wYXJhbUF0dHJzW2pdLCByZXMsIGZhbHNlKTtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSByZXMuVG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIE1hdGguZmxvb3IoKG5MZW4gKyAyKSAvIDMpICogNDtcclxuICAgICAgICAgICAgICBzVmFsdWUgPSBCYXNlNjQuZGVjb2RlKHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgICAvLyBRQ1IgMTY5OSBkZWNvZGUgdGhlIHBhcmFtZXRlciBmcm9tIGJhc2U2NCBpZiBuZWVkZWRcclxuICAgICAgICAgIGlmIChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0RGVidWdMZXZlbCgpID4gMSkge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIEFjY2Vzc0hlbHBlci5lbnZpcm9ubWVudC5HZXRTaWduaWZpY2FudE51bVNpemUoKSAqIDI7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IHZhbHVlU3RyLnN1YnN0cihzdGFydE9mcywgKGVuZE9mcykgLSAoc3RhcnRPZnMpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIChNYXRoLmZsb29yKChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0U2lnbmlmaWNhbnROdW1TaXplKCkgKyAyKSAvIDMpICogNCk7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IEJhc2U2NC5kZWNvZGVUb0hleCh2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyAxO1xyXG4gICAgICAgICAgc1ZhbHVlID0gdmFsdWVTdHIuc3Vic3RyKHN0YXJ0T2ZzLCAoZW5kT2ZzKSAtIChzdGFydE9mcykpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fcGFyYW1WYWxzW2pdID0gc1ZhbHVlO1xyXG4gICAgICBzdGFydE9mcyA9IGVuZE9mcztcclxuICAgIH1cclxuICAgIHJldHVybiBlbmRPZnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IEFyZ3VtZW50IFZhbHVlcyAsIHdpdGhvdXQgc2V0dGluZyBvZiB0aGUgcGFyYW1BdHRyc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0UGFyYW1WYWxzKHBhcmFtVmFsc186IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wYXJhbVZhbHMgPSBwYXJhbVZhbHNfO1xyXG4gICAgdGhpcy5fcGFyYW1BdHRycyA9IHRoaXMuX3BhcmFtTnVsbHMgPSBcIlwiO1xyXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuX3BhcmFtVmFscyAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gdGhpcy5fcGFyYW1WYWxzLmxlbmd0aDtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3BhcmFtZXRlcnM7IGkrKykge1xyXG4gICAgICAgIHRoaXMuX3BhcmFtQXR0cnMgKz0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTsgLy8gdGVtcG9yYXJ5IHR5cGUgb2YgdGhlIGRhdGFcclxuICAgICAgICB0aGlzLl9wYXJhbU51bGxzICs9IFwiMFwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVHJ5IHRvIGV2YWx1YXRlIHZhbHVlIHRvIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGZpZWxkIHR5cGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicGFyYW1OdW1cIj5udW1iZXIgb2YgdGhlIHBhcmFtZXRlciA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkXCI+LSBmaWVsZCB3aXRoIGl0J3MgdHlwZSwgdG8gZW5mb3JjZSBpdHMgdHlwZSB0byB0aGUgcGFyYW1ldGVyIHZhbHVlIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIC0gaWYgc2V0dGluZyBvZiB0aGUgdHlwZSBoYXMgb3ZlciB3aXRob3V0IHByb2JsZW1zIGFuZCBub3cgdGhlIHBhcmFtZXRlciBhbmQgdGhlIGZpZWxkcyBoYXZlIHRoZSBzYW1lIHR5cGUsXHJcbiAgLy8vICAgZmFsc2UgLSB0aGUgc2V0dGluZyBpbXBvc3NpYmxlLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgcHJvdGVjdGVkIHNldFBhcmFtVHlwZShwYXJhbU51bTogbnVtYmVyLCBmbGQ6IEZpZWxkKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY3VyclR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGU7XHJcbiAgICBsZXQgY3VyclZhbHVlOiBzdHJpbmc7XHJcbiAgICBsZXQgbmV3VHlwZTogU3RvcmFnZUF0dHJpYnV0ZSA9IGZsZC5nZXRUeXBlKCk7XHJcbiAgICBsZXQgcGljOiBQSUMgPSBudWxsO1xyXG4gICAgbGV0IHNhbWVUeXBlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHRoaXMuX3BhcmFtVmFscyAhPSBudWxsICYmIHRoaXMuZ2V0UGFyYW1OdW0oKSA+PSBwYXJhbU51bSkge1xyXG4gICAgICBjdXJyVHlwZSA9IDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbcGFyYW1OdW1dO1xyXG5cclxuICAgICAgc2FtZVR5cGUgPSAoY3VyclR5cGUgPT09IG5ld1R5cGUpO1xyXG4gICAgICBpZiAoIXNhbWVUeXBlKSB7XHJcbiAgICAgICAgLy8gdHJ5IHRvIHNldCB0aGUgbmV3IHR5cGUgdG8gdGhlIHBhcmFtZXRlclxyXG4gICAgICAgIGxldCBjaGFyQXJyOiBzdHJpbmdbXSA9IG51bGw7XHJcbiAgICAgICAgY3VyclZhbHVlID0gdGhpcy5fcGFyYW1WYWxzW3BhcmFtTnVtXTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChuZXdUeXBlKSB7XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEE6XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQjpcclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9CX1ZFQ1RPUjpcclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5NRU1POlxyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkRBVEU6XHJcbiAgICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuVElNRTpcclxuICAgICAgICAgICAgaWYgKGN1cnJUeXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBKSB7XHJcbiAgICAgICAgICAgICAgLy8gZnJvbSBhbHBoYSB0byBudW1lcmljXHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHBpYyA9IFBJQy5idWlsZFBpY3R1cmUobmV3VHlwZSwgY3VyclZhbHVlLCBmbGQuZ2V0VGFzaygpLmdldENvbXBJZHgoKSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbVZhbHNbcGFyYW1OdW1dID0gRGlzcGxheUNvbnZlcnRvci5JbnN0YW5jZS5kaXNwMm1nKGN1cnJWYWx1ZSwgIHBpYyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxkLmdldFRhc2soKS5nZXRDb21wSWR4KCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsb2JUeXBlLkNPTlRFTlRfVFlQRV9VTktOT1dOKTtcclxuICAgICAgICAgICAgICAgIHNhbWVUeXBlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgY2F0Y2ggKGV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbiBpbnN0YW5jZW9mIEV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAvLyBjYW5Ob3RFdmFsdWF0ZUFzTnVtZXJpY1xyXG4gICAgICAgICAgICAgICAgICBzYW1lVHlwZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coTlN0cmluZy5Gb3JtYXQoXCJFdmVudC5zZXRQYXJhbVR5cGUoKSBjYW5ub3QgdHJhbnNmZXIgezB9IHRvIE51bWVyaWMgd2l0aCBwaWN0dXJlIHsxfVwiLCBjdXJyVmFsdWUsIChwaWMgIT0gbnVsbCA/IHBpYy5nZXRGb3JtYXQoKSA6IFwibnVsbFwiKSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgICAgICBpZiAoY3VyclR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpIHtcclxuICAgICAgICAgICAgICAvLyBmcm9tIGFscGhhIHRvIGxvZ2ljYWxcclxuICAgICAgICAgICAgICBjdXJyVmFsdWUgPSBjdXJyVmFsdWUudHJpbSgpO1xyXG4gICAgICAgICAgICAgIGlmIChjdXJyVmFsdWUgPT09IFwiMVwiIHx8IGN1cnJWYWx1ZS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIilcclxuICAgICAgICAgICAgICAgIHRoaXMuX3BhcmFtVmFsc1twYXJhbU51bV0gPSBcIjFcIjtcclxuICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbVZhbHNbcGFyYW1OdW1dID0gXCIwXCI7XHJcbiAgICAgICAgICAgICAgc2FtZVR5cGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHNhbWVUeXBlKSB7XHJcbiAgICAgICAgICBjaGFyQXJyID0gTlN0cmluZy5Ub0NoYXJBcnJheSh0aGlzLl9wYXJhbUF0dHJzKTtcclxuICAgICAgICAgIGNoYXJBcnJbcGFyYW1OdW1dID0gPHN0cmluZz5uZXdUeXBlO1xyXG4gICAgICAgICAgdGhpcy5fcGFyYW1BdHRycyA9IE5TdHJpbmcuRnJvbUNoYXJzKGNoYXJBcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSAvLyBub3QgdGhlIHNhbWUgdHlwZVxyXG4gICAgfS8vIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyXHJcblxyXG4gICAgcmV0dXJuIHNhbWVUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEdldCB0aGUgbnVtYmVyIG9mIHBhcmFtc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBudW1iZXIgb2YgcGFyYW1zIDwvcmV0dXJucz5cclxuICBnZXRQYXJhbU51bSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSBudWxsIGZsYWcgb2YgdGhlIHBhcmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBwYXJhbSBpbmRleCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbnVsbCBmbGFnIDwvcmV0dXJucz5cclxuICBnZXRQYXJhbU51bGwoaWR4OiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgIGlmICgnMCcgPT09IHRoaXMuX3BhcmFtTnVsbHMuY2hhckF0KGlkeCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2VcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBwYXJhbSBpbmRleCA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gYXR0cmlidXRlIGNoYXIgPC9yZXR1cm5zPlxyXG4gIGdldFBhcmFtQXR0cihpZHg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fcGFyYW1BdHRycy5jaGFyQXQoaWR4KTtcclxuICB9XHJcblxyXG4gIGlzQ29udHJvbEhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgICh0aGlzLmdldEludGVybmFsQ29kZSgpID09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWCB8fFxyXG4gICAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYIHx8XHJcbiAgICAgICAgdGhpcy5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT04pO1xyXG4gIH1cclxuXHJcbiAgaXNWYXJpYWJsZUhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBBcHBlbmRzIHRoZSBldmVudCdzIGRlc2NyaXB0aW9uIHRvIHRoZSBnaXZlbiBTdHJpbmdCdWlsZGVyLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJidWZmZXJcIj5UaGUgYnVmZmVyIHRvIHdoaWNoIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgYmUgYXBwZW5kZWQuPC9wYXJhbT5cclxuICBwdWJsaWMgQXBwZW5kRGVzY3JpcHRpb24oYnVmZmVyOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoRXZlbnQuZ2V0SW50ZXJuYWxFdnREZXNjcmlwdGlvbih0aGlzLkludGVybmFsRXZlbnQpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLmdldEtleWJvYXJkSXRlbVN0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQodGhpcy5nZXRVc3JFdm50RGVzYygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkM6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKHRoaXMuc2Vjb25kczJTdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKCAnSUQgJyArIHRoaXMuRXhwLmdldElkKCkudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoXCJ1bmtub3duIGV2ZW50IHR5cGUgXCIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgd2hldGhlciB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSBpcyBiZXR3ZWVuIDEwMDEgJiAxMDA4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgaXNOZXdJbnRlcm5hbEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudCA+PSAxMDAxICYmIHRoaXMuSW50ZXJuYWxFdmVudCA8PSAxMDA4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGRlc2NyaXB0aW9uIGZvciBuZXcgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBnZXROZXdJbnRlcm5hbEV2ZW50RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcclxuICAgIGxldCBldmVudERlc2M6IHN0cmluZyA9IE5TdHJpbmcuRW1wdHk7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5JbnRlcm5hbEV2ZW50KSB7XHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19QUkVGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19QUkVGSVhfRk07XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19TVUZGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19TVUZGSVhfRk07XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYX0ZNO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVg6XHJcbiAgICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1NVRkZJWF9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1ZFUklGSUNBVElPTjpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1ZFUklGSUNBVElPTl9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRV9GTTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcblxyXG4gICAgcmV0dXJuIGV2ZW50RGVzYztcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybiB0aGUgZGVzY3JpcHRpb24gZm9yIG5ldyBpbnRlcm5hbCBldmVudHMgb3IgcmV0dXJuIHRoZSB0eXBlIGluIHN0cmluZyBmb3JtYXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBnZXRFdmVudFR5cGUoKSA6IHN0cmluZyB7XHJcbiAgICAvLyBGb3IgdGhlIG5ldyBpbnRlcm5hbCBldmVudHMsIHRoZXJlIGlzIG5vIHR5cGUgc28gaW5zdGVhZCBnZXQgdGhlIGRlc2NyaXB0aW9uXHJcbiAgICByZXR1cm4gdGhpcy5pc05ld0ludGVybmFsRXZlbnQoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gTlN0cmluZy5UcmltRW5kKHRoaXMuZ2V0TmV3SW50ZXJuYWxFdmVudERlc2NyaXB0aW9uKCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldEV2ZW50VHlwZVN0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm4gdGhlIHR5cGUgb2YgZXZlbnQgaW4gc3RyaW5nIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldEV2ZW50VHlwZVN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgbGV0IGV2ZW50VHlwZTogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgIGV2ZW50VHlwZSA9ICdJbnRlcm5hbCBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdTeXN0ZW0gRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT046XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ0V4cHJlc3Npb24gRXZlbnQ6JztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdUaW1lciBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUjpcclxuICAgICAgICBldmVudFR5cGUgPSAnVXNlciBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBldmVudFR5cGUgPSAnJztcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXZlbnRUeXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFVzZXJEZWZpbmVkRnVuY05hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lID0gbmFtZTtcclxuICAgIGxldCBmdW5jdGlvbk5hbWVVcHBlcjogc3RyaW5nID0gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlID0gSGFzaFV0aWxzLkdldEhhc2hDb2RlKGZ1bmN0aW9uTmFtZVVwcGVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRVc2VyRGVmaW5lZEZ1bmNOYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyBuYW1lJ3MgaGFzaCB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIHJldHVybiBleHByZXNzaW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRVc2VyRGVmaW5lZEZ1bmNSZXRFeHAoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXR1cm5FeHA7XHJcbiAgfVxyXG5cclxuICBnZXRPc0NvbW1hbmRUZXh0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kVGV4dDtcclxuICB9XHJcblxyXG4gIHNldE9zQ29tbWFuZFRleHQob3NDb21tYW5kVGV4dDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vc0NvbW1hbmRUZXh0ID0gb3NDb21tYW5kVGV4dDtcclxuICB9XHJcblxyXG4gIGdldE9zQ29tbWFuZFdhaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kV2FpdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3NDb21tYW5kV2FpdCh3YWl0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9vc0NvbW1hbmRXYWl0ID0gd2FpdDtcclxuICB9XHJcblxyXG4gIGdldE9zQ29tbWFuZFNob3coKTogQ2FsbE9zU2hvdyB7XHJcbiAgICByZXR1cm4gdGhpcy5fb3NDb21tYW5kU2hvdztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0T3NDb21tYW5kU2hvdyhvc1Nob3c6IENhbGxPc1Nob3cpOiB2b2lkIHtcclxuICAgIHRoaXMuX29zQ29tbWFuZFNob3cgPSBvc1Nob3c7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHNldFRpbWVzdGFtcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RpbWVzdGFtcCA9IEV2ZW50Ll9sYXN0VGltZXN0YW1wKys7XHJcbiAgfVxyXG5cclxuICBnZXRUaW1lc3RhbXAoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl90aW1lc3RhbXA7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KFwie3tFdmVudDogezB9fX1cIiwgdGhpcy5nZXRCcmtMZXZlbCgpKTtcclxuICB9XHJcbn1cclxuIl19
1332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsSUFBSSxFQUNKLFNBQVMsRUFDVCxLQUFLLEVBRUwsT0FBTyxFQUNQLE9BQU8sRUFDUCxZQUFZLEVBQ1osUUFBUSxFQUNSLGFBQWEsRUFDZCxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ04sSUFBSSxFQUNKLGdCQUFnQixFQUNoQixPQUFPLEVBQ1AsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxXQUFXLEVBRVgsK0JBQStCLEVBQ2hDLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUsvQyxNQUFNLE9BQU8sS0FBSztJQThCaEI7UUF6QkEsUUFBRyxHQUFlLElBQUksQ0FBQztRQUN2QixlQUFVLEdBQWMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUN2QyxXQUFNLEdBQWlCLElBQUksQ0FBQztRQUU1QixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixnQkFBVyxHQUFXLElBQUksQ0FBQztRQUMzQixlQUFVLEdBQWEsSUFBSSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFFL0IsYUFBUSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFD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LENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksaUJBQWlCLEdBQVcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hFLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELHNCQUFzQjtRQUNwQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBSUQsOEJBQThCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLDRCQUE0QixDQUFDO0lBQzNDLENBQUM7SUFLRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFPRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQzs7QUF6MERjLG9CQUFjLEdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBcHBsaWNhdGlvbkV4Y2VwdGlvbixcclxuICBDaGFyLFxyXG4gIEhhc2hVdGlscyxcclxuICBJbnQzMixcclxuICBMaXN0LFxyXG4gIE5OdW1iZXIsXHJcbiAgTlN0cmluZyxcclxuICBOdW1iZXJTdHlsZXMsXHJcbiAgUmVmUGFyYW0sXHJcbiAgU3RyaW5nQnVpbGRlclxyXG59IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtcclxuICBCYXNlNjQsXHJcbiAgRm9yY2VFeGl0LFxyXG4gIEludGVybmFsSW50ZXJmYWNlLFxyXG4gIExvZ2dlcixcclxuICBNaXNjLFxyXG4gIFN0b3JhZ2VBdHRyaWJ1dGUsXHJcbiAgU3RyVXRpbCxcclxuICBYTUxDb25zdGFudHMsXHJcbiAgWG1sUGFyc2VyXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7XHJcbiAgRGlzcGxheUNvbnZlcnRvcixcclxuICBLZXlib2FyZEl0ZW0sXHJcbiAgTW9kaWZpZXJzLFxyXG4gIFJlY29yZFV0aWxzLFxyXG4gIFRhc2tEZWZpbml0aW9uSWQsXHJcbiAgVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlclxyXG59IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cC9FeHByZXNzaW9uJztcclxuaW1wb3J0IHsgQ29uc3RJbnRlcmZhY2UgfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRhc2tCYXNlIH0gZnJvbSAnLi4vdGFza3MvVGFza0Jhc2UnO1xyXG5pbXBvcnQgeyBMYXN0Rm9jdXNlZE1hbmFnZXIgfSBmcm9tICcuLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tICcuLi9BY2Nlc3NIZWxwZXInO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICB0aGlzIGNsYXNzIHJlcHJlc2VudCB0aGUgZXZlbnQgZW50aXR5XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBFdmVudCB7XHJcbiAgLy8gQVRURU5USU9OICFcclxuICAvLyBhbnkgY2hhbmdlIHRvIHRoZSBtZW1iZXIgdmFyaWFibGVzIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjaGFuZ2UgdG8gdGhlIENUT1IgdGhhdFxyXG4gIC8vIGdldHMgb25lIGFyZ3VtZW50IG9mIHRoZSB0eXBlICdFdmVudCcuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2xhc3RUaW1lc3RhbXA6IG51bWJlciA9IDA7IC8vIGxhc3QgdGltZXN0YW1wXHJcbiAgRXhwOiBFeHByZXNzaW9uID0gbnVsbDsgLy8gZm9yIGV4cHJlc3Npb24gZXZlbnRzIC0gdGhlIGV4cHJlc3Npb24gbnVtYmVyXHJcbiAgX2ZvcmNlRXhpdDogRm9yY2VFeGl0ID0gRm9yY2VFeGl0Lk5vbmU7IC8vIFRoZSDigJxmb3JjZSBleGl0P2lzIG9uZSBvZjogUmVjb3JkLCBDb250cm9sLCBOb25lLiBUaGlzIGF0dHJpYnV0ZSBpcyByZWxldmFudCBvbmx5IGZvciBldmVudHMgaW4gdGhlIOKAnHVzZXIgZXZlbnRzP3RhYmxlLlxyXG4gIGtiZEl0bTogS2V5Ym9hcmRJdGVtID0gbnVsbDsgLy8gZm9yIHN5c3RlbSBldmVudHNcclxuXHJcbiAgX3BhcmFtQXR0cnM6IHN0cmluZyA9IG51bGw7XHJcbiAgX3BhcmFtTnVsbHM6IHN0cmluZyA9IG51bGw7XHJcbiAgX3BhcmFtVmFsczogc3RyaW5nW10gPSBudWxsO1xyXG4gIF9wYXJhbWV0ZXJzOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3JldHVybkV4cDogbnVtYmVyID0gMDtcclxuICAvKiBleHByZXNzaW9uIG51bWJlciB0byBzcGVjaWZ5IHRoZSBGdW5jdGlvbidzIHJldHVybiB2YWx1ZSAqL1xyXG4gIF9zZWNvbmRzOiBudW1iZXIgPSBJbnQzMi5NaW5WYWx1ZTsgLy8gZm9yIHRpbWVyIGV2ZW50c1xyXG4gIF90aW1lc3RhbXA6IG51bWJlciA9IDA7XHJcbiAgX3R5cGU6IHN0cmluZyA9IENoYXIuTWluVmFsdWU7IC8vIFN5c3RlbXxJbnRlcm5hbHxUaW1lcnxFeHByZXNzaW9ufFVzZXJ8Tm9uZVxyXG4gIHByaXZhdGUgX3VzZXJEZWZpbmVkRnVuY05hbWU6IHN0cmluZyA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfdXNlckRlZmluZWRGdW5jTmFtZUhhc2hDb2RlOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX3VzZXJFdnREZXNjOiBzdHJpbmcgPSAnJztcclxuICBfdXNlckV2dElkeDogbnVtYmVyID0gSW50MzIuTWluVmFsdWU7IC8vIHRoZSBpbmRleCBvZiB0aGUgdXNlciBldmVudCBpbiB0aGUgdGFza3MgdXNlciBldmVudHMgdGFibGVcclxuXHJcbiAgcHJpdmF0ZSBvd25lclRhc2tEZWZpbml0aW9uSWQ6IFRhc2tEZWZpbml0aW9uSWQgPSBudWxsO1xyXG4gIEludGVybmFsRXZlbnQ6IG51bWJlciA9IDA7IC8vIGludGVybmFsIGV2ZW50IGNvZGVcclxuICBQdWJsaWNOYW1lOiBzdHJpbmcgPSBudWxsO1xyXG4gIFVzZXJFdnQ6IEV2ZW50ID0gbnVsbDtcclxuICBVc2VyRXZ0VGFza1RhZzogc3RyaW5nID0gbnVsbDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl8wKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5JbnRlcm5hbEV2ZW50ID0gSW50MzIuTWluVmFsdWU7XHJcbiAgICB0aGlzLnNldFRpbWVzdGFtcCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvcHkgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yXzEoZXZ0OiBFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IGV2dC5fdHlwZTtcclxuICAgIHRoaXMua2JkSXRtID0gZXZ0LmtiZEl0bTtcclxuICAgIHRoaXMuSW50ZXJuYWxFdmVudCA9IGV2dC5JbnRlcm5hbEV2ZW50O1xyXG4gICAgdGhpcy5fc2Vjb25kcyA9IGV2dC5fc2Vjb25kcztcclxuICAgIHRoaXMuRXhwID0gZXZ0LkV4cDtcclxuICAgIHRoaXMuX2ZvcmNlRXhpdCA9IGV2dC5fZm9yY2VFeGl0O1xyXG4gICAgdGhpcy5Vc2VyRXZ0ID0gZXZ0LlVzZXJFdnQ7XHJcbiAgICB0aGlzLlVzZXJFdnRUYXNrVGFnID0gZXZ0LlVzZXJFdnRUYXNrVGFnO1xyXG4gICAgdGhpcy5fdXNlckV2dElkeCA9IGV2dC5fdXNlckV2dElkeDtcclxuICAgIHRoaXMuX3RpbWVzdGFtcCA9IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IEZvcmNlRXhpdCgpOiBGb3JjZUV4aXQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlRXhpdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBOZWVkIHBhcnQgaW5wdXQgU3RyaW5nIHRvIHJlbGV2YW50IGZvciB0aGUgY2xhc3MgZGF0YS5cclxuICAvLy8gICBpbmRleCBvZiBlbmQgPGV2ZW50IC4uLj4gdGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInhtbFBhcnNlclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrUmVmXCI+PC9wYXJhbT5cclxuICBmaWxsRGF0YSh4bWxQYXJzZXI6IFhtbFBhcnNlciwgdGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIGxldCB1c2VyVmFsdWU6IHN0cmluZztcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgeG1sUGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHhtbFBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19FVkVOVCkgKyBDb25zdEludGVyZmFjZS5NR19UQUdfRVZFTlQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMoeG1sUGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGxldCByZWZVc2VyVmFsdWU6IFJlZlBhcmFtPHN0cmluZz4gPSBuZXcgUmVmUGFyYW0odXNlclZhbHVlKTtcclxuXHJcbiAgICAgIHRoaXMuaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvciwgdGFza1JlZiwgcmVmVXNlclZhbHVlKTtcclxuICAgICAgdXNlclZhbHVlID0gcmVmVXNlclZhbHVlLnZhbHVlO1xyXG5cclxuICAgICAgeG1sUGFyc2VyLnNldEN1cnJJbmRleChlbmRDb250ZXh0ICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCI+XCIgdG9vXHJcblxyXG4gICAgICB0aGlzLkluaXRJbm5lck9iamVjdHMoeG1sUGFyc2VyKTtcclxuXHJcbiAgICAgIGlmICh1c2VyVmFsdWUgIT09IG51bGwpXHJcbiAgICAgICAgdGhpcy5Jbml0VXNlckRhdGEodGFza1JlZiwgdXNlclZhbHVlKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coJ2luIEV2ZW50LkZpbGxEYXRhKCkgb3V0IG9mIHN0cmluZyBib3VuZHMnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgSW5pdElubmVyT2JqZWN0cyh4bWxQYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IG5leHRUYWc6IHN0cmluZyA9IHhtbFBhcnNlci5nZXROZXh0VGFnKCk7XHJcbiAgICBzd2l0Y2ggKG5leHRUYWcpIHtcclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfVEFHX1RBU0tERUZJTklUSU9OSURfRU5UUlk6XHJcbiAgICAgICAgbGV0IHhtbEJ1ZmZlcjogc3RyaW5nID0geG1sUGFyc2VyLlJlYWRUb0VuZE9mQ3VycmVudEVsZW1lbnQoKTtcclxuICAgICAgICB0aGlzLkluaXRUYXNrRGVmaW5pdGlvbklkKHhtbEJ1ZmZlcik7XHJcblxyXG4gICAgICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSB4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgeG1sUGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgICAgICB4bWxQYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyAoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRSkubGVuZ3RoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBNYWtlIGluaXRpYWxpemF0aW9uIG9mIHByaXZhdGUgZWxlbWVudHMgYnkgZm91bmQgdG9rZW5zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmZvdW5kIHRva2Vucywgd2hpY2ggY29uc2lzdCBhdHRyaWJ1dGUvdmFsdWUgb2YgZXZlcnkgZm91bmRlbGVtZW50PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+LCB0YXNrUmVmOiBUYXNrQmFzZSwgcmVmVXNlclZhbHVlOiBSZWZQYXJhbTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICBsZXQgbW9kaWZpZXI6IE1vZGlmaWVycyA9IE1vZGlmaWVycy5NT0RJRklFUl9OT05FO1xyXG4gICAgbGV0IGtleUNvZGU6IG51bWJlciA9IC0xO1xyXG4gICAgcmVmVXNlclZhbHVlLnZhbHVlID0gbnVsbDtcclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRVZFTlRUWVBFOlxyXG4gICAgICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlU3RyWzBdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gU3lzdGVtfEludGVybmFsfFVzZXJ8VGltZXJ8RXhwcmVzc2lvbnxSZWNvbXB1dGVcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfTU9ESUZJRVI6XHJcbiAgICAgICAgICBtb2RpZmllciA9IDxNb2RpZmllcnM+dmFsdWVTdHJbMF07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICAvLyBBbHR8Q3RybHxTaGlmdHxOb25lXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0lOVEVSTkFMRVZFTlQ6XHJcbiAgICAgICAgICB0aGlzLkludGVybmFsRXZlbnQgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVlDT0RFOlxyXG4gICAgICAgICAga2V5Q29kZSA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NFQ09ORFM6XHJcbiAgICAgICAgICB0aGlzLl9zZWNvbmRzID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0VYUDpcclxuICAgICAgICAgIC8vIGZvciBleHByZXNzaW9uIGV2ZW50cyAtIHRoZSBleHByZXNzaW9uIG51bWJlclxyXG4gICAgICAgICAgdGhpcy5FeHAgPSB0YXNrUmVmLmdldEV4cEJ5SWQoWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0ZPUkNFX0VYSVQ6XHJcbiAgICAgICAgICB0aGlzLl9mb3JjZUV4aXQgPSA8Rm9yY2VFeGl0PnZhbHVlU3RyWzBdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0RFU0M6XHJcbiAgICAgICAgICB0aGlzLl91c2VyRXZ0RGVzYyA9IFhtbFBhcnNlci51bmVzY2FwZSh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUFVCTElDOlxyXG4gICAgICAgICAgdGhpcy5QdWJsaWNOYW1lID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9QQVJBTVM6XHJcbiAgICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cik7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfUEFSX0FUVFJTOlxyXG4gICAgICAgICAgdGhpcy5fcGFyYW1BdHRycyA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9WQUxVRTpcclxuICAgICAgICAgIGxldCBwYXJhbVN0cjogc3RyaW5nID0gWG1sUGFyc2VyLnVuZXNjYXBlKHZhbHVlU3RyKTtcclxuICAgICAgICAgIHRoaXMuX3BhcmFtVmFscyA9IG5ldyBBcnJheSh0aGlzLl9wYXJhbWV0ZXJzKTtcclxuICAgICAgICAgIC8vIHB1dCB0aGUgcGFyYW1WYWxzIGluIHBsYWNlXHJcbiAgICAgICAgICB0aGlzLnBhcnNlUGFyYW1WYWwocGFyYW1TdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX05VTExTOlxyXG4gICAgICAgICAgdGhpcy5fcGFyYW1OdWxscyA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1VTRVI6XHJcbiAgICAgICAgICByZWZVc2VyVmFsdWUudmFsdWUgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIC8vIFVTRVIgZXZlbnRcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX05BTUU6XHJcbiAgICAgICAgICB0aGlzLnNldFVzZXJEZWZpbmVkRnVuY05hbWUodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfVVNSX0RFRl9GVUNfUkVUX0VYUF9JRDpcclxuICAgICAgICAgIHRoaXMuX3JldHVybkV4cCA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfVVNSX0RFRl9GVUNfUkVUX0VYUF9BVFRSOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhOU3RyaW5nLkZvcm1hdCgnVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gRXZlbnQgY2xhc3MuIEluc2VydCBjYXNlIHRvIEV2ZW50LmluaXRFbGVtZW50cyBmb3IgezB9JywgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNKVxyXG4gICAgICB0aGlzLmtiZEl0bSA9IG5ldyBLZXlib2FyZEl0ZW0oa2V5Q29kZSwgbW9kaWZpZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIGZyb20gdGhlIFwidXNlclwiIGF0dHJpYnV0ZSBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlU3RyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YXNrUmVmXCI+PC9wYXJhbT5cclxuICBwcml2YXRlIEluaXRVc2VyRGF0YSh0YXNrUmVmOiBUYXNrQmFzZSwgdXNlclZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBjb21tYTogbnVtYmVyID0gdXNlclZhbHVlLmluZGV4T2YoJywnKTtcclxuICAgIGlmIChjb21tYSA+IC0xKSB7XHJcbiAgICAgIGxldCB1ZVRhc2tJZDogc3RyaW5nID0gdXNlclZhbHVlLnN1YnN0cigwLCBjb21tYSk7XHJcbiAgICAgIGlmICh0YXNrUmVmICE9PSBudWxsKVxyXG4gICAgICAgIHVlVGFza0lkID0gdGFza1JlZi5UYXNrU2VydmljZS5HZXRFdmVudFRhc2tJZCh1ZVRhc2tJZCk7XHJcblxyXG4gICAgICBsZXQgdWVUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodWVUYXNrSWQpO1xyXG5cclxuICAgICAgbGV0IHVlSWR4OiBudW1iZXIgPSBYbWxQYXJzZXIuZ2V0SW50KHVzZXJWYWx1ZS5zdWJzdHIoY29tbWEgKyAxKSk7XHJcblxyXG4gICAgICBpZiAodWVUYXNrICE9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5Vc2VyRXZ0ID0gdWVUYXNrLmdldFVzZXJFdmVudCh1ZUlkeCk7XHJcbiAgICAgICAgaWYgKHRoaXMuVXNlckV2dCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKCdpbiBFdmVudC5maWxsRGF0YSgpOiB1c2VyIGV2ZW50IG5vdCBmb3VuZC4gdGFzayBpZCA9ICcgKyB1ZVRhc2tJZCArXHJcbiAgICAgICAgICAgICcsIHVzZXIgZXZlbnQgaW5kZXggPSAnICsgdWVJZHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLlVzZXJFdnRUYXNrVGFnID0gdWVUYXNrSWQ7XHJcbiAgICAgICAgdGhpcy5fdXNlckV2dElkeCA9IHVlSWR4O1xyXG4gICAgICB9XHJcbiAgICAgIC8vIHRoZSB0YXNrIGhhc24ndCBiZWVuIGZvdW5kLCBpdCBub3QgcGFyc2VkLCB5ZXRcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5Vc2VyRXZ0VGFza1RhZyA9IHVlVGFza0lkO1xyXG4gICAgICAgIHRoaXMuX3VzZXJFdnRJZHggPSB1ZUlkeDtcclxuICAgICAgICB0aGlzLlVzZXJFdnQgPSBudWxsOyAvLyBjYW4gbm90IGJlIGluaXRpYWxpemVkIG9uIHRoaXMgc3RlcFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEluaXRUYXNrRGVmaW5pdGlvbklkKHhtbEJ1ZmZlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgaGFuZGxlcjogVGFza0RlZmluaXRpb25JZFRhYmxlU2F4SGFuZGxlciA9IG5ldyBUYXNrRGVmaW5pdGlvbklkVGFibGVTYXhIYW5kbGVyKHRoaXMuU2V0VGFza0RlZmluaXRpb25JZCk7XHJcbiAgICBoYW5kbGVyLnBhcnNlKHhtbEJ1ZmZlcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNhbGxiYWNrIGZvciB0aGUgc2F4IHBhcnNlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFza0RlZmluaXRpb25JZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwieG1sSWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlZmF1bHRUYWdMaXN0XCI+PC9wYXJhbT5cclxuICBwcml2YXRlIFNldFRhc2tEZWZpbml0aW9uSWQodGFza0RlZmluaXRpb25JZDogVGFza0RlZmluaXRpb25JZCk6IHZvaWQge1xyXG4gICAgdGhpcy5vd25lclRhc2tEZWZpbml0aW9uSWQgPSB0YXNrRGVmaW5pdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZpbmQgdGFzayBmb3IgVXNlciBFdmVudCBpZiBpdCB3YXMgbm90IGZvdW5kIGR1cmluZyBwYXJzaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBmaW5kVXNlckV2ZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUiAmJiB0aGlzLlVzZXJFdnQgPT09IG51bGwpIHtcclxuICAgICAgbGV0IHVlVGFzazogVGFza0Jhc2UgPSA8VGFza0Jhc2U+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHRoaXMuVXNlckV2dFRhc2tUYWcpO1xyXG4gICAgICBpZiAodWVUYXNrICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuVXNlckV2dCA9IHVlVGFzay5nZXRVc2VyRXZlbnQodGhpcy5fdXNlckV2dElkeCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5Vc2VyRXZ0ID09PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihOU3RyaW5nLkZvcm1hdCgnaW4gRXZlbnQuZmluZFVzZXJFdmVudCgpOiB1c2VyIGV2ZW50IG5vdCBmb3VuZC4gdGFzayBpZCA9IHswfSBkb2VzblxcJ3QgZXhpc3QnLCB0aGlzLlVzZXJFdnRUYXNrVGFnKSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbXBhcmUgdGhpcyBldmVudCB0byBhbm90aGVyIC0gcmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBldmVudHMgYXJlIGlkZW50aWNhbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXF1YWxzKGV2dDogRXZlbnQpOiBib29sZWFuIHtcclxuICAgIGxldCBiRXF1YWw6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvLyBjb21wYXJlIHJlZmVyZW5jZXNcclxuICAgIGlmICh0aGlzID09PSBldnQpXHJcbiAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICAvLyBkbyBzaGFsbG93IGNvbXBhcmlzaW9uXHJcbiAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSBldnQuX3R5cGUpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTTpcclxuICAgICAgICAgIGJFcXVhbCA9IHRoaXMua2JkSXRtLmVxdWFscyhldnQua2JkSXRtKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgICAgICBiRXF1YWwgPSAodGhpcy5JbnRlcm5hbEV2ZW50ID09PSBldnQuSW50ZXJuYWxFdmVudCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSOlxyXG4gICAgICAgICAgYkVxdWFsID0gKHRoaXMuX3NlY29uZHMgPT09IGV2dC5fc2Vjb25kcyk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT046XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1BVQkxJQzpcclxuICAgICAgICAgIGJFcXVhbCA9ICh0aGlzLkV4cCA9PT0gZXZ0LkV4cCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVI6XHJcbiAgICAgICAgICBiRXF1YWwgPSAodGhpcy5Vc2VyRXZ0ID09PSBldnQuVXNlckV2dCk7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVJfRlVOQzpcclxuICAgICAgICAgIGlmICh0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lSGFzaENvZGUgPT09IGV2dC5nZXRVc2VyRGVmaW5lZEZ1bmNOYW1lSGFzaENvZGUoKSkge1xyXG4gICAgICAgICAgICBpZiAoTlN0cmluZy5FcXVhbHMoZXZ0LmdldFVzZXJEZWZpbmVkRnVuY05hbWUoKSwgdGhpcy5fdXNlckRlZmluZWRGdW5jTmFtZSwgdHJ1ZSkpXHJcbiAgICAgICAgICAgICAgYkVxdWFsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYkVxdWFsID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEZvciBpbnRlcm5hbCBldmVudHMsIGNvbXBhcmUgdGhlIGludGVybmFsIG5hbWVzXHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUMgfHwgZXZ0Ll90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1BVQkxJQykge1xyXG4gICAgICBsZXQgbmFtZTE6IFN0cmluZyA9IG51bGw7XHJcbiAgICAgIGxldCBuYW1lMjogU3RyaW5nID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUiAmJiBldnQuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUilcclxuICAgICAgICBiRXF1YWwgPSBmYWxzZTtcclxuICAgICAgZWxzZSBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9QVUJMSUMpIHtcclxuICAgICAgICBuYW1lMSA9IHRoaXMuUHVibGljTmFtZTtcclxuICAgICAgICBuYW1lMiA9IGV2dC5nZXRVc2VyRXZlbnQoKS5QdWJsaWNOYW1lO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5hbWUxID0gZXZ0LlB1YmxpY05hbWU7XHJcbiAgICAgICAgbmFtZTIgPSB0aGlzLmdldFVzZXJFdmVudCgpLlB1YmxpY05hbWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG5hbWUxID09PSBudWxsIHx8IG5hbWUyID09PSBudWxsKVxyXG4gICAgICAgIGJFcXVhbCA9IGZhbHNlO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYkVxdWFsID0gKG5hbWUxID09PSBuYW1lMik7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwgJiYgZXZ0Ll90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSkge1xyXG4gICAgICBpZiAoTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmdldEN1cnJUYXNrKCkgIT09IG51bGwgJiYgKEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLmdldE1hdGNoaW5nQWN0aW9uKGV2dC5nZXRLYmRJdG0oKSkpID09PSB0aGlzLmdldEludGVybmFsQ29kZSgpKVxyXG4gICAgICAgIGJFcXVhbCA9IHRydWU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUiAmJiBldnQuX3R5cGUgIT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVVNFUikge1xyXG4gICAgICAvLyBiZWZvcmUgdXNpbmcgdGhlIHVzZXIgZXZlbnQsIGNoZWNrIHRoYXQgaXQgaXMgdmFsaWRcclxuICAgICAgdGhpcy5maW5kVXNlckV2ZW50KCk7XHJcblxyXG4gICAgICAvLyBpZiBvbmUgZXZlbnQgb2YgdGhlIHR3byBpcyBhIHVzZXIgZXZlbnQgYW5kIHRoZSBvdGhlciBpc24ndCB0aGVuXHJcbiAgICAgIC8vIGNvbXBhcmUgdGhlIHRyaWdnZXIgb2YgdGhlIHVzZXIgZXZlbnQgdG8gdGhlIG5vbi11c2VyIGV2ZW50XHJcbiAgICAgIGJFcXVhbCA9IHRoaXMuVXNlckV2dC5lcXVhbHMoZXZ0KTtcclxuICAgIH1cclxuICAgIHJldHVybiBiRXF1YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSBpbnRlcm5hbCBuYW1lXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBzZXRQdWJsaWNOYW1lKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gRm9yIGEgcnVudGltZSBpbnRlcm5hbCBldmVudCAtIGNhbGN1bGF0ZSB0aGUgaW50ZXJuYWwgbmFtZS5cclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1BVQkxJQyAmJiB0aGlzLkV4cCAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLlB1YmxpY05hbWUgPSAoYXdhaXQgdGhpcy5FeHAuZXZhbHVhdGVXaXRoUmVzTGVuZ3RoKDI1NSkpLm1nVmFsO1xyXG4gICAgICBpZiAodGhpcy5QdWJsaWNOYW1lICE9PSBudWxsKVxyXG4gICAgICAgIHRoaXMuUHVibGljTmFtZSA9IFN0clV0aWwucnRyaW0odGhpcy5QdWJsaWNOYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYW4gSW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29kZVwiPnRoZSBjb2RlIG9mIHRoZSBpbnRlcm5hbCBldmVudCA8L3BhcmFtPlxyXG4gIHNldEludGVybmFsKGNvZGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fdHlwZSA9IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw7XHJcbiAgICB0aGlzLkludGVybmFsRXZlbnQgPSBjb2RlO1xyXG5cclxuICAgIC8vIE1HX0FDVF9ISVQvTUdfQUNUX0NUUkxfSElUIGFyZSBjYXVzZWQgYnkgbW91c2UgY2xpY2suIEluIHRoaXMgY2FzZVxyXG4gICAgLy8gdGltZSBvZiBsYXN0IHVzZXIgYWN0aW9uIGZvciBJRExFIGZ1bmN0aW9uIHNob3VsZCBiZSByZS1ldmFsdWF0ZWQuXHJcbiAgICBpZiAoY29kZSA9PT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hJVCB8fCBjb2RlID09PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQpXHJcbiAgICAgIExhc3RGb2N1c2VkTWFuYWdlci5JbnN0YW5jZS5MYXN0QWN0aW9uVGltZSA9IE1pc2MuZ2V0U3lzdGVtTWlsbGlzZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGFuIEV4cHJlc3Npb24gZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZXhwUmVmXCI+YSByZWZlcmVuY2UgdG8gdGhlIGV4cHJlc3Npb24gb2JqZWN0IDwvcGFyYW0+XHJcbiAgc2V0RXhwcmVzc2lvbihleHBSZWY6IEV4cHJlc3Npb24pOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT047XHJcbiAgICB0aGlzLkV4cCA9IGV4cFJlZjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgRXhwcmVzc2lvbiBvZiB0aGUgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEV4cHJlc3Npb24oKTogRXhwcmVzc2lvbiB7XHJcbiAgICByZXR1cm4gdGhpcy5FeHA7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IFVzZXJFdmVudCBkZXNjcmlwdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRVc3JFdm50RGVzYygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICh0aGlzLlVzZXJFdnQgIT09IG51bGwpID8gdGhpcy5Vc2VyRXZ0Ll91c2VyRXZ0RGVzYyA6IHRoaXMuX3VzZXJFdnREZXNjO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIFN5c3RlbSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJrZXlib2FyZEl0ZW1cIj50aGUga2V5Ym9hcmQgaXRlbSBvYmplY3QgPC9wYXJhbT5cclxuICBzZXRTeXN0ZW0oa2V5Ym9hcmRJdGVtOiBLZXlib2FyZEl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTTtcclxuICAgIHRoaXMua2JkSXRtID0ga2V5Ym9hcmRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIFN5c3RlbSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJrZXlib2FyZEl0ZW1cIj50aGUga2V5Ym9hcmQgaXRlbSBvYmplY3QgPC9wYXJhbT5cclxuICBzZXRLZXlib2FyZEl0ZW0oa2V5Ym9hcmRJdGVtOiBLZXlib2FyZEl0ZW0pOiB2b2lkIHtcclxuICAgIHRoaXMua2JkSXRtID0ga2V5Ym9hcmRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0eXBlIHJldHVybnMgU3lzdGVtfEludGVybmFsfFVzZXJ8VGltZXJ8RXhwcmVzc2lvbnxSZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFR5cGUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90eXBlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0eXBlIHJlY2VpdmVzIFN5c3RlbXxJbnRlcm5hbHxVc2VyfFRpbWVyfEV4cHJlc3Npb258UmVjb21wdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRUeXBlKGFUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBhVHlwZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgaW50ZXJuYWwgZXZlbnQgY29kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBpbnQgaXMgdGhlIGludGVybmFsIGV2ZW50IGNvZGUgPC9yZXR1cm5zPlxyXG4gIGdldEludGVybmFsQ29kZSgpOiBudW1iZXIge1xyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUwpXHJcbiAgICAgIHJldHVybiB0aGlzLkludGVybmFsRXZlbnQ7XHJcbiAgICByZXR1cm4gSW50MzIuTWluVmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBrZXlib2FyZCBpdGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRLYmRJdG0oKTogS2V5Ym9hcmRJdGVtIHtcclxuICAgIGlmICh0aGlzLl90eXBlID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1NZU1RFTSlcclxuICAgICAgcmV0dXJuIHRoaXMua2JkSXRtO1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBrZXlib2FyZCBpdGVtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRLYmRJdG1BbHdheXMoKTogS2V5Ym9hcmRJdGVtIHtcclxuICAgIHJldHVybiB0aGlzLmtiZEl0bTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgZm9yIG5vbiBkYXRhIGV2ZW50cyBvciBkYXRhIGV2ZW50cyB3aGljaCB0aGVpciBleHByZXNzaW9uXHJcbiAgLy8vICAgZXZhbHVhdGVzIHRvIHRydWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIGRhdGFFdmVudElzVHJ1ZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9FWFBSRVNTSU9OICYmXHJcbiAgICAgICEodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSICYmIHRoaXMuZ2V0VXNlckV2ZW50VHlwZSgpID09PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT04pKVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVIpXHJcbiAgICAgIHJldHVybiBEaXNwbGF5Q29udmVydG9yLnRvQm9vbGVhbihhd2FpdCB0aGlzLkV4cC5ldmFsdWF0ZVdpdGhSZXN1bHRUeXBlQW5kTGVuZ3RoKFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiwgMCkpO1xyXG4gICAgcmV0dXJuIERpc3BsYXlDb252ZXJ0b3IudG9Cb29sZWFuKGF3YWl0IHRoaXMuVXNlckV2dC5nZXRFeHByZXNzaW9uKCkuZXZhbHVhdGVXaXRoUmVzdWx0VHlwZUFuZExlbmd0aChTdG9yYWdlQXR0cmlidXRlLkJPT0xFQU4sIDApKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IG51bWJlciBvZiBzZWNvbmRzIChmb3IgdGltZXIgZXZlbnRzKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2Vjb25kcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlY29uZHM7XHJcbiAgfVxyXG5cclxuICBnZXRCcmtMZXZlbCgpOiBzdHJpbmc7XHJcbiAgZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3I6IGJvb2xlYW4pOiBzdHJpbmc7XHJcbiAgZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3I/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEJya0xldmVsXzAoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEJya0xldmVsXzEoZmxvd01vbml0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYnJlYWsgbGV2ZWwgb2YgRXZlbnQgbm90IGZvciBGbG93IE1vbml0b3JpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0QnJrTGV2ZWxfMCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QnJrTGV2ZWwoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgYnJlYWsgbGV2ZWwgb2YgRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxvd01vbml0b3JcIj5pcyBpdCBuZWVkZWQgZm9yIEZsb3cgTW9uaXRvcmluZyB1c2FnZSA8L3BhcmFtPlxyXG4gIHByaXZhdGUgZ2V0QnJrTGV2ZWxfMShmbG93TW9uaXRvcjogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgbGV2ZWw6IHN0cmluZyA9ICcnO1xyXG4gICAgc3dpdGNoICh0aGlzLl90eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTDpcclxuICAgICAgICBzd2l0Y2ggKHRoaXMuSW50ZXJuYWxFdmVudCkge1xyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFTS19QUkVGSVg6XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19QUkVGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19QUkVGSVg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfU1VGRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfU1VGRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1RBU0tfU1VGRklYO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19QUkVGSVhfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1BSRUZJWDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfU1VGRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1JFQ19TVUZGSVg7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfUFJFRklYOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfUFJFRklYX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0NUUkxfUFJFRklYICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1NVRkZJWDpcclxuICAgICAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1NVRkZJWF9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1NVRkZJWCArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT046XHJcbiAgICAgICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9WRVJJRklDQVRJT05fRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfQ1RSTF9WRVJJRklDQVRJT04gKyAnXyc7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFOlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1ZBUklBQkxFX0ZNIDogQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1ZBUklBQkxFICsgJ18nO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBsZXZlbCA9IGZsb3dNb25pdG9yID8gQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX0hBTkRMRVJfSU5URVJOQUxfRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9JTlRFUk5BTCArICdfJztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldmVsICs9IEV2ZW50LmdldEludGVybmFsRXZ0RGVzY3JpcHRpb24odGhpcy5JbnRlcm5hbEV2ZW50KTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1NZU1RFTV9GTSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1NZU1RFTSArICdfJztcclxuICAgICAgICBsZXZlbCArPSB0aGlzLmdldEtleWJvYXJkSXRlbVN0cmluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSOlxyXG4gICAgICAgIGxldmVsID0gZmxvd01vbml0b3IgPyBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9USU1FUl9GTSArICcgJyArIHRoaXMuc2Vjb25kczJTdHJpbmcoKSA6IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1RJTUVSICsgJ18nICsgdGhpcy5zZWNvbmRzMlN0cmluZygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0VYUFJFU1NJT046XHJcbiAgICAgICAgbGV2ZWwgPSBmbG93TW9uaXRvciA/IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX0VYUFJFU1NJT05fRk0gOiBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9FWFBSRVNTSU9OICsgJ18nICsgdGhpcy5FeHAuZ2V0SWQoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgIGxldmVsID0gKGZsb3dNb25pdG9yID8gKENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9IQU5ETEVSX1VTRVJfRk0gKyAnOiAnKSA6IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfSEFORExFUl9VU0VSICsgJ18nKSkgKyAodGhpcy5Vc2VyRXZ0ICE9IG51bGwgPyB0aGlzLlVzZXJFdnQuX3VzZXJFdnREZXNjIDogdGhpcy5fdXNlckV2dERlc2MpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1VTRVJfRlVOQzpcclxuICAgICAgICBsZXZlbCA9IChmbG93TW9uaXRvciA/IChDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVVNFUl9GVU5DVElPTl9GTSArICc6JykgOiAoQ29uc3RJbnRlcmZhY2UuQlJLX0xFVkVMX1VTRVJfRlVOQ1RJT04gKyAnXycpKSArIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGxldmVsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBkZXNjcmlwdGlvbiBvZiB0aGUgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gZGVzY3JpcHRpb24gb2YgdGhlIGV2ZW50IDwvcmV0dXJucz5cclxuICBwdWJsaWMgc3RhdGljIGdldEludGVybmFsRXZ0RGVzY3JpcHRpb24oaW50ZXJuYWxFdmVudENvZGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIHN3aXRjaCAoaW50ZXJuYWxFdmVudENvZGUpIHtcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUJPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQWJvdXQgTWFnaWMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUNUSU9OX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQWN0aW9uIExpc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUREX0hZUEVSTElOSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQUxJR05fTEVGVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdMZWZ0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FMSUdOX1JJR0hUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JpZ2h0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FQUExfUFJPUEVSVElFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQVBQTElDQVRJT05TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0FwcGxpY2F0aW9ucyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BUFBMSUNBVElPTlNfTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdBcHBsaWNhdGlvbnMgTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9BVFRBQ0hfVE9fVEFCTEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQXR0YWNoIHRvIFRhYmxlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FVVEhPUklaRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdBdXRob3JpemUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR0ZMRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCZWdpbiBGaWVsZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfQkVHRk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCZWdpbiBGb3JtJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9CRUdMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIExpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0JFR05YVExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gTmV4dCBMaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9CRUdQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIFBhZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0JFR0xJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQmVnaW4gUm93JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9CRUdQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIFNjcmVlbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfQkVHVEJMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0JlZ2luIHRhYmxlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JPVFRPTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdCb3R0b20nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQlVMTEVUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0J1bGxldCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9CVVRUT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQnV0dG9uIFByZXNzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NBTkNFTDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDYW5jZWwnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfUVVJVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdRdWl0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NFTlRFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDZW50ZXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0hFQ0tfU1lOVEFYOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NoZWNrIFN5bnRheCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DSEVDS19UT19FTkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2hlY2sgdG8gRW5kJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMRUFSX1RFTVBMQVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NsZWFyIFRlbXBsYXRlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMRUFSX1ZBTFVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NsZWFyIFZhbHVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Nsb3NlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0FDVF9DTE9TRV9BUFBMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Nsb3NlIEFwcGxpY2F0aW9uJztcclxuICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01NVU5JQ0FUSU9OUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb21tdW5pY2F0aW9ucyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DT01QT05FTlRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbXBvbmVudHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29udHJvbCBIaXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09OVFJPTF9OQU1FX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29udHJvbCBOYW1lIExpc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0xJUF9DT1BZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvcHknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09QWV9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29weSBMYXlvdXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09QWV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvcHkgU3VidHJlZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DUkVMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NyZWF0ZSBMaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NSRUxJTkVfQUJPVkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIExpbmUgQWJvdmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JFQVRFX1BBUkVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgUGFyZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19DUkVBVEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIFJlY29yZHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JFQVRFX1NVQlRBU0s6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIFN1YnRhc2snO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1JPU1NfUkVGRVJFTkNFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Nyb3NzIFJlZmVyZW5jZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ3V0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RCX1RBQkxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREJNUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEQk1TJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RERl9NQUtFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RERiBNYWtlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RBVEFCQVNFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEYXRhYmFzZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREVGQVVMVF9MQVlPVVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRGVmYXVsdCBMYXlvdXQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREVGSU5FX0VYUFJFU1NJT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRGVmaW5lIEV4cHJlc3Npb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0RFTENVUkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0N1cnJlbnQgQ2hhcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfREVMUFJWQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgQ2hhcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUxFVEVfSFlQRVJMSU5LOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBIeXBlcmxpbmsnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfREVMTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEZWxldGUgTGluZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ERUxFVEVfU1VCVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEZWxldGUgU3VidHJlZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9DT1BZRkxEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RpdHRvJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0RJU1BMQVlfUkVGUkVTSDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdEaXNwbGF5IFJlZnJlc2gnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURJVF9NQUlOX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRWRpdCBNYWluIEZvcm0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VOREZMRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgRmllbGQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VOREZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW5kIEZvcm0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VORExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW5kIExpbmUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX0VORFBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW5kIFBhZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX0VORExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW5kIFJvdyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQkxfRU5EUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbmQgU2NyZWVuJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9FTkRUQkw6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRW5kIFRhYmxlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VOVklST05NRU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Vudmlyb25tZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYRUNVVEVfUFJPR1JBTTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFeGVjdXRlIFByb2dyYW0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhFQ1VURV9SRVBPUlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXhlY3V0ZSBSZXBvcnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhJVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFeGl0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYSVRfU1lTVEVNOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4aXQgU3lzdGVtJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VYUE9SVF9JTVBPUlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRXhwb3J0L0ltcG9ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FWFBSRVNTSU9OX1JVTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4cHJlc3Npb24gcnVsZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhURVJOQUxfRURJVE9SOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4dGVybmFsIEVkaXRvcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRVhUX0VWRU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0V4dGVybmFsIEV2ZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZPUk1TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Zvcm1zJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0ZST01fVkFMVUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnRnJvbSBWYWx1ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9GVU5DVElPTl9MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0Z1bmN0aW9uIExpc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfR0VORVJBVEVfRk9STTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZW5lcmF0ZSBGb3JtJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0dFTkVSQVRFX1BST0dSQU06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR2VuZXJhdGUgUHJvZ3JhbSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9HT19UT19UT1A6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnR28gdG8gVG9wJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hfQ0VOVEVSX09GX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hUTUxfU1RZTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0hUTUwgU3R5bGVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hFTFA6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSGVscCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9IRUxQX1NDUkVFTlM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSGVscCBTY3JlZW5zJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hPUklaX0NFTlRFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdIb3Jpei4gQ2VudGVyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0lfT19GSUxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUYWJsZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSU5ERU5UOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0luZGVudCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9JTlNFUlRfT0JKRUNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0luc2VydCBPYmplY3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSlVNUF9UT19ST1c6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnSnVtcCB0byBSb3cnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfS0VZQk9BUkRfTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdLZXlib2FyZCBMaXN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0tFWUJPQVJEX01BUFBJTkc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnS2V5Ym9hcmQgTWFwcGluZyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MQU5HVUFHRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnbGFuZ3VhZ2VzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19TRUFSQ0g6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTG9jYXRlIE5leHQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRPX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdMb2NhdGUgYSBSZWNvcmQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9HSUNBTFBOQU1FUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9HT046XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTG9nb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNJTkdfSEVMUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdIZWxwIFRvcGljcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS05YVENIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01hcmsgTmV4dCBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01BUktfTkVYVF9MSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01hcmsgTmV4dCBMaW5lIE1MRSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1BSVkNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01hcmsgUHJldmlvdXMgQ2hhcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTUFSS1BSVkxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWFyayBQcmV2aW91cyBMaW5lIE1MRSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVJLX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLVE9CRUc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWFyayBUbyBCZWdpbm5pbmcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX01BUktUT0VORDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNYXJrIFRvIEVuZCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVhJTVVNX0hFSUdIVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdNYXhpbXVtIEhlaWdodCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NQVhJTVVNX1dJRFRIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01heGltdW0gV2lkdGgnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUVOVV9CQVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWVudSBCYXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTUVOVVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01JTklNVU1fSEVJR0hUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01pbmltdW0gSGVpZ2h0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01JTklNVU1fV0lEVEg6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTWluaW11bSBXaWR0aCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVE9fTU9ESUZZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01vZGlmeSBSZWNvcmRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX01PTklUT1JfREVCVUdHRVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTW9uaXRvci9EZWJ1Z2dlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NT1ZFX0VOVFJZOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01vdmUgRW50cnknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTU9WRV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ01vdmUgU3VidHJlZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9OVUxMX1NFVFRJTkdTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05VTEwgU2V0dGluZ3MnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX05YVENIQVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTmV4dCBDaGFyJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9OWFRMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05leHQgTGluZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IFBhZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX05YVExJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTmV4dCBSb3cnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX05YVFBBR0U6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTmV4dCBTY3JlZW4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX05YVFRBQjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IFRhYic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfTlhUV09SRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdOZXh0IFdvcmQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTk9STUFMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ05vcm1hbCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdPSyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9PTEUyOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ09MRTInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfT1BFTl9BUFBMSUNBVElPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdPcGVuIEFwcGxpY2F0aW9uJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX09WRVJXUklURV9FTlRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdPdmVyd3JpdGUgRW50cnknO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfT1ZFUldSSVRFX1NVQlRSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnT3ZlcndyaXRlIFN1YnRyZWUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFBEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1BQRCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QQUdFX0ZPT1RFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQYWdlIEZvb3Rlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QQUdFX0hFQURFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQYWdlIEhlYWRlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTElQX1BBU1RFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Bhc3RlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BBU1RFX0xJTks6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUGFzdGUgTGluayc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QQVNURV9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1Bhc3RlIFN1YnRyZWUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfRURUX1BSVkNIQVI6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgQ2hhcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWTElORTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmV2aW91cyBMaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9QUlZQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByZXZpb3VzIFBhZ2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEJMX1BSVkxJTkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJldmlvdXMgUm93JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RCTF9QUlZQQUdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByZXZpb3VzIFNjcmVlbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWVEFCOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByZXZpb3VzIFRhYic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FRFRfUFJWV09SRDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcmV2aW91cyBXb3JkJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1BSSU5UX0FUVFJJQlVURVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJpbnQgQXR0cmlidXRlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUklOVEVSX1NFVFVQOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByaW50ZXIgU2V0dXAnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJJTlRFUlM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJpbnRlcnMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJPR1JBTVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUHJvZ3JhbXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUFJPUEVSVElFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQcm9wZXJ0aWVzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19RVUVSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdRdWVyeSBSZWNvcmRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUT19SQU5HRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSYW5nZSBvZiBSZWNvcmRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX1JFRlJFU0hfUkVDT1JEOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JlY29yZCBGbHVzaCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRURJUkVDVF9GSUxFUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSZWRpcmVjdCBGaWxlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRURSQVdfTEFZT1VUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVBFQVRfRU5UUlk6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmVwZWF0IEVudHJ5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUEVBVF9TVUJUUkVFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JlcGVhdCBTdWJ0cmVlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFUE9SVF9HRU5FUkFUT1I6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFU1RPUkVfREVGQVVMVFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmVzdG9yZSBEZWZhdWx0cyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRVRVUk5fVE9fVFJFRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnUmlnaHQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUklHSFRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SSUdIVFNfTElTVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSaWdodHMgTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfQVNTSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NRTCBBc3Npc3QnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX0NPTFVNTlM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIENvbHVtbnMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX0NPTU1BTkQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIENvbW1hbmQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX0ZMSVBfREVTQzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTUUwgRmxpcCBEZXNjLic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfS0VZV09SRFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIEtleXdvcmRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NRTF9PUEVSQVRPUlM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU1FMIE9wZXJhdG9ycyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TUUxfVEFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NRTCBUYWJsZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1FMX1dIRVJFX0NMQVVTRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUlRfUkVGUkVTSF9TQ1JFRU46XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2NyZWVuIFJlZnJlc2gnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VDUkVUX05BTUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NlY3JldCBOYW1lcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TRUxFQ1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU2VsZWN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9NQVJLQUxMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NlbGVjdCBBbGwnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VSVkVSUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0VSVklDRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JUX0VEVF9OVUxMOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NldCB0byBOVUxMJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIRUxMX1RPX09TOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1NoZWxsIHRvIE9TJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NIT1dfRVhQUkVTU0lPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdTaG93IEV4cHJlc3Npb24nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hPV19GVUxMX0xBWU9VVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU0hSSU5LX1RSRUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NPUlQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU29ydCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TT1JUX1JFQ09SRFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU29ydCBSZWNvcmRzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBQkxFX0xPQ0FURTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUYWJsZSBMb2NhdGUnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFCTEVfTE9DQVRFX05FWFQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVGFibGUgTG9jYXRlIE5leHQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVEFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX0NPTlRST0w6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RBU0tfRVZFTlRTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UT19WQUxVRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUbyBWYWx1ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UT09MS0lUX1JVTlRJTUU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVG9vbGtpdC9SdW50aW1lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1RPUDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdUb3AnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVFlQRVM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0VEVF9VTkRPOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1VuZG8gRWRpdGluZyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VTklOREVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdVbmluZGVudCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VUERBVEVfTElOSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNDpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fNzpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fOTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTA6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzExOlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xMjpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTM6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE0OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xNTpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTY6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzE3OlxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9VU0VSX0FDVElPTl8xODpcclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMTk6XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfQUNUSU9OXzIwOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1VzZXIgQWN0aW9uICcgKyAoaW50ZXJuYWxFdmVudENvZGUgLSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9BQ1RJT05fMSArIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVVNFUl9HUk9VUFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJfSURTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1VzZXIgSURzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZfQ0VOVEVSX09GX0ZPUk06XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ2VudGVyIG9mIEZvcm0nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfVkVSVElDQUxfQ0VOVEVSOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ZlcnRpY2FsIENlbnRlcic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WSUVXX0JZX0tFWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdWaWV3IGJ5IEtleSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SVF9SRUZSRVNIX1ZJRVc6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVmlldyBSZWZyZXNoJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZJUlRVQUxfVkFSSUFCTEVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ZhcmlhYmxlcyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WSVNVQUxfQ09OTkVDVElPTjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdWaXN1YWwgQ29ubmVjdGlvbic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ISVQ6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnV2luZG93IEhpdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XSU5NT1ZFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1dpbmRvdyBSZXBvc2l0aW9uJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dJTlNJWkU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnV2luZG93IFJlc2l6ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9aT09NOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1pvb20nO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19ERVRBSUxTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0xvY2tpbmcgRGV0YWlscyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9MT0NLSU5HX0FCT1JUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0xvY2tpbmcgQWJvcnQnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfTE9DS0lOR19SRVRSWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdMb2NraW5nIFJldHJ5JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NIRUNLX09CSkVDVF9MSVNUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NoZWNrIE9iamVjdCBMaXN0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VTRVJTX0xJU1Q6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnVXNlcnMgTGlzdCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9NT0RFTFM6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnTW9kZWxzJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9DTElDSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDbGljayc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJfT05fREJMSUNLOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0RibENsaWNrJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0JST1dTRVJfRVNDOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0VzYyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9ST0xMQkFDSzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdSb2xsYmFjayc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTVBUWV9EQVRBVklFVzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbXB0eSBEYXRhdmlldyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX01PRElGWTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdDb250cm9sIE1vZGlmeSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9QUklOVF9EQVRBOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1ByaW50IERhdGEnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUE9TVF9SRUZSRVNIX0JZX1BBUkVOVDpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdQb3N0IFJlZnJlc2ggYnkgUGFyZW50JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1NXSVRDSF9UT19PRkZMSU5FOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1N3aXRjaCBUbyBPZmZsaW5lJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1VOQVZBSUxBQkxFX1NFUlZFUjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdVbmF2YWlsYWJsZSBTZXJ2ZXInO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ09OVEVYVF9NRU5VOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbnRleHQgTWVudSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9FTlRFUl9ST1dfRURJVElORzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdFbnRlciBSb3cgRWRpdGluZyc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX05PX1BST0dfRVhFX1JJR0hUUzpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdObyBQcm9ncmFtIEV4ZWN1dGlvbiBSaWdodHMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCQ0xJRU5UX1JPVVRFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1JvdXRlJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTF9TT1JUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0NvbHVtbiBTb3J0JztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JPV19EQVRBX0NVUlJfUEFHRTpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZXQgUm93cyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TVUJGT1JNX0NMT1NFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1N1YmZvcm0gQ2xvc2UnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9SRUZSRVNIOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ1N1YmZvcm0gUmVmcmVzaCc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9TVUJGT1JNX09QRU46XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnU3ViZm9ybSBPcGVuJztcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NPTVBVVEU6XHJcbiAgICAgICAgZGVzY3JpcHRpb24gPSAnQ29tcHV0ZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DQUNIRV9ORVhUOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0dldCBOZXh0IERhdGEnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ0FDSEVfUFJFVjpcclxuICAgICAgICBkZXNjcmlwdGlvbiA9ICdHZXQgUHJldmlvdXMgRGF0YSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9GRVRDSF9EQVRBX0NPTlRST0xfVkFMVUVTOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0ZldGNoIGRhdGEgY29udHJvbCB2YWx1ZXMnO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSU5ERVhfQ0hBTkdFOlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJ0luZGV4IENoYW5nZSc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXNjcmlwdGlvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdHlwZSBvZiBVc2VyIEV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHR5cGUgb2YgdXNlciBldmVudCA8L3JldHVybnM+XHJcbiAgZ2V0VXNlckV2ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuVXNlckV2dCA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfTk9USU5JVEVEO1xyXG5cclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0VHlwZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzZWNvbmRzIG9mIHRoZSB1c2VyIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTZWNvbmRzT2ZVc2VyRXZlbnQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLlVzZXJFdnQuZ2V0U2Vjb25kcygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgdXNlciBldmVudCBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHVzZXIgZXZlbnQgb2JqZWN0IDwvcmV0dXJucz5cclxuICBnZXRVc2VyRXZlbnQoKTogRXZlbnQge1xyXG4gICAgcmV0dXJuIHRoaXMuVXNlckV2dDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQga2V5Ym9hcmQgaXRlbSAoIGZvciBzeXN0ZW0gZXZlbnQgKSBpbiBmb3JtIG9mIHN0cmluZ1xyXG4gIC8vLyAgIGZvciBzeXN0ZW0gZXZlbnRzIE9OTFlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0S2V5Ym9hcmRJdGVtU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBsZXQga2JpOiBLZXlib2FyZEl0ZW0gPSB0aGlzLmdldEtiZEl0bSgpO1xyXG4gICAgaWYgKGtiaSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgcmV0dXJuIGtiaS5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluc2VydCB0aGUgc2Vjb25kcyB0byB0aGUgcGljdHVyZSBcIkhIOk1NOlNTXCIgZm9yIFNUT1JBR0VfQVRUUl9USU1FXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IGZvcm1hdGVkIHN0cmluZyBvZiBzZWNvbmRzXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHNlY29uZHMyU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGltZTogbnVtYmVyW10gPSBuZXcgQXJyYXk8bnVtYmVyPigzKTtcclxuICAgIGxldCBidWZmZXI6IHN0cmluZyA9ICcnO1xyXG4gICAgdGltZVswXSA9IE1hdGguZmxvb3IodGhpcy5fc2Vjb25kcyAvIDM2MDApO1xyXG4gICAgdGltZVsxXSA9IE1hdGguZmxvb3IoKHRoaXMuX3NlY29uZHMgLSB0aW1lWzBdICogMzYwMCkgLyA2MCk7XHJcbiAgICB0aW1lWzJdID0gdGhpcy5fc2Vjb25kcyAlIDYwO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRpbWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHRpbWVbaV0gPT09IDApXHJcbiAgICAgICAgYnVmZmVyICs9ICcwMCc7XHJcbiAgICAgIGVsc2UgaWYgKHRpbWVbaV0gPCAxMClcclxuICAgICAgICBidWZmZXIgKz0gKCcwJyArIHRpbWVbaV0pO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYnVmZmVyICs9IHRpbWVbaV07XHJcbiAgICAgIC8vIGRvbid0IGluc2VydCBkZWxpbWl0ZXIgYWZ0ZXIgdGhlIGxhc3QgY2FzZVxyXG4gICAgICBpZiAoaSA8IHRpbWUubGVuZ3RoIC0gMSlcclxuICAgICAgICBidWZmZXIgKz0gJzonO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ1ZmZlcjtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2UgdGhlIHBhcmFtZXRlcnMgdmFsdWVzIGZyb20gdGhlIHZhbHVlIHN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWx1ZVN0clwiPmluZGV4IG9mIHRoZSBwYXJhbSA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIHBhcmFtZXRlciB2YWx1ZSA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBwYXJzZVBhcmFtVmFsKHZhbHVlU3RyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IHN0YXJ0T2ZzOiBudW1iZXIgPSAwLCBlbmRPZnMgPSAwLCBuTGVuLCBqO1xyXG4gICAgbGV0IHNMZW46IHN0cmluZywgc1ZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAvLyBmaW5kIHRoZSB2YWx1ZSBsb2NhdGlvblxyXG4gICAgZm9yIChqID0gMDsgaiA8IHRoaXMuX3BhcmFtZXRlcnM7IGorKykge1xyXG4gICAgICBzd2l0Y2ggKDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0pIHtcclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuU0tJUDpcclxuICAgICAgICAgIHNWYWx1ZSA9ICcnO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLkJMT0I6XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk1FTU86XHJcbiAgICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIDQ7XHJcbiAgICAgICAgICBzTGVuID0gdmFsdWVTdHIuc3Vic3RyKHN0YXJ0T2ZzLCAoZW5kT2ZzKSAtIChzdGFydE9mcykpO1xyXG4gICAgICAgICAgbkxlbiA9IE5OdW1iZXIuUGFyc2Uoc0xlbiwgTnVtYmVyU3R5bGVzLkhleE51bWJlcik7XHJcbiAgICAgICAgICBzdGFydE9mcyA9IGVuZE9mcztcclxuXHJcbiAgICAgICAgICAvLyBRQ1IgMTY5OSBkZWNvZGUgdGhlIHBhcmFtZXRlciBmcm9tIGJhc2U2NCBpZiBuZWVkZWRcclxuICAgICAgICAgIGlmIChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0RGVidWdMZXZlbCgpID4gMSB8fCAoPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgKDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0pID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHwgKDxTdG9yYWdlQXR0cmlidXRlPnRoaXMuX3BhcmFtQXR0cnNbal0pID09PSBTdG9yYWdlQXR0cmlidXRlLk1FTU8pIHtcclxuICAgICAgICAgICAgaWYgKChuTGVuICYgMHg4MDAwKSA+IDApXHJcbiAgICAgICAgICAgIC8vIHBhcnNlIHNwYW5uZWQgcmVjb3JkIGVuY29kZWQgdG8gSGV4XHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAvLyBjb21wdXRlIHRoZSBsZW4gb2YgdGhlIHBhcmFtZXRlciBkYXRhXHJcbiAgICAgICAgICAgICAgbkxlbiA9IChuTGVuICYgMHg3RkZGKTtcclxuICAgICAgICAgICAgICBuTGVuICo9IDI7XHJcblxyXG4gICAgICAgICAgICAgIC8vIHBhcnNlIHRoZSBTdHJpbmdcclxuICAgICAgICAgICAgICBsZXQgcmVzOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuICAgICAgICAgICAgICBlbmRPZnMgKz0gUmVjb3JkVXRpbHMuZ2V0U3Bhbm5lZEZpZWxkKHZhbHVlU3RyLCBuTGVuLCBzdGFydE9mcywgPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSwgcmVzLCB0cnVlKTtcclxuICAgICAgICAgICAgICB2YWx1ZVN0ciA9IHJlcy5Ub1N0cmluZygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIG5vbiBzcGFubmVkIHBhcmFtc1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIG5MZW47XHJcbiAgICAgICAgICAgICAgc1ZhbHVlID0gdmFsdWVTdHIuc3Vic3RyKHN0YXJ0T2ZzLCAoZW5kT2ZzKSAtIChzdGFydE9mcykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoKG5MZW4gJiAweDgwMDApID4gMClcclxuICAgICAgICAgICAgLy8gcGFyc2Ugc3Bhbm5lZCByZWNvcmQgZW5jb2RlZCB0byBIZXhcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbiBvZiB0aGUgcGFyYW1ldGVyIGRhdGFcclxuICAgICAgICAgICAgICBuTGVuID0gKG5MZW4gJiAweDdGRkYpO1xyXG4gICAgICAgICAgICAgIG5MZW4gPSBNYXRoLmZsb29yKChuTGVuICsgMikgLyAzKSAqIDQ7XHJcblxyXG4gICAgICAgICAgICAgIC8vIHBhcnNlIHRoZSBTdHJpbmdcclxuICAgICAgICAgICAgICBsZXQgcmVzOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTtcclxuICAgICAgICAgICAgICBlbmRPZnMgKz0gUmVjb3JkVXRpbHMuZ2V0U3Bhbm5lZEZpZWxkKHZhbHVlU3RyLCBuTGVuLCBzdGFydE9mcywgPFN0b3JhZ2VBdHRyaWJ1dGU+dGhpcy5fcGFyYW1BdHRyc1tqXSwgcmVzLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgc1ZhbHVlID0gcmVzLlRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyBNYXRoLmZsb29yKChuTGVuICsgMikgLyAzKSAqIDQ7XHJcbiAgICAgICAgICAgICAgc1ZhbHVlID0gQmFzZTY0LmRlY29kZSh2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDOlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5EQVRFOlxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5USU1FOlxyXG4gICAgICAgICAgLy8gUUNSIDE2OTkgZGVjb2RlIHRoZSBwYXJhbWV0ZXIgZnJvbSBiYXNlNjQgaWYgbmVlZGVkXHJcbiAgICAgICAgICBpZiAoQWNjZXNzSGVscGVyLmVudmlyb25tZW50LkdldERlYnVnTGV2ZWwoKSA+IDEpIHtcclxuICAgICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyBBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0U2lnbmlmaWNhbnROdW1TaXplKCkgKiAyO1xyXG4gICAgICAgICAgICBzVmFsdWUgPSB2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbmRPZnMgPSBzdGFydE9mcyArIChNYXRoLmZsb29yKChBY2Nlc3NIZWxwZXIuZW52aXJvbm1lbnQuR2V0U2lnbmlmaWNhbnROdW1TaXplKCkgKyAyKSAvIDMpICogNCk7XHJcbiAgICAgICAgICAgIHNWYWx1ZSA9IEJhc2U2NC5kZWNvZGVUb0hleCh2YWx1ZVN0ci5zdWJzdHIoc3RhcnRPZnMsIChlbmRPZnMpIC0gKHN0YXJ0T2ZzKSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOOlxyXG4gICAgICAgICAgZW5kT2ZzID0gc3RhcnRPZnMgKyAxO1xyXG4gICAgICAgICAgc1ZhbHVlID0gdmFsdWVTdHIuc3Vic3RyKHN0YXJ0T2ZzLCAoZW5kT2ZzKSAtIChzdGFydE9mcykpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5fcGFyYW1WYWxzW2pdID0gc1ZhbHVlO1xyXG4gICAgICBzdGFydE9mcyA9IGVuZE9mcztcclxuICAgIH1cclxuICAgIHJldHVybiBlbmRPZnM7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBHZXQgdGhlIG51bWJlciBvZiBwYXJhbXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gbnVtYmVyIG9mIHBhcmFtcyA8L3JldHVybnM+XHJcbiAgZ2V0UGFyYW1OdW0oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJzO1xyXG4gIH1cclxuXHJcblxyXG4gIGlzQ29udHJvbEhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgICh0aGlzLmdldEludGVybmFsQ29kZSgpID09IEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWCB8fFxyXG4gICAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYIHx8XHJcbiAgICAgICAgdGhpcy5nZXRJbnRlcm5hbENvZGUoKSA9PSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9WRVJJRklDQVRJT04pO1xyXG4gIH1cclxuXHJcbiAgaXNWYXJpYWJsZUhlYWRlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmdldFR5cGUoKSA9PSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMICYmXHJcbiAgICAgIHRoaXMuZ2V0SW50ZXJuYWxDb2RlKCkgPT0gSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBBcHBlbmRzIHRoZSBldmVudCdzIGRlc2NyaXB0aW9uIHRvIHRoZSBnaXZlbiBTdHJpbmdCdWlsZGVyLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJidWZmZXJcIj5UaGUgYnVmZmVyIHRvIHdoaWNoIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgYmUgYXBwZW5kZWQuPC9wYXJhbT5cclxuICBwdWJsaWMgQXBwZW5kRGVzY3JpcHRpb24oYnVmZmVyOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHtcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX0lOVEVSTkFMOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQoRXZlbnQuZ2V0SW50ZXJuYWxFdnREZXNjcmlwdGlvbih0aGlzLkludGVybmFsRXZlbnQpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLmdldEtleWJvYXJkSXRlbVN0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgIGJ1ZmZlci5BcHBlbmQodGhpcy5nZXRVc3JFdm50RGVzYygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSX0ZVTkM6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCh0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9USU1FUjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKHRoaXMuc2Vjb25kczJTdHJpbmcoKSk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBidWZmZXIuQXBwZW5kKCdJRCAnICsgdGhpcy5FeHAuZ2V0SWQoKS50b1N0cmluZygpKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgYnVmZmVyLkFwcGVuZCgndW5rbm93biBldmVudCB0eXBlICcpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFJldHVybnMgd2hldGhlciB0aGUgaW50ZXJuYWwgZXZlbnQgY29kZSBpcyBiZXR3ZWVuIDEwMDEgJiAxMDA4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgaXNOZXdJbnRlcm5hbEV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuSW50ZXJuYWxFdmVudCA+PSAxMDAxICYmIHRoaXMuSW50ZXJuYWxFdmVudCA8PSAxMDA4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGRlc2NyaXB0aW9uIGZvciBuZXcgaW50ZXJuYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBnZXROZXdJbnRlcm5hbEV2ZW50RGVzY3JpcHRpb24oKTogc3RyaW5nIHtcclxuICAgIGxldCBldmVudERlc2M6IHN0cmluZyA9IE5TdHJpbmcuRW1wdHk7XHJcbiAgICBzd2l0Y2ggKHRoaXMuSW50ZXJuYWxFdmVudCkge1xyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1BSRUZJWDpcclxuICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19QUkVGSVhfRk07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9UQVNLX1NVRkZJWDpcclxuICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfVEFTS19TVUZGSVhfRk07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9SRUNfUFJFRklYX0ZNO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWDpcclxuICAgICAgICBldmVudERlc2MgPSBDb25zdEludGVyZmFjZS5CUktfTEVWRUxfUkVDX1NVRkZJWF9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfUFJFRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1BSRUZJWF9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1NVRkZJWF9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfVkVSSUZJQ0FUSU9OOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9DVFJMX1ZFUklGSUNBVElPTl9GTTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1ZBUklBQkxFOlxyXG4gICAgICAgIGV2ZW50RGVzYyA9IENvbnN0SW50ZXJmYWNlLkJSS19MRVZFTF9WQVJJQUJMRV9GTTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXZlbnREZXNjO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJuIHRoZSBkZXNjcmlwdGlvbiBmb3IgbmV3IGludGVybmFsIGV2ZW50cyBvciByZXR1cm4gdGhlIHR5cGUgaW4gc3RyaW5nIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldEV2ZW50VHlwZSgpOiBzdHJpbmcge1xyXG4gICAgLy8gRm9yIHRoZSBuZXcgaW50ZXJuYWwgZXZlbnRzLCB0aGVyZSBpcyBubyB0eXBlIHNvIGluc3RlYWQgZ2V0IHRoZSBkZXNjcmlwdGlvblxyXG4gICAgcmV0dXJuIHRoaXMuaXNOZXdJbnRlcm5hbEV2ZW50KClcclxuICAgICAgPyBOU3RyaW5nLlRyaW1FbmQodGhpcy5nZXROZXdJbnRlcm5hbEV2ZW50RGVzY3JpcHRpb24oKSlcclxuICAgICAgOiB0aGlzLmdldEV2ZW50VHlwZVN0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm4gdGhlIHR5cGUgb2YgZXZlbnQgaW4gc3RyaW5nIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldEV2ZW50VHlwZVN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgbGV0IGV2ZW50VHlwZTogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfSU5URVJOQUw6XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ0ludGVybmFsIEV2ZW50Oic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9TWVNURU06XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ1N5c3RlbSBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfRVhQUkVTU0lPTjpcclxuICAgICAgICBldmVudFR5cGUgPSAnRXhwcmVzc2lvbiBFdmVudDonO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfVElNRVI6XHJcbiAgICAgICAgZXZlbnRUeXBlID0gJ1RpbWVyIEV2ZW50Oic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9VU0VSOlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICdVc2VyIEV2ZW50Oic7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGV2ZW50VHlwZSA9ICcnO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBldmVudFR5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdXNlciBkZWZpbmVkIGZ1bmN0aW9uJ3MgbmFtZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VXNlckRlZmluZWRGdW5jTmFtZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWUgPSBuYW1lO1xyXG4gICAgbGV0IGZ1bmN0aW9uTmFtZVVwcGVyOiBzdHJpbmcgPSB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lLnRvVXBwZXJDYXNlKCk7XHJcbiAgICB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lSGFzaENvZGUgPSBIYXNoVXRpbHMuR2V0SGFzaENvZGUoZnVuY3Rpb25OYW1lVXBwZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHVzZXIgZGVmaW5lZCBmdW5jdGlvbidzIG5hbWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFVzZXJEZWZpbmVkRnVuY05hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRGVmaW5lZEZ1bmNOYW1lO1xyXG4gIH1cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdXNlciBkZWZpbmVkIGZ1bmN0aW9uJ3MgbmFtZSdzIGhhc2ggdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFVzZXJEZWZpbmVkRnVuY05hbWVIYXNoQ29kZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3VzZXJEZWZpbmVkRnVuY05hbWVIYXNoQ29kZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB1c2VyIGRlZmluZWQgZnVuY3Rpb24ncyByZXR1cm4gZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0VXNlckRlZmluZWRGdW5jUmV0RXhwKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmV0dXJuRXhwO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc2V0VGltZXN0YW1wKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGltZXN0YW1wID0gRXZlbnQuX2xhc3RUaW1lc3RhbXArKztcclxuICB9XHJcblxyXG4gIGdldFRpbWVzdGFtcCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RpbWVzdGFtcDtcclxuICB9XHJcblxyXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gTlN0cmluZy5Gb3JtYXQoJ3t7RXZlbnQ6IHswfX19JywgdGhpcy5nZXRCcmtMZXZlbCgpKTtcclxuICB9XHJcbn1cclxuIl19