tnp-core 16.0.14 → 16.0.17

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 (104) hide show
  1. package/README.md +20 -20
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/README.md +24 -24
  4. package/browser/esm2022/lib/core-config.mjs +1 -1
  5. package/browser/esm2022/lib/core-imports.mjs +16 -6
  6. package/browser/esm2022/lib/core-models.mjs +87 -2
  7. package/browser/esm2022/lib/framework-name.mjs +1 -1
  8. package/browser/esm2022/lib/helpers-isomorphic.mjs +1 -1
  9. package/browser/esm2022/lib/helpers-messages.mjs +12 -1
  10. package/browser/esm2022/lib/helpers.mjs +106 -27
  11. package/browser/esm2022/lib/index.mjs +2 -1
  12. package/browser/esm2022/lib/node-chalk-mock.mjs +42 -0
  13. package/browser/esm2022/lib/node-path-mock.mjs +1 -1
  14. package/browser/esm2022/lib/progress-data.mjs +1 -1
  15. package/browser/esm2022/lib/utils.mjs +274 -0
  16. package/browser/fesm2022/tnp-core.mjs +527 -30
  17. package/browser/fesm2022/tnp-core.mjs.map +1 -1
  18. package/browser/lib/core-imports.d.ts +7 -2
  19. package/browser/lib/core-models.d.ts +170 -1
  20. package/browser/lib/helpers-messages.d.ts +1 -0
  21. package/browser/lib/helpers.d.ts +24 -4
  22. package/browser/lib/index.d.ts +2 -1
  23. package/browser/lib/node-chalk-mock.d.ts +3 -0
  24. package/browser/lib/utils.d.ts +70 -0
  25. package/cli.backend.js +3 -3
  26. package/cli.backend.js.map +1 -1
  27. package/client/README.md +24 -24
  28. package/client/esm2022/lib/core-config.mjs +1 -1
  29. package/client/esm2022/lib/core-imports.mjs +16 -6
  30. package/client/esm2022/lib/core-models.mjs +87 -2
  31. package/client/esm2022/lib/framework-name.mjs +1 -1
  32. package/client/esm2022/lib/helpers-isomorphic.mjs +1 -1
  33. package/client/esm2022/lib/helpers-messages.mjs +12 -1
  34. package/client/esm2022/lib/helpers.mjs +106 -27
  35. package/client/esm2022/lib/index.mjs +2 -1
  36. package/client/esm2022/lib/node-chalk-mock.mjs +42 -0
  37. package/client/esm2022/lib/node-path-mock.mjs +1 -1
  38. package/client/esm2022/lib/progress-data.mjs +1 -1
  39. package/client/esm2022/lib/utils.mjs +274 -0
  40. package/client/fesm2022/tnp-core.mjs +527 -30
  41. package/client/fesm2022/tnp-core.mjs.map +1 -1
  42. package/client/lib/core-imports.d.ts +7 -2
  43. package/client/lib/core-models.d.ts +170 -1
  44. package/client/lib/helpers-messages.d.ts +1 -0
  45. package/client/lib/helpers.d.ts +24 -4
  46. package/client/lib/index.d.ts +2 -1
  47. package/client/lib/node-chalk-mock.d.ts +3 -0
  48. package/client/lib/utils.d.ts +70 -0
  49. package/client/package.json +45 -32
  50. package/index.js.map +1 -1
  51. package/lib/core-config.js.map +1 -1
  52. package/lib/core-imports.d.ts +9 -4
  53. package/lib/core-imports.js +26 -7
  54. package/lib/core-imports.js.map +1 -1
  55. package/lib/core-models.d.ts +169 -0
  56. package/lib/core-models.js +88 -0
  57. package/lib/core-models.js.map +1 -1
  58. package/lib/framework-name.js.map +1 -1
  59. package/lib/helpers-isomorphic.js.map +1 -1
  60. package/lib/helpers-messages.d.ts +1 -0
  61. package/lib/helpers-messages.js +11 -0
  62. package/lib/helpers-messages.js.map +1 -1
  63. package/lib/helpers.d.ts +57 -18
  64. package/lib/helpers.js +241 -44
  65. package/lib/helpers.js.map +1 -1
  66. package/lib/index.d.ts +2 -1
  67. package/lib/index.js +1 -0
  68. package/lib/index.js.map +1 -1
  69. package/lib/node-chalk-mock.d.ts +2 -0
  70. package/lib/node-chalk-mock.js +6 -0
  71. package/lib/node-chalk-mock.js.map +1 -0
  72. package/lib/node-path-mock.js +3 -3
  73. package/lib/node-path-mock.js.map +1 -1
  74. package/lib/progress-data.js.map +1 -1
  75. package/lib/public-api.js.map +1 -1
  76. package/lib/utils.d.ts +79 -0
  77. package/lib/utils.js +562 -0
  78. package/lib/utils.js.map +1 -0
  79. package/package.json +2 -2
  80. package/package.json_devDependencies.json +202 -202
  81. package/package.json_tnp.json5 +69 -69
  82. package/tmp-environment.json +50 -37
  83. package/websql/README.md +24 -24
  84. package/websql/esm2022/lib/core-config.mjs +1 -1
  85. package/websql/esm2022/lib/core-imports.mjs +16 -6
  86. package/websql/esm2022/lib/core-models.mjs +87 -2
  87. package/websql/esm2022/lib/framework-name.mjs +1 -1
  88. package/websql/esm2022/lib/helpers-isomorphic.mjs +1 -1
  89. package/websql/esm2022/lib/helpers-messages.mjs +12 -1
  90. package/websql/esm2022/lib/helpers.mjs +106 -27
  91. package/websql/esm2022/lib/index.mjs +2 -1
  92. package/websql/esm2022/lib/node-chalk-mock.mjs +42 -0
  93. package/websql/esm2022/lib/node-path-mock.mjs +1 -1
  94. package/websql/esm2022/lib/progress-data.mjs +1 -1
  95. package/websql/esm2022/lib/utils.mjs +274 -0
  96. package/websql/fesm2022/tnp-core.mjs +527 -30
  97. package/websql/fesm2022/tnp-core.mjs.map +1 -1
  98. package/websql/lib/core-imports.d.ts +7 -2
  99. package/websql/lib/core-models.d.ts +170 -1
  100. package/websql/lib/helpers-messages.d.ts +1 -0
  101. package/websql/lib/helpers.d.ts +24 -4
  102. package/websql/lib/index.d.ts +2 -1
  103. package/websql/lib/node-chalk-mock.d.ts +3 -0
  104. package/websql/lib/utils.d.ts +70 -0
@@ -1,4 +1,4 @@
1
- import { _, /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ } from './core-imports'; /* */
1
+ import { _, path, /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ } from './core-imports'; /* */
2
2
  /* */
3
3
  /* */
4
4
  /* */
@@ -18,8 +18,11 @@ import { _, /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /*
18
18
  /* */
19
19
  import { Helpers } from './index';
20
20
  import { HelpersMessages } from './helpers-messages';
21
+ import { mimeTypes } from './core-models';
21
22
  import { Subject } from 'rxjs';
22
23
  const encoding = 'utf8';
24
+ /* */
25
+ /* */
23
26
  const WEBSQL_PROC_MOCK_PROCESSES_PID = {};
24
27
  const WEBSQL_PROC_MOCK_PROCESSES_PPID = {};
25
28
  export class HelpersCore extends HelpersMessages {
@@ -29,38 +32,72 @@ export class HelpersCore extends HelpersMessages {
29
32
  }
30
33
  return HelpersCore._instanceCore;
31
34
  }
35
+ /* */
36
+ /* */
37
+ /* */
38
+ /* */
39
+ /* */
40
+ /* */
41
+ /* */
42
+ /* */
43
+ /* */
44
+ /* */
45
+ /* */
32
46
  constructor() {
33
47
  super();
34
48
  /* */
35
49
  /* */
36
- /* */
37
- /* */
38
- /* */
39
- /* */
40
- /* */
41
- /* */
42
- /* */
43
- /* */
44
- /* */
45
- /* */
46
- /* */
47
- /* */
48
- /* */
49
- /* */
50
- /* */
51
- /* */
52
- /* */
53
- /* */
54
- /* */
55
- /* */
56
50
  this.bigMaxBuffer = 2024 * 500;
57
51
  /* */
58
52
  /* */
59
53
  /* */
60
54
  }
55
+ mediaTypeFromSrc(src) {
56
+ const ext = path.extname(src);
57
+ const media = mimeTypes[ext];
58
+ return _.first(media?.split('/'));
59
+ }
60
+ /* */
61
+ /* */
62
+ /* */
63
+ /* */
64
+ /* */
65
+ /* */
66
+ /* */
67
+ /* */
68
+ /* */
69
+ /* */
70
+ /* */
71
+ /* */
72
+ /* */
73
+ /* */
74
+ /* */
75
+ /* */
76
+ /* */
77
+ /* */
78
+ /* */
79
+ /* */
80
+ /* */
81
+ /* */
82
+ /**
83
+ * check if data is nodejs/browser blob
84
+ *
85
+ * @param maybeBlob
86
+ * @returns
87
+ */
61
88
  isBlob(maybeBlob) {
62
89
  return maybeBlob instanceof Blob; // || toString.call(maybeBlob) === '[object Blob]';
63
90
  }
91
+ /**
92
+ * Check if data is nodejs buffer
93
+ *
94
+ * @param maybeNodejsBuffer
95
+ * @returns
96
+ */
97
+ /* */
98
+ /* */
99
+ /* */
100
+ /* */
64
101
  removeSlashAtEnd(s) {
65
102
  s = s?.endsWith(`/`) ? s.slice(0, s.length - 1) : s;
66
103
  return s;
@@ -69,12 +106,15 @@ export class HelpersCore extends HelpersMessages {
69
106
  s = s?.startsWith(`/`) ? s.slice(1) : s;
70
107
  return s;
71
108
  }
109
+ /**
110
+ * stringify to pretty json string
111
+ */
72
112
  stringify(inputObject) {
73
113
  return JSON.stringify(inputObject, null, 2);
74
114
  }
75
115
  async runSyncOrAsync(fnOrOptions, ...firstArg) {
76
116
  if (_.isUndefined(fnOrOptions)) {
77
- return;
117
+ return void 0;
78
118
  }
79
119
  let promisOrValue;
80
120
  const optionsMode = _.isObject(fnOrOptions)
@@ -310,10 +350,6 @@ export class HelpersCore extends HelpersMessages {
310
350
  /* */
311
351
  /* */
312
352
  /* */
313
- /* */
314
- /* */
315
- /* */
316
- /* */
317
353
  /**
318
354
  * symlink may have existed or unexisted destiantion url
319
355
  * @param destUrl M
@@ -415,6 +451,7 @@ export class HelpersCore extends HelpersMessages {
415
451
  /* */
416
452
  /* */
417
453
  /* */
454
+ /* */
418
455
  exists(folderOrFilePath) {
419
456
  /* */
420
457
  /* */
@@ -437,6 +474,9 @@ export class HelpersCore extends HelpersMessages {
437
474
  /* */
438
475
  return (void 0);
439
476
  }
477
+ /**
478
+ * this is HACK for running procesess inside processes
479
+ */
440
480
  _fixCommand(command) {
441
481
  if ((command.startsWith('tnp ') || command.startsWith('firedev ')) // TODO every cli projects here that uses run and need to kill process easly!
442
482
  &&
@@ -501,6 +541,11 @@ export class HelpersCore extends HelpersMessages {
501
541
  /* */
502
542
  /* */
503
543
  /* */
544
+ /* */
545
+ /* */
546
+ /* */
547
+ /* */
548
+ /* */
504
549
  };
505
550
  }
506
551
  wait(second) {
@@ -580,6 +625,11 @@ export class HelpersCore extends HelpersMessages {
580
625
  /* */
581
626
  /* */
582
627
  /* */
628
+ /* */
629
+ /* */
630
+ /* */
631
+ /* */
632
+ /* */
583
633
  killProcess(byPid) {
584
634
  /* */
585
635
  /* */
@@ -638,6 +688,9 @@ export class HelpersCore extends HelpersMessages {
638
688
  /* */
639
689
  /* */
640
690
  /* */
691
+ /* */
692
+ /* */
693
+ /* */
641
694
  async(detach = false, mockFun) {
642
695
  if (mockFun) {
643
696
  const subStdoutSub = new Subject();
@@ -716,6 +769,7 @@ export class HelpersCore extends HelpersMessages {
716
769
  /* */
717
770
  /* */
718
771
  /* */
772
+ /* */
719
773
  return (void 0);
720
774
  },
721
775
  /* */
@@ -804,6 +858,14 @@ export class HelpersCore extends HelpersMessages {
804
858
  /* */
805
859
  /* */
806
860
  /* */
861
+ /* */
862
+ /* */
863
+ /* */
864
+ /* */
865
+ /* */
866
+ /* */
867
+ /* */
868
+ /* */
807
869
  };
808
870
  }
809
871
  /* */
@@ -1166,14 +1228,31 @@ export class HelpersCore extends HelpersMessages {
1166
1228
  /* */
1167
1229
  /* */
1168
1230
  /* */
1231
+ /* */
1232
+ /* */
1233
+ /* */
1234
+ /* */
1235
+ /* */
1236
+ /* */
1237
+ /* */
1238
+ /* */
1239
+ /* */
1240
+ /* */
1241
+ /* */
1242
+ /* */
1243
+ /* */
1244
+ /* */
1245
+ /* */
1169
1246
  /**
1170
1247
  * Quick fix for object values
1248
+ * @deprecated
1171
1249
  */
1172
1250
  values(obj) {
1173
1251
  if (_.isObject(obj) && !Array.isArray(obj)) {
1174
1252
  const values = [];
1175
1253
  for (const key in obj) {
1176
1254
  if (Object.prototype.hasOwnProperty.call(obj, key)) {
1255
+ // @ts-ignore
1177
1256
  values.push(obj[key]);
1178
1257
  }
1179
1258
  }
@@ -1184,4 +1263,4 @@ export class HelpersCore extends HelpersMessages {
1184
1263
  }
1185
1264
  ;
1186
1265
  ({}); // @--end-of-file-for-module=tnp-core lib/helpers.ts
1187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBSyxNQUFNLGdCQUFnQixDQUFDLENBQUEsS0FBSztBQUM1SCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxLQUFLO0FBQ0wsS0FBSztBQUdMLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSXJELE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBSTdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQW9CeEIsTUFBTSw4QkFBOEIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUM7QUFFM0MsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBSXZDLE1BQU0sS0FBSyxZQUFZO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztTQUMvQztRQUNELE9BQU8sV0FB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SztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FB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QUFLO1FBQ0wsS0FBSztTQUVBLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWM7UUFDakIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUMsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBR0gsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUtMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxL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TCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztTQUVBLENBQUE7SUFDSCxDQUFDO0lBRUgsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFHTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUdMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0g7O09BRUc7SUFDSCxNQUFNLENBQUMsR0FBUTtRQUNiLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUNyQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3ZCO2FBQ0Y7WUFDRCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0NBZ1ZGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvREFBb0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAgIF8sIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovIC8qICovICAgIH0gZnJvbSAnLi9jb3JlLWltcG9ydHMnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbi8qICovXG4vKiAqL1xuICBcblxuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgSGVscGVyc01lc3NhZ2VzIH0gZnJvbSAnLi9oZWxwZXJzLW1lc3NhZ2VzJztcbmltcG9ydCB7IEV4ZWN1dGVPcHRpb25zLCBSdW5PcHRpb25zIH0gZnJvbSAnLi9jb3JlLW1vZGVscyc7XG5pbXBvcnQgeyBmcmFtZXdvcmtOYW1lIH0gZnJvbSAnLi9mcmFtZXdvcmstbmFtZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBhbnk7XG5jb25zdCBlbmNvZGluZyA9ICd1dGY4Jztcbi8qICovXG4vKiAqL1xuICBcblxuZXhwb3J0IGludGVyZmFjZSBSdW5TeW5jT3JBc3luY09wdGlvbnMge1xuICBmdW5jdGlvbkZuOiBGdW5jdGlvbixcbiAgY29udGV4dD86IG9iamVjdCxcbiAgYXJyYXlPZlBhcmFtcz86IGFueVtdLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRPdXRwdXRPcHRpb25zIHtcbiAgYmlnZ2VyQnVmZmVyPzogYm9vbGVhbixcbiAgc2hvd1dob2xlQ29tbWFuZE5vdE9ubHlMYXN0TGluZT86IGJvb2xlYW4sXG4gIHNob3dTdGRlcj86IGJvb2xlYW47XG4gIGdhdGhlckNvbG9ycz86IGJvb2xlYW47XG4gIHNob3dFcnJvcldhcm5pbmc/OiBib29sZWFuLFxufVxuXG5cbmNvbnN0IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRCA9IHt9O1xuY29uc3QgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRCA9IHt9O1xuXG5leHBvcnQgY2xhc3MgSGVscGVyc0NvcmUgZXh0ZW5kcyBIZWxwZXJzTWVzc2FnZXMge1xuXG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlQ29yZTogSGVscGVyc0NvcmU7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlQ29yZSgpIHtcbiAgICBpZiAoIUhlbHBlcnNDb3JlLl9pbnN0YW5jZUNvcmUpIHtcbiAgICAgIEhlbHBlcnNDb3JlLl9pbnN0YW5jZUNvcmUgPSBuZXcgSGVscGVyc0NvcmUoKTtcbiAgICB9XG4gICAgcmV0dXJuIEhlbHBlcnNDb3JlLl9pbnN0YW5jZUNvcmU7XG4gIH1cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4gIHJlYWRvbmx5IGJpZ01heEJ1ZmZlciA9IDIwMjQgKiA1MDA7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgaXNCbG9iKG1heWJlQmxvYikge1xuXG4gICAgcmV0dXJuIG1heWJlQmxvYiBpbnN0YW5jZW9mIEJsb2I7IC8vIHx8IHRvU3RyaW5nLmNhbGwobWF5YmVCbG9iKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xuICB9XG5cblxuICByZW1vdmVTbGFzaEF0RW5kKHM6IHN0cmluZykge1xuICAgIHMgPSBzPy5lbmRzV2l0aChgL2ApID8gcy5zbGljZSgwLCBzLmxlbmd0aCAtIDEpIDogcztcbiAgICByZXR1cm4gcztcbiAgfVxuXG4gIHJlbW92ZVNsYXNoQXRCZWdpbihzOiBzdHJpbmcpIHtcbiAgICBzID0gcz8uc3RhcnRzV2l0aChgL2ApID8gcy5zbGljZSgxKSA6IHM7XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBzdHJpbmdpZnkoaW5wdXRPYmplY3Q6IGFueSk6IHN0cmluZyB7XG5cblxuXG5cblxuXG5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoaW5wdXRPYmplY3QsIG51bGwsIDIpO1xuICB9XG5cbiAgYXN5bmMgcnVuU3luY09yQXN5bmMoZm5Pck9wdGlvbnM6IEZ1bmN0aW9uIHwgW3N0cmluZywgb2JqZWN0XSB8IFJ1blN5bmNPckFzeW5jT3B0aW9ucywgLi4uZmlyc3RBcmc6IGFueVtdKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZm5Pck9wdGlvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBwcm9taXNPclZhbHVlOiBhbnk7XG4gICAgY29uc3Qgb3B0aW9uc01vZGUgPSBfLmlzT2JqZWN0KGZuT3JPcHRpb25zKVxuICAgICAgJiYgIV8uaXNBcnJheShmbk9yT3B0aW9ucylcbiAgICAgICYmICFfLmlzRnVuY3Rpb24oZm5Pck9wdGlvbnMpXG4gICAgICAmJiAhXy5pc05pbChmbk9yT3B0aW9ucylcbiAgICAgIDtcblxuICAgIGlmIChvcHRpb25zTW9kZSkge1xuICAgICAgY29uc3QgeyBmdW5jdGlvbkZuLCBjb250ZXh0LCBhcnJheU9mUGFyYW1zIH0gPSBmbk9yT3B0aW9ucyBhcyBSdW5TeW5jT3JBc3luY09wdGlvbnM7XG4gICAgICBwcm9taXNPclZhbHVlID0gZnVuY3Rpb25Gbi5hcHBseShjb250ZXh0LCBhcnJheU9mUGFyYW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJvbWlzT3JWYWx1ZSA9IF8uaXNBcnJheShmbk9yT3B0aW9ucykgPyBmbk9yT3B0aW9uc1sxXVtmbk9yT3B0aW9uc1swXV0oLi4uZmlyc3RBcmcpIDogZm5Pck9wdGlvbnMoLi4uZmlyc3RBcmcpO1xuICAgIH1cblxuXG4gICAgaWYgKHByb21pc09yVmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG5cbiAgICAgIHByb21pc09yVmFsdWUgPSBQcm9taXNlLnJlc29sdmUocHJvbWlzT3JWYWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvbWlzT3JWYWx1ZTtcbiAgfVxuXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4gIC8qKlxuICAgKiBzeW1saW5rIG1heSBoYXZlIGV4aXN0ZWQgb3IgdW5leGlzdGVkIGRlc3RpYW50aW9uIHVybFxuICAgKiBAcGFyYW0gZGVzdFVybCBNXG4gICAqL1xuICBpc1N5bWxpbmtUaGF0TWF0Y2hlc1VybChwb3NzaWJsZVN5bWxpbms6IHN0cmluZywgZGVzdFVybDogc3RyaW5nLCBhYnNvbHV0ZUZpbGVNYXRjaCA9IGZhbHNlKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIGlzU3ltbGlua0ZpbGVFeGl0ZWRPclVuZXhpc3RlZChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiBzeW1ib2xuayBsaW5rIHRoYXQgdGFyZ2V0IGZpbGUgZG9lcyBub3QgZXhpdHNcbiAgICovXG4gIGlzVW5leGlzdGVkTGluayhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBleGlzdGVkTGluayBjaGVjayBpZiBzb3VyY2Ugb2YgbGluayBleGlzdHNcbiAgICovXG4gIGlzRXhpc3RlZFN5bWxpbmsoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuICBleGlzdHMoZm9sZGVyT3JGaWxlUGF0aDogc3RyaW5nIHwgc3RyaW5nW11cblxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cbiAgX2ZpeENvbW1hbmQoY29tbWFuZDogc3RyaW5nKSB7XG4gICAgaWYgKFxuICAgICAgKGNvbW1hbmQuc3RhcnRzV2l0aCgndG5wICcpIHx8IGNvbW1hbmQuc3RhcnRzV2l0aCgnZmlyZWRldiAnKSkgLy8gVE9ETyBldmVyeSBjbGkgcHJvamVjdHMgaGVyZSB0aGF0IHVzZXMgcnVuIGFuZCBuZWVkIHRvIGtpbGwgcHJvY2VzcyBlYXNseSFcbiAgICAgICYmXG4gICAgICAoY29tbWFuZC5zZWFyY2goJy1zcGlubmVyPWZhbHNlJykgPT09IC0xKSAmJiAoY29tbWFuZC5zZWFyY2goJy1zcGlubmVyPW9mZicpID09PSAtMSkpIHtcbiAgICAgIGNvbW1hbmQgPSBgJHtjb21tYW5kfSAtc3Bpbm5lcj1mYWxzZWBcbiAgICB9XG5cbiAgICBpZiAoZ2xvYmFsLnNraXBDb3JlQ2hlY2sgJiYgKGNvbW1hbmQuc3RhcnRzV2l0aCgndG5wICcpIHx8IGNvbW1hbmQuc3RhcnRzV2l0aCgnZmlyZWRldiAnKSkpIHtcbiAgICAgIGNvbW1hbmQgPSBgJHtjb21tYW5kfSAtLXNraXBDb3JlQ2hlY2tgXG4gICAgfVxuXG5cbiAgICByZXR1cm4gY29tbWFuZFxuICB9XG5cbiAgY29tbWFuZChjb21tYW5kOiBzdHJpbmcpIHtcblxuICAgIGNvbW1hbmQgPSBIZWxwZXJzLl9maXhDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgcmV0dXJuIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICB9XG4gIH1cblxuICB3YWl0KHNlY29uZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKVxuICAgIH0pXG4gIH1cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gIGtpbGxQcm9jZXNzKGJ5UGlkOiBudW1iZXIpIHtcbi8qICovXG4vKiAqL1xuICBcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgICBpZiAoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUElEW2J5UGlkXSkge1xuICAgICAgY29uc3QgcHBpZCA9IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtieVBpZF0ucHBpZDtcbiAgICAgIGlmIChXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3BwaWRdKSB7XG4gICAgICAgIGNvbnN0IGFsbENoaWxkcyA9IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHBpZF0uY2hpbGRQcm9jZXNzZXMgYXMgbnVtYmVyW107XG4gICAgICAgIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHBpZF0uY2hpbGRQcm9jZXNzZXMgPSBhbGxDaGlsZHMuZmlsdGVyKHAgPT4gcCAhPT0gYnlQaWQpO1xuICAgICAgfVxuICAgICAgZGVsZXRlIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtieVBpZF07XG4gICAgfVxuXG4gICAgaWYgKFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbYnlQaWRdKSB7XG4gICAgICBjb25zdCBjaGlsZHMgPSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW2J5UGlkXS5jaGlsZFByb2Nlc3NlcyBhcyBudW1iZXJbXTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUGlkID0gY2hpbGRzW2luZGV4XTtcbiAgICAgICAgZGVsZXRlIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtjaGlsZFBpZF07XG4gICAgICB9XG4gICAgICBkZWxldGUgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtieVBpZF07XG4gICAgfVxuXG4gIH1cblxuICBydW4oY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBSdW5PcHRpb25zKSB7XG4gICAgY29tbWFuZCA9IEhlbHBlcnMuX2ZpeENvbW1hbmQoY29tbWFuZCk7XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIHtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4gICAgICBhc3luYyhkZXRhY2ggPSBmYWxzZSxcblxuICAgICAgICBtb2NrRnVuPzogKHN0ZG91dENhbGxiYWNrOiAoZGF0YUZvclN0ZG91dDogYW55KSA9PiBhbnksIHN0ZEVycmNDYWxsYmFjazogKGRhdGFGb3JTdGRlcjogYW55KSA9PiBhbnksIHNob3VsZFByb2Nlc0JlRGVhZD86ICgpID0+IGJvb2xlYW4pID0+IFByb21pc2U8bnVtYmVyPiB8IG51bWJlclxuXG4gICAgICApXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICB7XG5cblxuICAgICAgICBpZiAobW9ja0Z1bikge1xuICAgICAgICAgIGNvbnN0IHN1YlN0ZG91dFN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3ViU3RkZXJTdWIgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICAgIGNvbnN0IGV4aXRTdWIgPSBuZXcgU3ViamVjdCgpO1xuICAgICAgICAgIGNvbnN0IHN1YnNjcmlidGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cblxuICAgICAgICAgIGNvbnN0IHByb2NEdW1teSA9IHtcbiAgICAgICAgICAgIHN0ZG91dDoge1xuICAgICAgICAgICAgICBvbihhY3Rpb246ICdkYXRhJywgc3Rkb3V0Q2FsbGJhY2s6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYnRpb25zLnB1c2goc3ViU3Rkb3V0U3ViLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Rkb3V0Q2FsbGJhY2soZCk7XG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzdGRlcnI6IHtcbiAgICAgICAgICAgICAgb24oYWN0aW9uOiAnZGF0YScsIHN0ZG91dENhbGxiYWNrOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09ICdkYXRhJykge1xuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJ0aW9ucy5wdXNoKHN1YlN0ZGVyU3ViLnN1YnNjcmliZShkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc3Rkb3V0Q2FsbGJhY2soZCk7XG4gICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbihhY3Rpb246ICdleGl0JywgZXhpdEZ1bjogYW55KSB7XG4gICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gJ2V4aXQnKSB7XG4gICAgICAgICAgICAgICAgc3Vic2NyaWJ0aW9ucy5wdXNoKGV4aXRTdWIuc3Vic2NyaWJlKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgZXhpdEZ1bihkKTtcbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBwaWQ6IHZvaWQgMCBhcyBudW1iZXIsXG4gICAgICAgICAgICBwaWQ6IHZvaWQgMCBhcyBudW1iZXIsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHByb2NEdW1teS5waWQgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAoMTAwMCAtIDEwMCkpICsgMTAwO1xuICAgICAgICAgIHByb2NEdW1teS5wcGlkID0gcHJvY0R1bW15LnBpZCArIDk5OTk7XG5cblxuICAgICAgICAgIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtwcm9jRHVtbXkucGlkXSA9IHByb2NEdW1teTtcbiAgICAgICAgICBpZiAoIVdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHJvY0R1bW15LnBwaWRdKSB7XG4gICAgICAgICAgICBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3Byb2NEdW1teS5wcGlkXSA9IHtcbiAgICAgICAgICAgICAgY2hpbGRQcm9jZXNzZXM6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcm9jRHVtbXkucHBpZF0uY2hpbGRQcm9jZXNzZXMucHVzaChwcm9jRHVtbXkucGlkKTtcblxuXG4gICAgICAgICAgY29uc3QgY2hlY2tJZlByb2Nlc3NTaG91bGRCZURlYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5pc05pbChXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbcHJvY0R1bW15LnBpZF0pIHx8IF8uaXNOaWwoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcm9jRHVtbXkucHBpZF0pXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGYgPSBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKG1vY2tGdW4sXG4gICAgICAgICAgICAoZCkgPT4ge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJTdGRvdXRTdWIubmV4dChkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAoZCkgPT4ge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJTdGRlclN1Yi5uZXh0KGQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVEZWFkID0gY2hlY2tJZlByb2Nlc3NTaG91bGRCZURlYWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEJlRGVhZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGYudGhlbihleGl0Q29kZSA9PiB7XG4gICAgICAgICAgICBpZiAoXy5pc05pbChleGl0Q29kZSkpIHtcbiAgICAgICAgICAgICAgZXhpdENvZGUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGV4aXRTdWIubmV4dChleGl0Q29kZSk7XG4gICAgICAgICAgICAgIHN1YnNjcmlidGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU29tZXRoaW5nIHdyb25nIHdpdGggeW91ciBtb2NrIGZ1bmNpdG9uYClcbiAgICAgICAgICAgIGV4aXRTdWIubmV4dCgxKTtcbiAgICAgICAgICAgIHN1YnNjcmlidGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gcHJvY0R1bW15IGFzIGFueTtcbiAgICAgICAgfVxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgICAgICByZXR1cm4gKHZvaWQgMCk7XG4gICAgICB9LFxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICB9XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICAvKipcbiAgICogUXVpY2sgZml4IGZvciBvYmplY3QgdmFsdWVzXG4gICAqL1xuICB2YWx1ZXMob2JqOiBhbnkpIHtcbiAgICBpZiAoXy5pc09iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgdmFsdWVzLnB1c2gob2JqW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL2hlbHBlcnMudHMiXX0=
1266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1idW5kbGUtd2Vic3FsL3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUksQ0FBQyxFQUFJLElBQUksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBSyxNQUFNLGdCQUFnQixDQUFDLENBQUEsS0FBSztBQUM5SCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxLQUFLO0FBQ0wsS0FBSztBQUdMLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBeUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pGLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBTTdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQztBQUN4QixLQUFLO0FBQ0wsS0FBSztBQUVMLE1BQU0sOEJBQThCLEdBQUcsRUFBRSxDQUFDO0FBQzFDLE1BQU0sK0JBQStCLEdBQUcsRUFBRSxDQUFDO0FBbUIzQyxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFJdkMsTUFBTSxLQUFLLFlBQVk7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFD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Q0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lB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TCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFHTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7U0FFQSxDQUFBO0lBQ0gsQ0FBQztJQUlILEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFLTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUtIOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1lBQ2xCLEtBQUssTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFO2dCQUNyQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUU7b0JBQ2xELGFBQWE7b0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDdkI7YUFDRjtZQUNELE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7Q0FzWUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9EQUFvRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7ICAgXywgICBwYXRoLCAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAvKiAqLyAgICB9IGZyb20gJy4vY29yZS1pbXBvcnRzJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG4vKiAqL1xuLyogKi9cbiAgXG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEhlbHBlcnNNZXNzYWdlcyB9IGZyb20gJy4vaGVscGVycy1tZXNzYWdlcyc7XG5pbXBvcnQgeyBFeGVjdXRlT3B0aW9ucywgTWVkaWFUeXBlLCBSdW5PcHRpb25zLCBtaW1lVHlwZXMgfSBmcm9tICcuL2NvcmUtbW9kZWxzJztcbmltcG9ydCB7IGZyYW1ld29ya05hbWUgfSBmcm9tICcuL2ZyYW1ld29yay1uYW1lJztcblxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cblxuXG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBhbnk7XG5jb25zdCBlbmNvZGluZyA9ICd1dGY4Jztcbi8qICovXG4vKiAqL1xuICBcbmNvbnN0IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRCA9IHt9O1xuY29uc3QgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRCA9IHt9O1xuXG5cblxuZXhwb3J0IGludGVyZmFjZSBSdW5TeW5jT3JBc3luY09wdGlvbnMge1xuICBmdW5jdGlvbkZuOiBGdW5jdGlvbixcbiAgY29udGV4dD86IG9iamVjdCxcbiAgYXJyYXlPZlBhcmFtcz86IGFueVtdLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1hbmRPdXRwdXRPcHRpb25zIHtcbiAgYmlnZ2VyQnVmZmVyPzogYm9vbGVhbixcbiAgc2hvd1dob2xlQ29tbWFuZE5vdE9ubHlMYXN0TGluZT86IGJvb2xlYW4sXG4gIHNob3dTdGRlcj86IGJvb2xlYW47XG4gIGdhdGhlckNvbG9ycz86IGJvb2xlYW47XG4gIHNob3dFcnJvcldhcm5pbmc/OiBib29sZWFuLFxufVxuXG5cbmV4cG9ydCBjbGFzcyBIZWxwZXJzQ29yZSBleHRlbmRzIEhlbHBlcnNNZXNzYWdlcyB7XG5cblxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2VDb3JlOiBIZWxwZXJzQ29yZTtcbiAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2VDb3JlKCkge1xuICAgIGlmICghSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZSkge1xuICAgICAgSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZSA9IG5ldyBIZWxwZXJzQ29yZSgpO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyc0NvcmUuX2luc3RhbmNlQ29yZTtcbiAgfVxuXG5cblxuLyogKi9cbi8qICovXG4gIFxuICByZWFkb25seSBiaWdNYXhCdWZmZXIgPSAyMDI0ICogNTAwO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG5cbiAgbWVkaWFUeXBlRnJvbVNyYyhzcmM6IHN0cmluZyk6IE1lZGlhVHlwZSB7XG4gICAgY29uc3QgZXh0ID0gcGF0aC5leHRuYW1lKHNyYyk7XG4gICAgY29uc3QgbWVkaWEgPSBtaW1lVHlwZXNbZXh0XTtcbiAgICByZXR1cm4gXy5maXJzdChtZWRpYT8uc3BsaXQoJy8nKSk7XG4gIH1cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiBkYXRhIGlzIG5vZGVqcy9icm93c2VyIGJsb2JcbiAgICpcbiAgICogQHBhcmFtIG1heWJlQmxvYlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGlzQmxvYihtYXliZUJsb2IpOiBtYXliZUJsb2IgaXMgQmxvYiB7XG5cbiAgICByZXR1cm4gbWF5YmVCbG9iIGluc3RhbmNlb2YgQmxvYjsgLy8gfHwgdG9TdHJpbmcuY2FsbChtYXliZUJsb2IpID09PSAnW29iamVjdCBCbG9iXSc7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGRhdGEgaXMgbm9kZWpzIGJ1ZmZlclxuICAgKlxuICAgKiBAcGFyYW0gbWF5YmVOb2RlanNCdWZmZXJcbiAgICogQHJldHVybnNcbiAgICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgcHVibGljIHJlbW92ZVNsYXNoQXRFbmQoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzID0gcz8uZW5kc1dpdGgoYC9gKSA/IHMuc2xpY2UoMCwgcy5sZW5ndGggLSAxKSA6IHM7XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuXG5cbiAgcHVibGljIHJlbW92ZVNsYXNoQXRCZWdpbihzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHMgPSBzPy5zdGFydHNXaXRoKGAvYCkgPyBzLnNsaWNlKDEpIDogcztcbiAgICByZXR1cm4gcztcbiAgfVxuXG5cblxuICAvKipcbiAgICogc3RyaW5naWZ5IHRvIHByZXR0eSBqc29uIHN0cmluZ1xuICAgKi9cbiAgcHVibGljIHN0cmluZ2lmeShpbnB1dE9iamVjdDogYW55KTogc3RyaW5nIHtcblxuXG5cblxuXG5cblxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShpbnB1dE9iamVjdCwgbnVsbCwgMik7XG4gIH1cblxuXG5cbiAgcHVibGljIGFzeW5jIHJ1blN5bmNPckFzeW5jPEZVTkNUSU9OX1JFVFVSTl9UWVBFID0gYW55PihcbiAgICBmbk9yT3B0aW9uczogRnVuY3Rpb24gfCBbc3RyaW5nLCBvYmplY3RdIHwgUnVuU3luY09yQXN5bmNPcHRpb25zLFxuICAgIC4uLmZpcnN0QXJnOiBhbnlbXVxuICApOiBQcm9taXNlPEZVTkNUSU9OX1JFVFVSTl9UWVBFPiB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoZm5Pck9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gdm9pZCAwIGFzIGFueTtcbiAgICB9XG4gICAgbGV0IHByb21pc09yVmFsdWU6IGFueTtcbiAgICBjb25zdCBvcHRpb25zTW9kZSA9IF8uaXNPYmplY3QoZm5Pck9wdGlvbnMpXG4gICAgICAmJiAhXy5pc0FycmF5KGZuT3JPcHRpb25zKVxuICAgICAgJiYgIV8uaXNGdW5jdGlvbihmbk9yT3B0aW9ucylcbiAgICAgICYmICFfLmlzTmlsKGZuT3JPcHRpb25zKVxuICAgICAgO1xuXG4gICAgaWYgKG9wdGlvbnNNb2RlKSB7XG4gICAgICBjb25zdCB7IGZ1bmN0aW9uRm4sIGNvbnRleHQsIGFycmF5T2ZQYXJhbXMgfSA9IGZuT3JPcHRpb25zIGFzIFJ1blN5bmNPckFzeW5jT3B0aW9ucztcbiAgICAgIHByb21pc09yVmFsdWUgPSBmdW5jdGlvbkZuLmFwcGx5KGNvbnRleHQsIGFycmF5T2ZQYXJhbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBwcm9taXNPclZhbHVlID0gXy5pc0FycmF5KGZuT3JPcHRpb25zKSA/IGZuT3JPcHRpb25zWzFdW2ZuT3JPcHRpb25zWzBdXSguLi5maXJzdEFyZykgOiBmbk9yT3B0aW9ucyguLi5maXJzdEFyZyk7XG4gICAgfVxuXG5cbiAgICBpZiAocHJvbWlzT3JWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcblxuICAgICAgcHJvbWlzT3JWYWx1ZSA9IFByb21pc2UucmVzb2x2ZShwcm9taXNPclZhbHVlKVxuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNPclZhbHVlO1xuICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgLyoqXG4gICAqIHN5bWxpbmsgbWF5IGhhdmUgZXhpc3RlZCBvciB1bmV4aXN0ZWQgZGVzdGlhbnRpb24gdXJsXG4gICAqIEBwYXJhbSBkZXN0VXJsIE1cbiAgICovXG4gIHB1YmxpYyBpc1N5bWxpbmtUaGF0TWF0Y2hlc1VybChcbiAgICBwb3NzaWJsZVN5bWxpbms6IHN0cmluZyxcbiAgICBkZXN0VXJsOiBzdHJpbmcsXG4gICAgYWJzb2x1dGVGaWxlTWF0Y2ggPSBmYWxzZSxcbiAgKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgaXNTeW1saW5rRmlsZUV4aXRlZE9yVW5leGlzdGVkKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBJZiBzeW1ib2xuayBsaW5rIHRoYXQgdGFyZ2V0IGZpbGUgZG9lcyBub3QgZXhpdHNcbiAgICovXG4gIGlzVW5leGlzdGVkTGluayhmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAcGFyYW0gZXhpc3RlZExpbmsgY2hlY2sgaWYgc291cmNlIG9mIGxpbmsgZXhpc3RzXG4gICAqL1xuICBpc0V4aXN0ZWRTeW1saW5rKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gIHB1YmxpYyBleGlzdHMoZm9sZGVyT3JGaWxlUGF0aDogc3RyaW5nIHwgc3RyaW5nW11cblxuICApIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiB0aGlzIGlzIEhBQ0sgZm9yIHJ1bm5pbmcgcHJvY2VzZXNzIGluc2lkZSBwcm9jZXNzZXNcbiAgICovXG4gIHB1YmxpYyBfZml4Q29tbWFuZChjb21tYW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChcbiAgICAgIChjb21tYW5kLnN0YXJ0c1dpdGgoJ3RucCAnKSB8fCBjb21tYW5kLnN0YXJ0c1dpdGgoJ2ZpcmVkZXYgJykpIC8vIFRPRE8gZXZlcnkgY2xpIHByb2plY3RzIGhlcmUgdGhhdCB1c2VzIHJ1biBhbmQgbmVlZCB0byBraWxsIHByb2Nlc3MgZWFzbHkhXG4gICAgICAmJlxuICAgICAgKGNvbW1hbmQuc2VhcmNoKCctc3Bpbm5lcj1mYWxzZScpID09PSAtMSkgJiYgKGNvbW1hbmQuc2VhcmNoKCctc3Bpbm5lcj1vZmYnKSA9PT0gLTEpKSB7XG4gICAgICBjb21tYW5kID0gYCR7Y29tbWFuZH0gLXNwaW5uZXI9ZmFsc2VgXG4gICAgfVxuXG4gICAgaWYgKGdsb2JhbC5za2lwQ29yZUNoZWNrICYmIChjb21tYW5kLnN0YXJ0c1dpdGgoJ3RucCAnKSB8fCBjb21tYW5kLnN0YXJ0c1dpdGgoJ2ZpcmVkZXYgJykpKSB7XG4gICAgICBjb21tYW5kID0gYCR7Y29tbWFuZH0gLS1za2lwQ29yZUNoZWNrYFxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZFxuICB9XG5cblxuXG4gIHB1YmxpYyBjb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuXG4gICAgY29tbWFuZCA9IEhlbHBlcnMuX2ZpeENvbW1hbmQoY29tbWFuZCk7XG5cbiAgICByZXR1cm4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgfVxuICB9XG5cblxuXG4gIHB1YmxpYyB3YWl0KHNlY29uZDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICByZXNvbHZlKHZvaWQgMCk7XG4gICAgICB9LCBzZWNvbmQgKiAxMDAwKTtcbiAgICB9KVxuICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgcHVibGljIGtpbGxQcm9jZXNzKGJ5UGlkOiBudW1iZXIpIHtcbi8qICovXG4vKiAqL1xuICBcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgICBpZiAoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUElEW2J5UGlkXSkge1xuICAgICAgY29uc3QgcHBpZCA9IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtieVBpZF0ucHBpZDtcbiAgICAgIGlmIChXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3BwaWRdKSB7XG4gICAgICAgIGNvbnN0IGFsbENoaWxkcyA9IFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHBpZF0uY2hpbGRQcm9jZXNzZXMgYXMgbnVtYmVyW107XG4gICAgICAgIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHBpZF0uY2hpbGRQcm9jZXNzZXMgPSBhbGxDaGlsZHMuZmlsdGVyKHAgPT4gcCAhPT0gYnlQaWQpO1xuICAgICAgfVxuICAgICAgZGVsZXRlIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtieVBpZF07XG4gICAgfVxuXG4gICAgaWYgKFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbYnlQaWRdKSB7XG4gICAgICBjb25zdCBjaGlsZHMgPSBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW2J5UGlkXS5jaGlsZFByb2Nlc3NlcyBhcyBudW1iZXJbXTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjaGlsZHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUGlkID0gY2hpbGRzW2luZGV4XTtcbiAgICAgICAgZGVsZXRlIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtjaGlsZFBpZF07XG4gICAgICB9XG4gICAgICBkZWxldGUgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtieVBpZF07XG4gICAgfVxuXG4gIH1cblxuXG5cbiAgcHVibGljIHJ1bihjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFJ1bk9wdGlvbnMpIHtcbiAgICBjb21tYW5kID0gSGVscGVycy5fZml4Q29tbWFuZChjb21tYW5kKTtcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4ge1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cbiAgICAgIGFzeW5jKGRldGFjaCA9IGZhbHNlLFxuXG4gICAgICAgIG1vY2tGdW4/OiAoc3Rkb3V0Q2FsbGJhY2s6IChkYXRhRm9yU3Rkb3V0OiBhbnkpID0+IGFueSwgc3RkRXJyY0NhbGxiYWNrOiAoZGF0YUZvclN0ZGVyOiBhbnkpID0+IGFueSwgc2hvdWxkUHJvY2VzQmVEZWFkPzogKCkgPT4gYm9vbGVhbikgPT4gUHJvbWlzZTxudW1iZXI+IHwgbnVtYmVyXG5cbiAgICAgIClcbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHtcblxuXG4gICAgICAgIGlmIChtb2NrRnVuKSB7XG4gICAgICAgICAgY29uc3Qgc3ViU3Rkb3V0U3ViID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgICBjb25zdCBzdWJTdGRlclN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgICAgY29uc3QgZXhpdFN1YiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgICAgICAgY29uc3Qgc3Vic2NyaWJ0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuXG4gICAgICAgICAgY29uc3QgcHJvY0R1bW15ID0ge1xuICAgICAgICAgICAgc3Rkb3V0OiB7XG4gICAgICAgICAgICAgIG9uKGFjdGlvbjogJ2RhdGEnLCBzdGRvdXRDYWxsYmFjazogYW55KSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSAnZGF0YScpIHtcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmlidGlvbnMucHVzaChzdWJTdGRvdXRTdWIuc3Vic2NyaWJlKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGRvdXRDYWxsYmFjayhkKTtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0ZGVycjoge1xuICAgICAgICAgICAgICBvbihhY3Rpb246ICdkYXRhJywgc3Rkb3V0Q2FsbGJhY2s6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gJ2RhdGEnKSB7XG4gICAgICAgICAgICAgICAgICBzdWJzY3JpYnRpb25zLnB1c2goc3ViU3RkZXJTdWIuc3Vic2NyaWJlKGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdGRvdXRDYWxsYmFjayhkKTtcbiAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uKGFjdGlvbjogJ2V4aXQnLCBleGl0RnVuOiBhbnkpIHtcbiAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSAnZXhpdCcpIHtcbiAgICAgICAgICAgICAgICBzdWJzY3JpYnRpb25zLnB1c2goZXhpdFN1Yi5zdWJzY3JpYmUoZCA9PiB7XG4gICAgICAgICAgICAgICAgICBleGl0RnVuKGQpO1xuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBwcGlkOiB2b2lkIDAgYXMgbnVtYmVyLCAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBwaWQ6IHZvaWQgMCBhcyBudW1iZXIsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHByb2NEdW1teS5waWQgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAoMTAwMCAtIDEwMCkpICsgMTAwO1xuICAgICAgICAgIHByb2NEdW1teS5wcGlkID0gcHJvY0R1bW15LnBpZCArIDk5OTk7XG5cblxuICAgICAgICAgIFdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BJRFtwcm9jRHVtbXkucGlkXSA9IHByb2NEdW1teTtcbiAgICAgICAgICBpZiAoIVdFQlNRTF9QUk9DX01PQ0tfUFJPQ0VTU0VTX1BQSURbcHJvY0R1bW15LnBwaWRdKSB7XG4gICAgICAgICAgICBXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QUElEW3Byb2NEdW1teS5wcGlkXSA9IHtcbiAgICAgICAgICAgICAgY2hpbGRQcm9jZXNzZXM6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcm9jRHVtbXkucHBpZF0uY2hpbGRQcm9jZXNzZXMucHVzaChwcm9jRHVtbXkucGlkKTtcblxuXG4gICAgICAgICAgY29uc3QgY2hlY2tJZlByb2Nlc3NTaG91bGRCZURlYWQgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gXy5pc05pbChXRUJTUUxfUFJPQ19NT0NLX1BST0NFU1NFU19QSURbcHJvY0R1bW15LnBpZF0pIHx8IF8uaXNOaWwoV0VCU1FMX1BST0NfTU9DS19QUk9DRVNTRVNfUFBJRFtwcm9jRHVtbXkucHBpZF0pXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGYgPSBIZWxwZXJzLnJ1blN5bmNPckFzeW5jKG1vY2tGdW4sXG4gICAgICAgICAgICAoZCkgPT4ge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJTdGRvdXRTdWIubmV4dChkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCAoZCkgPT4ge1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzdWJTdGRlclN1Yi5uZXh0KGQpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQmVEZWFkID0gY2hlY2tJZlByb2Nlc3NTaG91bGRCZURlYWQoKTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEJlRGVhZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIGYudGhlbihleGl0Q29kZSA9PiB7XG4gICAgICAgICAgICBpZiAoXy5pc05pbChleGl0Q29kZSkpIHtcbiAgICAgICAgICAgICAgZXhpdENvZGUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGV4aXRTdWIubmV4dChleGl0Q29kZSk7XG4gICAgICAgICAgICAgIHN1YnNjcmlidGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU29tZXRoaW5nIHdyb25nIHdpdGggeW91ciBtb2NrIGZ1bmNpdG9uYClcbiAgICAgICAgICAgIGV4aXRTdWIubmV4dCgxKTtcbiAgICAgICAgICAgIHN1YnNjcmlidGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm4gcHJvY0R1bW15IGFzIGFueTtcbiAgICAgICAgfVxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICAgICAgcmV0dXJuICh2b2lkIDApO1xuICAgICAgfSxcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICB9XG4gIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gIC8qKlxuICAgKiBRdWljayBmaXggZm9yIG9iamVjdCB2YWx1ZXNcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyB2YWx1ZXMob2JqOiBhbnkpIHtcbiAgICBpZiAoXy5pc09iamVjdChvYmopICYmICFBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHZhbHVlcy5wdXNoKG9ialtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi9oZWxwZXJzLnRzIl19
@@ -4,8 +4,9 @@ export * from './core-models';
4
4
  import { HelpersCore as Base } from './helpers';
5
5
  export * from './core-config';
6
6
  export * from './progress-data';
7
+ export * from './utils';
7
8
  export { HelpersCore as CoreHelpers } from './helpers';
8
9
  export let Helpers = Base.InstanceCore;
9
10
  ;
10
11
  ({}); // @--end-of-file-for-module=tnp-core lib/index.ts
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxXQUFXLElBQUksV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0FBS3RDLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0RBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mcmFtZXdvcmstbmFtZSc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUtbW9kZWxzJztcbmltcG9ydCB7IEhlbHBlcnNDb3JlIGFzIEJhc2UgfSBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9jb3JlLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3Byb2dyZXNzLWRhdGEnO1xuZXhwb3J0IHsgSGVscGVyc0NvcmUgYXMgQ29yZUhlbHBlcnMgfSBmcm9tICcuL2hlbHBlcnMnO1xuZXhwb3J0IGxldCBIZWxwZXJzID0gQmFzZS5JbnN0YW5jZUNvcmU7XG5cblxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtY29yZSBsaWIvaW5kZXgudHMiXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItYnVuZGxlLXdlYnNxbC90bnAtY29yZS9wcm9qZWN0cy90bnAtY29yZS9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixPQUFPLEVBQUUsV0FBVyxJQUFJLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoRCxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLElBQUksV0FBVyxFQUF3QixNQUFNLFdBQVcsQ0FBQztBQUM3RSxNQUFNLENBQUMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztBQUt0QyxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5leHBvcnQgKiBmcm9tICcuL2ZyYW1ld29yay1uYW1lJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS1pbXBvcnRzJztcbmV4cG9ydCAqIGZyb20gJy4vY29yZS1tb2RlbHMnO1xuaW1wb3J0IHsgSGVscGVyc0NvcmUgYXMgQmFzZSB9IGZyb20gJy4vaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2NvcmUtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZ3Jlc3MtZGF0YSc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IEhlbHBlcnNDb3JlIGFzIENvcmVIZWxwZXJzLCBDb21tYW5kT3V0cHV0T3B0aW9ucyB9IGZyb20gJy4vaGVscGVycyc7XG5leHBvcnQgbGV0IEhlbHBlcnMgPSBCYXNlLkluc3RhbmNlQ29yZTtcblxuXG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1jb3JlIGxpYi9pbmRleC50cyJdfQ==
@@ -0,0 +1,42 @@
1
+ const allObj = {
2
+ black(a) {
3
+ console.log(a);
4
+ },
5
+ gray(a) {
6
+ console.log(a);
7
+ },
8
+ red(a) {
9
+ console.log(a);
10
+ },
11
+ green(a) {
12
+ console.log(a);
13
+ },
14
+ italic(a) {
15
+ console.log(a);
16
+ },
17
+ magenta(a) {
18
+ console.log(a);
19
+ },
20
+ bold(a) {
21
+ console.log(a);
22
+ },
23
+ underline(a) {
24
+ console.log(a);
25
+ },
26
+ };
27
+ const map = new Map();
28
+ const all = Object.keys(allObj).map(key => {
29
+ map.set(allObj[key], key);
30
+ return allObj[key];
31
+ });
32
+ for (let i = 0; i < all.length; i++) {
33
+ const e1 = all[i];
34
+ for (let j = 0; j < all.length; j++) {
35
+ const e2 = all[j]; // @ts-ignore
36
+ e1[map.get(e2)] = e2;
37
+ }
38
+ }
39
+ export const chalk = allObj;
40
+ ;
41
+ ({}); // @--end-of-file-for-module=tnp-core lib/node-chalk-mock.ts
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jaGFsay1tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWJ1bmRsZS13ZWJzcWwvdG5wLWNvcmUvcHJvamVjdHMvdG5wLWNvcmUvc3JjL2xpYi9ub2RlLWNoYWxrLW1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsTUFBTSxNQUFNLEdBQUc7SUFDYixLQUFLLENBQUMsQ0FBQztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDO1FBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBQ0QsR0FBRyxDQUFDLENBQUM7UUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxLQUFLLENBQUMsQ0FBQztRQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELE1BQU0sQ0FBQyxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7UUFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQztRQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUNELFNBQVMsQ0FBQyxDQUFDO1FBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0FBRXhDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ3hDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFBO0FBRUYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBYSxDQUFDO0lBQzlCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQWEsQ0FBQyxDQUFDLGFBQWE7UUFDNUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDdEI7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBVSxNQUFhLENBQUM7QUFHekMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw0REFBNEQiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBDaGFsayB9IGZyb20gJ2NoYWxrJztcblxuXG5cblxuXG5jb25zdCBhbGxPYmogPSB7XG4gIGJsYWNrKGEpIHtcbiAgICBjb25zb2xlLmxvZyhhKTtcbiAgfSxcbiAgZ3JheShhKSB7XG4gICAgY29uc29sZS5sb2coYSk7XG4gIH0sXG4gIHJlZChhKSB7XG4gICAgY29uc29sZS5sb2coYSk7XG4gIH0sXG4gIGdyZWVuKGEpIHtcbiAgICBjb25zb2xlLmxvZyhhKTtcbiAgfSxcbiAgaXRhbGljKGEpIHtcbiAgICBjb25zb2xlLmxvZyhhKTtcbiAgfSxcbiAgbWFnZW50YShhKSB7XG4gICAgY29uc29sZS5sb2coYSk7XG4gIH0sXG4gIGJvbGQoYSkge1xuICAgIGNvbnNvbGUubG9nKGEpO1xuICB9LFxuICB1bmRlcmxpbmUoYSkge1xuICAgIGNvbnNvbGUubG9nKGEpO1xuICB9LFxufTtcblxuY29uc3QgbWFwID0gbmV3IE1hcDxGdW5jdGlvbiwgc3RyaW5nPigpO1xuXG5jb25zdCBhbGwgPSBPYmplY3Qua2V5cyhhbGxPYmopLm1hcChrZXkgPT4ge1xuICBtYXAuc2V0KGFsbE9ialtrZXldLCBrZXkpO1xuICByZXR1cm4gYWxsT2JqW2tleV07XG59KVxuXG5mb3IgKGxldCBpID0gMDsgaSA8IGFsbC5sZW5ndGg7IGkrKykge1xuICBjb25zdCBlMSA9IGFsbFtpXSBhcyBGdW5jdGlvbjtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBhbGwubGVuZ3RoOyBqKyspIHtcbiAgICBjb25zdCBlMiA9IGFsbFtqXSBhcyBGdW5jdGlvbjsgLy8gQHRzLWlnbm9yZVxuICAgIGUxW21hcC5nZXQoZTIpXSA9IGUyO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjaGFsazogQ2hhbGsgPSBhbGxPYmogYXMgYW55O1xuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtY29yZSBsaWIvbm9kZS1jaGFsay1tb2NrLnRzIl19