tnp-helpers 16.444.20 → 16.444.22

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 (114) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/esm2022/lib/base/base-git.mjs +85 -2
  3. package/browser/esm2022/lib/base/base-library-build.mjs +4 -2
  4. package/browser/esm2022/lib/base/base-npm-helpers.mjs +168 -15
  5. package/browser/esm2022/lib/base/base-project.mjs +14 -1
  6. package/browser/esm2022/lib/base/base-release-process.mjs +582 -0
  7. package/browser/esm2022/lib/base/base-vscode.mjs +10 -1
  8. package/browser/esm2022/lib/base/commit-data.mjs +116 -44
  9. package/browser/esm2022/lib/base/core-project.mjs +1 -1
  10. package/browser/esm2022/lib/base/index.mjs +3 -1
  11. package/browser/esm2022/lib/models.mjs +1 -1
  12. package/browser/fesm2022/tnp-helpers.mjs +1016 -113
  13. package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
  14. package/browser/lib/base/base-git.d.ts +22 -4
  15. package/browser/lib/base/base-library-build.d.ts +1 -1
  16. package/browser/lib/base/base-npm-helpers.d.ts +28 -1
  17. package/browser/lib/base/base-project.d.ts +7 -0
  18. package/browser/lib/base/base-release-process.d.ts +70 -0
  19. package/browser/lib/base/commit-data.d.ts +18 -13
  20. package/browser/lib/base/core-project.d.ts +9 -0
  21. package/browser/lib/base/index.d.ts +1 -0
  22. package/browser/lib/models.d.ts +11 -1
  23. package/client/esm2022/lib/base/base-git.mjs +85 -2
  24. package/client/esm2022/lib/base/base-library-build.mjs +4 -2
  25. package/client/esm2022/lib/base/base-npm-helpers.mjs +168 -15
  26. package/client/esm2022/lib/base/base-project.mjs +14 -1
  27. package/client/esm2022/lib/base/base-release-process.mjs +582 -0
  28. package/client/esm2022/lib/base/base-vscode.mjs +10 -1
  29. package/client/esm2022/lib/base/commit-data.mjs +116 -44
  30. package/client/esm2022/lib/base/core-project.mjs +1 -1
  31. package/client/esm2022/lib/base/index.mjs +3 -1
  32. package/client/esm2022/lib/models.mjs +1 -1
  33. package/client/fesm2022/tnp-helpers.mjs +1016 -113
  34. package/client/fesm2022/tnp-helpers.mjs.map +1 -1
  35. package/client/lib/base/base-git.d.ts +22 -4
  36. package/client/lib/base/base-library-build.d.ts +1 -1
  37. package/client/lib/base/base-npm-helpers.d.ts +28 -1
  38. package/client/lib/base/base-project.d.ts +7 -0
  39. package/client/lib/base/base-release-process.d.ts +70 -0
  40. package/client/lib/base/commit-data.d.ts +18 -13
  41. package/client/lib/base/core-project.d.ts +9 -0
  42. package/client/lib/base/index.d.ts +1 -0
  43. package/client/lib/models.d.ts +11 -1
  44. package/client/package.json +32 -31
  45. package/lib/base/base-command-line.backend.d.ts +4 -0
  46. package/lib/base/base-command-line.backend.js +113 -1
  47. package/lib/base/base-command-line.backend.js.map +1 -1
  48. package/lib/base/base-git.d.ts +19 -1
  49. package/lib/base/base-git.js +156 -41
  50. package/lib/base/base-git.js.map +1 -1
  51. package/lib/base/base-library-build.d.ts +1 -1
  52. package/lib/base/base-library-build.js +33 -31
  53. package/lib/base/base-library-build.js.map +1 -1
  54. package/lib/base/base-npm-helpers.d.ts +30 -2
  55. package/lib/base/base-npm-helpers.js +212 -17
  56. package/lib/base/base-npm-helpers.js.map +1 -1
  57. package/lib/base/base-project.d.ts +7 -0
  58. package/lib/base/base-project.js +26 -2
  59. package/lib/base/base-project.js.map +1 -1
  60. package/lib/base/base-release-process.d.ts +69 -0
  61. package/lib/base/base-release-process.js +894 -0
  62. package/lib/base/base-release-process.js.map +1 -0
  63. package/lib/base/base-vscode.js +9 -0
  64. package/lib/base/base-vscode.js.map +1 -1
  65. package/lib/base/commit-data.d.ts +17 -12
  66. package/lib/base/commit-data.js +138 -78
  67. package/lib/base/commit-data.js.map +1 -1
  68. package/lib/base/core-project.d.ts +9 -0
  69. package/lib/base/core-project.js.map +1 -1
  70. package/lib/base/index.d.ts +2 -0
  71. package/lib/base/index.js +2 -0
  72. package/lib/base/index.js.map +1 -1
  73. package/lib/base/translate.d.ts +227 -1
  74. package/lib/base/translate.js +566 -54
  75. package/lib/base/translate.js.map +1 -1
  76. package/lib/helpers/for-backend/helpers-console-gui.d.ts +2 -1
  77. package/lib/helpers/for-backend/helpers-console-gui.js +3 -2
  78. package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
  79. package/lib/helpers/for-backend/helpers-dependencies.backend.js +1 -2
  80. package/lib/helpers/for-backend/helpers-dependencies.backend.js.map +1 -1
  81. package/lib/helpers/for-backend/helpers-git.backend.d.ts +29 -1
  82. package/lib/helpers/for-backend/helpers-git.backend.js +204 -15
  83. package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
  84. package/lib/helpers/for-backend/helpers-process.backend.d.ts +10 -8
  85. package/lib/helpers/for-backend/helpers-process.backend.js +56 -56
  86. package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
  87. package/lib/helpers/for-browser/angular.helper.js +3 -3
  88. package/lib/models.d.ts +11 -1
  89. package/lib/old/base-component.js +3 -3
  90. package/lib/old/base-formly-component.js +3 -3
  91. package/lib/old/dual-component-ctrl.js +3 -3
  92. package/package.json +4 -4
  93. package/tmp-environment.json +36 -35
  94. package/websql/esm2022/lib/base/base-git.mjs +85 -2
  95. package/websql/esm2022/lib/base/base-library-build.mjs +4 -2
  96. package/websql/esm2022/lib/base/base-npm-helpers.mjs +168 -15
  97. package/websql/esm2022/lib/base/base-project.mjs +16 -3
  98. package/websql/esm2022/lib/base/base-release-process.mjs +582 -0
  99. package/websql/esm2022/lib/base/base-vscode.mjs +10 -1
  100. package/websql/esm2022/lib/base/commit-data.mjs +116 -44
  101. package/websql/esm2022/lib/base/core-project.mjs +1 -1
  102. package/websql/esm2022/lib/base/index.mjs +3 -1
  103. package/websql/esm2022/lib/models.mjs +1 -1
  104. package/websql/fesm2022/tnp-helpers.mjs +1018 -115
  105. package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
  106. package/websql/lib/base/base-git.d.ts +22 -4
  107. package/websql/lib/base/base-library-build.d.ts +1 -1
  108. package/websql/lib/base/base-npm-helpers.d.ts +28 -1
  109. package/websql/lib/base/base-project.d.ts +7 -0
  110. package/websql/lib/base/base-release-process.d.ts +70 -0
  111. package/websql/lib/base/commit-data.d.ts +18 -13
  112. package/websql/lib/base/core-project.d.ts +9 -0
  113. package/websql/lib/base/index.d.ts +1 -0
  114. package/websql/lib/models.d.ts +11 -1
@@ -0,0 +1,582 @@
1
+ /* */
2
+ /* */
3
+ import { Helpers } from '../index';
4
+ import { BaseFeatureForProject } from './base-feature-for-project';
5
+ import { chalk } from 'tnp-core/browser';
6
+ export class BaseReleaseProcess extends BaseFeatureForProject {
7
+ constructor() {
8
+ super(...arguments);
9
+ /**
10
+ * Automatic release process of patch plus one version
11
+ */
12
+ this.automaticRelease = false;
13
+ this.commitsForChangelog = [];
14
+ }
15
+ getReleaseWords() {
16
+ return ['release'];
17
+ }
18
+ async startRelease(options) {
19
+ while (true) {
20
+ Helpers.clearConsole();
21
+ this.newVersion = options?.newVersion;
22
+ this.automaticRelease = options?.automaticRelease || false;
23
+ await this.resetReleaseFiles();
24
+ this.project.npmHelpers.reloadPackageJsonInMemory();
25
+ this.lastChangesSummary = await this.generateLastChangesSummary();
26
+ console.log(`${chalk.bold.underline(`Release process for ${this.project.name}`)}:\n` +
27
+ (await this.lastChangesSummary));
28
+ this.type = await this.selectReleaseType();
29
+ await this.confirmNewVersion();
30
+ this.commitsForChangelog = await this.selectChangelogCommits();
31
+ await this.updateChangeLogFromCommits();
32
+ await this.bumpNewVersionEverywhere();
33
+ await this.buildAllLibraries();
34
+ if (!(await this.testBeforePublish())) {
35
+ continue;
36
+ }
37
+ if (!(await this.publishToNpm())) {
38
+ continue;
39
+ }
40
+ await this.reinstallNodeModules();
41
+ if (!(await this.testAfterPublish())) {
42
+ continue;
43
+ }
44
+ await this.commitAndPush();
45
+ }
46
+ }
47
+ async reinstallNodeModules() {
48
+ Helpers.taskStarted(`Reinstalling node_modules to recreate package-lock.json`);
49
+ this.project.npmHelpers.reinstalNodeModules();
50
+ Helpers.taskDone(`Reinstalling node_modules to recreate package-lock.json`);
51
+ }
52
+ async selectChangelogCommits() {
53
+ /* */
54
+ /* */
55
+ /* */
56
+ /* */
57
+ /* */
58
+ /* */
59
+ /* */
60
+ /* */
61
+ /* */
62
+ /* */
63
+ /* */
64
+ /* */
65
+ /* */
66
+ /* */
67
+ /* */
68
+ /* */
69
+ /* */
70
+ /* */
71
+ /* */
72
+ /* */
73
+ /* */
74
+ /* */
75
+ /* */
76
+ /* */
77
+ /* */
78
+ return (void 0);
79
+ }
80
+ async getCommitsUpToReleaseCommit() {
81
+ /* */
82
+ /* */
83
+ /* */
84
+ /* */
85
+ /* */
86
+ /* */
87
+ /* */
88
+ /* */
89
+ /* */
90
+ /* */
91
+ /* */
92
+ /* */
93
+ /* */
94
+ return (void 0);
95
+ }
96
+ async publishToNpm() {
97
+ /* */
98
+ /* */
99
+ /* */
100
+ /* */
101
+ /* */
102
+ /* */
103
+ /* */
104
+ /* */
105
+ /* */
106
+ /* */
107
+ /* */
108
+ /* */
109
+ /* */
110
+ /* */
111
+ /* */
112
+ /* */
113
+ /* */
114
+ /* */
115
+ /* */
116
+ return (void 0);
117
+ }
118
+ async testAfterPublish() {
119
+ /* */
120
+ /* */
121
+ /* */
122
+ /* */
123
+ /* */
124
+ /* */
125
+ /* */
126
+ /* */
127
+ /* */
128
+ /* */
129
+ /* */
130
+ /* */
131
+ /* */
132
+ /* */
133
+ /* */
134
+ /* */
135
+ return (void 0);
136
+ }
137
+ async testBeforePublish() {
138
+ /* */
139
+ /* */
140
+ /* */
141
+ /* */
142
+ /* */
143
+ /* */
144
+ /* */
145
+ /* */
146
+ /* */
147
+ /* */
148
+ /* */
149
+ /* */
150
+ /* */
151
+ /* */
152
+ /* */
153
+ /* */
154
+ return (void 0);
155
+ }
156
+ async commitAndPush() {
157
+ /* */
158
+ /* */
159
+ /* */
160
+ /* */
161
+ /* */
162
+ /* */
163
+ /* */
164
+ /* */
165
+ /* */
166
+ /* */
167
+ /* */
168
+ /* */
169
+ /* */
170
+ /* */
171
+ /* */
172
+ /* */
173
+ /* */
174
+ /* */
175
+ return (void 0);
176
+ }
177
+ releaseCommitTemplate() {
178
+ return `Release v${this.newVersion} + changelog.md update`;
179
+ }
180
+ async testLibraries() {
181
+ try {
182
+ this.project.run('npm run test', { output: true }).sync();
183
+ return true;
184
+ }
185
+ catch (error) {
186
+ Helpers.info(`Test failed, you can run test manually`);
187
+ return false;
188
+ }
189
+ }
190
+ async buildAllLibraries() {
191
+ await this.project.libraryBuild.buildLibraries({
192
+ watch: false,
193
+ releaseBuild: true,
194
+ buildType: 'angular',
195
+ });
196
+ }
197
+ async resetReleaseFiles() {
198
+ /* */
199
+ /* */
200
+ /* */
201
+ /* */
202
+ /* */
203
+ /* */
204
+ return (void 0);
205
+ }
206
+ get toBumpProjects() {
207
+ const toBumpProjects = [
208
+ this.project,
209
+ ...this.project.libraryBuild.libraries,
210
+ ];
211
+ return toBumpProjects;
212
+ }
213
+ async bumpNewVersionEverywhere() {
214
+ /* */
215
+ /* */
216
+ /* */
217
+ /* */
218
+ /* */
219
+ /* */
220
+ /* */
221
+ /* */
222
+ /* */
223
+ /* */
224
+ /* */
225
+ /* */
226
+ /* */
227
+ /* */
228
+ /* */
229
+ return (void 0);
230
+ }
231
+ async confirmNewVersion() {
232
+ /* */
233
+ /* */
234
+ /* */
235
+ /* */
236
+ /* */
237
+ /* */
238
+ /* */
239
+ /* */
240
+ /* */
241
+ /* */
242
+ /* */
243
+ /* */
244
+ /* */
245
+ /* */
246
+ /* */
247
+ /* */
248
+ /* */
249
+ /* */
250
+ /* */
251
+ /* */
252
+ /* */
253
+ /* */
254
+ /* */
255
+ /* */
256
+ /* */
257
+ /* */
258
+ /* */
259
+ /* */
260
+ /* */
261
+ /* */
262
+ /* */
263
+ /* */
264
+ /* */
265
+ /* */
266
+ /* */
267
+ /* */
268
+ /* */
269
+ /* */
270
+ /* */
271
+ /* */
272
+ return (void 0);
273
+ }
274
+ async selectReleaseType() {
275
+ /* */
276
+ /* */
277
+ /* */
278
+ /* */
279
+ /* */
280
+ /* */
281
+ /* */
282
+ /* */
283
+ /* */
284
+ /* */
285
+ /* */
286
+ /* */
287
+ /* */
288
+ /* */
289
+ /* */
290
+ /* */
291
+ /* */
292
+ /* */
293
+ /* */
294
+ /* */
295
+ /* */
296
+ /* */
297
+ /* */
298
+ return (void 0);
299
+ }
300
+ async commitMessageInChangelogTransformFn(message) {
301
+ return message;
302
+ }
303
+ async getChangelogContentToAppend(askForEveryItem) {
304
+ /* */
305
+ /* */
306
+ /* */
307
+ /* */
308
+ /* */
309
+ /* */
310
+ /* */
311
+ /* */
312
+ /* */
313
+ /* */
314
+ /* */
315
+ /* */
316
+ /* */
317
+ /* */
318
+ /* */
319
+ /* */
320
+ /* */
321
+ /* */
322
+ return (void 0);
323
+ }
324
+ /**
325
+ * TODO extend this to all commits from last release
326
+ */
327
+ async updateChangeLogFromCommits() {
328
+ /* */
329
+ /* */
330
+ /* */
331
+ /* */
332
+ /* */
333
+ /* */
334
+ /* */
335
+ /* */
336
+ /* */
337
+ /* */
338
+ /* */
339
+ /* */
340
+ /* */
341
+ /* */
342
+ /* */
343
+ /* */
344
+ /* */
345
+ /* */
346
+ /* */
347
+ /* */
348
+ /* */
349
+ /* */
350
+ /* */
351
+ /* */
352
+ /* */
353
+ return (void 0);
354
+ }
355
+ async extractChangedLibrariesInCommit(hashOrIndex) {
356
+ /* */
357
+ /* */
358
+ /* */
359
+ /* */
360
+ /* */
361
+ /* */
362
+ /* */
363
+ /* */
364
+ /* */
365
+ /* */
366
+ /* */
367
+ /* */
368
+ /* */
369
+ /* */
370
+ /* */
371
+ /* */
372
+ return (void 0);
373
+ }
374
+ async changelogItemTemplate(hashOrIndex, confirmEveryItem = false) {
375
+ /* */
376
+ /* */
377
+ /* */
378
+ /* */
379
+ /* */
380
+ /* */
381
+ /* */
382
+ /* */
383
+ /* */
384
+ /* */
385
+ /* */
386
+ /* */
387
+ /* */
388
+ /* */
389
+ /* */
390
+ /* */
391
+ /* */
392
+ /* */
393
+ /* */
394
+ /* */
395
+ /* */
396
+ /* */
397
+ /* */
398
+ /* */
399
+ /* */
400
+ /* */
401
+ /* */
402
+ /* */
403
+ /* */
404
+ /* */
405
+ /* */
406
+ /* */
407
+ /* */
408
+ /* */
409
+ /* */
410
+ /* */
411
+ /* */
412
+ /* */
413
+ /* */
414
+ /* */
415
+ /* */
416
+ /* */
417
+ /* */
418
+ /* */
419
+ /* */
420
+ /* */
421
+ /* */
422
+ return (void 0);
423
+ }
424
+ async generateLastChangesSummary() {
425
+ const lastReleaseCommitData = await this.getLastReleaseCommitData();
426
+ const hasLastReleaseCommit = lastReleaseCommitData.index !== -1;
427
+ const lastReleaseCommitMsg = !hasLastReleaseCommit
428
+ ? '< nothing release yet >'
429
+ : lastReleaseCommitData.lastRelaseCommitMsg;
430
+ return `${chalk.bold.gray('Last changelog.md notes summary')}:
431
+ ${await this.getLastPackageVersionChangesFromChnagelog()}
432
+
433
+ ${chalk.bold.gray(hasLastReleaseCommit ? 'Last commits up to relase commit' : 'Last 3 commits')}:
434
+ ${await this.getLastChangesFromCommits({
435
+ maxMessagesToCheck: hasLastReleaseCommit ? Number.POSITIVE_INFINITY : 3,
436
+ stopOnCommitMessage: hasLastReleaseCommit
437
+ ? lastReleaseCommitData.lastRelaseCommitMsg
438
+ : '',
439
+ })}
440
+ `;
441
+ }
442
+ async getLastChangesFromCommits({ maxMessagesToCheck = 3, stopOnCommitMessage = '', } = {}) {
443
+ /* */
444
+ /* */
445
+ /* */
446
+ /* */
447
+ /* */
448
+ /* */
449
+ /* */
450
+ /* */
451
+ /* */
452
+ /* */
453
+ /* */
454
+ /* */
455
+ /* */
456
+ /* */
457
+ /* */
458
+ /* */
459
+ /* */
460
+ /* */
461
+ /* */
462
+ /* */
463
+ /* */
464
+ /* */
465
+ return (void 0);
466
+ }
467
+ async getLastReleaseCommitData() {
468
+ /* */
469
+ /* */
470
+ /* */
471
+ /* */
472
+ /* */
473
+ /* */
474
+ /* */
475
+ /* */
476
+ /* */
477
+ /* */
478
+ /* */
479
+ /* */
480
+ /* */
481
+ /* */
482
+ /* */
483
+ /* */
484
+ /* */
485
+ /* */
486
+ /* */
487
+ /* */
488
+ /* */
489
+ /* */
490
+ /* */
491
+ /* */
492
+ /* */
493
+ /* */
494
+ /* */
495
+ return (void 0);
496
+ }
497
+ async getLastPackageVersionChangesFromChnagelog() {
498
+ /* */
499
+ /* */
500
+ /* */
501
+ /* */
502
+ /* */
503
+ /* */
504
+ /* */
505
+ /* */
506
+ /* */
507
+ /* */
508
+ /* */
509
+ /* */
510
+ /* */
511
+ /* */
512
+ /* */
513
+ /* */
514
+ /* */
515
+ /* */
516
+ /* */
517
+ /* */
518
+ /* */
519
+ /* */
520
+ /* */
521
+ /* */
522
+ /* */
523
+ /* */
524
+ /* */
525
+ /* */
526
+ /* */
527
+ /* */
528
+ /* */
529
+ /* */
530
+ /* */
531
+ /* */
532
+ /* */
533
+ /* */
534
+ /* */
535
+ return (void 0);
536
+ }
537
+ get changeLogPath() {
538
+ /* */
539
+ /* */
540
+ /* */
541
+ /* */
542
+ return (void 0);
543
+ }
544
+ get changelogContent() {
545
+ return this.project.readFile(this.changeLogPath) || '';
546
+ }
547
+ changeLogKeyWord() {
548
+ return 'Changes in version';
549
+ }
550
+ getChnagelogData() {
551
+ /* */
552
+ /* */
553
+ /* */
554
+ /* */
555
+ /* */
556
+ /* */
557
+ /* */
558
+ /* */
559
+ /* */
560
+ /* */
561
+ /* */
562
+ /* */
563
+ /* */
564
+ /* */
565
+ /* */
566
+ /* */
567
+ /* */
568
+ /* */
569
+ /* */
570
+ /* */
571
+ /* */
572
+ /* */
573
+ /* */
574
+ /* */
575
+ /* */
576
+ /* */
577
+ return (void 0);
578
+ }
579
+ }
580
+ ;
581
+ ({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-release-process.ts
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1yZWxlYXNlLXByb2Nlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS1yZWxlYXNlLXByb2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE9BQU8sRUFBYyxLQUFLLEVBQWlCLE1BQU0sa0JBQWtCLENBQUM7QUFPcEUsTUFBTSxPQUFPLGtCQUVYLFNBQVEscUJBQXFCO0lBRi9COztRQUtFOztXQUVHO1FBQ0gscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBSWxDLHdCQUFtQixHQUdiLEVBQUUsQ0FBQztJQWlzQlgsQ0FBQztJQTlyQkMsZUFBZTtRQUNiLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBR00sS0FBSyxDQUFDLFlBQVksQ0FDdkIsT0FLQztRQUVELE9BQU8sSUFBSSxFQUFFO1lBQ1gsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxFQUFFLGdCQUFnQixJQUFJLEtBQUssQ0FBQztZQUMzRCxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUs7Z0JBQ3RFLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FDbEMsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQy9ELE1BQU0sSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUN0QyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRTtnQkFDckMsU0FBUzthQUNWO1lBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRTtnQkFDaEMsU0FBUzthQUNWO1lBRUQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLFNBQVM7YUFDVjtZQUVELE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUlPLEtBQUssQ0FBQyxvQkFBb0I7UUFDaEMsT0FBTyxDQUFDLFdBQVcsQ0FDakIseURBQXlELENBQzFELENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxRQUFRLENBQUMseURBQXlELENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBSUQsS0FBSyxDQUFDLHNCQUFzQjtRQU05QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlPLEtBQUssQ0FBQywyQkFBMkI7UUFNM0MsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJTyxLQUFLLENBQUMsWUFBWTtRQUM1QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlPLEtBQUssQ0FBQyxnQkFBZ0I7UUFDaEMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztR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Q0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsS0FBSyxDQUFDLHdCQUF3QjtRQU9oQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsS0FBSyxDQUFDLHlDQUF5QztRQUNqRCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELElBQVksYUFBYTtRQUMzQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6RCxDQUFDO0lBSUQsZ0JBQWdCO1FBQ2QsT0FBTyxvQkFBb0IsQ0FBQztJQUM5QixDQUFDO0lBSUQsZ0JBQWdCO1FBQ2xCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUVGO0FBRUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx5RUFBeUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG4vKiAqL1xuLyogKi9cbiAgXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IH0gZnJvbSAnLi9iYXNlLWZlYXR1cmUtZm9yLXByb2plY3QnO1xuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4vYmFzZS1wcm9qZWN0JztcbmltcG9ydCB7IENvcmVNb2RlbHMsIGNoYWxrLCBkYXRlZm9ybWF0LCBfIH0gZnJvbSAndG5wLWNvcmUvYnJvd3Nlcic7XG5pbXBvcnQgdHlwZSB7IENoYW5nZWxvZ0RhdGEgfSBmcm9tICcuLi8uL21vZGVscyc7XG5pbXBvcnQgeyBDb21taXREYXRhIH0gZnJvbSAnLi9jb21taXQtZGF0YSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL2Jyb3dzZXInO1xuXG5cblxuZXhwb3J0IGNsYXNzIEJhc2VSZWxlYXNlUHJvY2VzczxcbiAgUFJPSkNFVCBleHRlbmRzIEJhc2VQcm9qZWN0ID0gYW55LFxuPiBleHRlbmRzIEJhc2VGZWF0dXJlRm9yUHJvamVjdCB7XG5cbiAgcHJvamVjdDogUFJPSkNFVDtcbiAgLyoqXG4gICAqIEF1dG9tYXRpYyByZWxlYXNlIHByb2Nlc3Mgb2YgcGF0Y2ggcGx1cyBvbmUgdmVyc2lvblxuICAgKi9cbiAgYXV0b21hdGljUmVsZWFzZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0eXBlOiBDb3JlTW9kZWxzLlJlbGVhc2VUeXBlO1xuICBsYXN0Q2hhbmdlc1N1bW1hcnk6IHN0cmluZztcbiAgbmV3VmVyc2lvbjogc3RyaW5nO1xuICBjb21taXRzRm9yQ2hhbmdlbG9nOiB7XG4gICAgY29tbWl0TWVzc2FnZXM6IHN0cmluZztcbiAgICBpbmRleDogbnVtYmVyO1xuICB9W10gPSBbXTtcblxuXG4gIGdldFJlbGVhc2VXb3JkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsncmVsZWFzZSddO1xuICB9XG5cblxuICBwdWJsaWMgYXN5bmMgc3RhcnRSZWxlYXNlKFxuICAgIG9wdGlvbnM/OiBQYXJ0aWFsPFxuICAgICAgUGljazxcbiAgICAgICAgQmFzZVJlbGVhc2VQcm9jZXNzPFBST0pDRVQ+LFxuICAgICAgICAnYXV0b21hdGljUmVsZWFzZScgfCAndHlwZScgfCAnbmV3VmVyc2lvbidcbiAgICAgID5cbiAgICA+LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgSGVscGVycy5jbGVhckNvbnNvbGUoKTtcbiAgICAgIHRoaXMubmV3VmVyc2lvbiA9IG9wdGlvbnM/Lm5ld1ZlcnNpb247XG4gICAgICB0aGlzLmF1dG9tYXRpY1JlbGVhc2UgPSBvcHRpb25zPy5hdXRvbWF0aWNSZWxlYXNlIHx8IGZhbHNlO1xuICAgICAgYXdhaXQgdGhpcy5yZXNldFJlbGVhc2VGaWxlcygpO1xuICAgICAgdGhpcy5wcm9qZWN0Lm5wbUhlbHBlcnMucmVsb2FkUGFja2FnZUpzb25Jbk1lbW9yeSgpO1xuICAgICAgdGhpcy5sYXN0Q2hhbmdlc1N1bW1hcnkgPSBhd2FpdCB0aGlzLmdlbmVyYXRlTGFzdENoYW5nZXNTdW1tYXJ5KCk7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYCR7Y2hhbGsuYm9sZC51bmRlcmxpbmUoYFJlbGVhc2UgcHJvY2VzcyBmb3IgJHt0aGlzLnByb2plY3QubmFtZX1gKX06XFxuYCArXG4gICAgICAgICAgKGF3YWl0IHRoaXMubGFzdENoYW5nZXNTdW1tYXJ5KSxcbiAgICAgICk7XG4gICAgICB0aGlzLnR5cGUgPSBhd2FpdCB0aGlzLnNlbGVjdFJlbGVhc2VUeXBlKCk7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpcm1OZXdWZXJzaW9uKCk7XG4gICAgICB0aGlzLmNvbW1pdHNGb3JDaGFuZ2Vsb2cgPSBhd2FpdCB0aGlzLnNlbGVjdENoYW5nZWxvZ0NvbW1pdHMoKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlQ2hhbmdlTG9nRnJvbUNvbW1pdHMoKTtcbiAgICAgIGF3YWl0IHRoaXMuYnVtcE5ld1ZlcnNpb25FdmVyeXdoZXJlKCk7XG4gICAgICBhd2FpdCB0aGlzLmJ1aWxkQWxsTGlicmFyaWVzKCk7XG4gICAgICBpZiAoIShhd2FpdCB0aGlzLnRlc3RCZWZvcmVQdWJsaXNoKCkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCEoYXdhaXQgdGhpcy5wdWJsaXNoVG9OcG0oKSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IHRoaXMucmVpbnN0YWxsTm9kZU1vZHVsZXMoKTtcbiAgICAgIGlmICghKGF3YWl0IHRoaXMudGVzdEFmdGVyUHVibGlzaCgpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5jb21taXRBbmRQdXNoKCk7XG4gICAgfVxuICB9XG5cblxuXG4gIHByaXZhdGUgYXN5bmMgcmVpbnN0YWxsTm9kZU1vZHVsZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgSGVscGVycy50YXNrU3RhcnRlZChcbiAgICAgIGBSZWluc3RhbGxpbmcgbm9kZV9tb2R1bGVzIHRvIHJlY3JlYXRlIHBhY2thZ2UtbG9jay5qc29uYCxcbiAgICApO1xuICAgIHRoaXMucHJvamVjdC5ucG1IZWxwZXJzLnJlaW5zdGFsTm9kZU1vZHVsZXMoKTtcbiAgICBIZWxwZXJzLnRhc2tEb25lKGBSZWluc3RhbGxpbmcgbm9kZV9tb2R1bGVzIHRvIHJlY3JlYXRlIHBhY2thZ2UtbG9jay5qc29uYCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgc2VsZWN0Q2hhbmdlbG9nQ29tbWl0cygpOiBQcm9taXNlPFxuICAgIHtcbiAgICAgIGNvbW1pdE1lc3NhZ2VzOiBzdHJpbmc7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgIH1bXVxuICA+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q29tbWl0c1VwVG9SZWxlYXNlQ29tbWl0KCk6IFByb21pc2U8XG4gICAge1xuICAgICAgY29tbWl0TWVzc2FnZXM6IHN0cmluZztcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfVtdXG4gID4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBhc3luYyBwdWJsaXNoVG9OcG0oKTogUHJvbWlzZTxib29sZWFuPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGFzeW5jIHRlc3RBZnRlclB1Ymxpc2goKTogUHJvbWlzZTxib29sZWFuPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGFzeW5jIHRlc3RCZWZvcmVQdWJsaXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBhc3luYyBjb21taXRBbmRQdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcm90ZWN0ZWQgcmVsZWFzZUNvbW1pdFRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBSZWxlYXNlIHYke3RoaXMubmV3VmVyc2lvbn0gKyBjaGFuZ2Vsb2cubWQgdXBkYXRlYDtcbiAgfVxuXG5cblxuICBwcml2YXRlIGFzeW5jIHRlc3RMaWJyYXJpZXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucHJvamVjdC5ydW4oJ25wbSBydW4gdGVzdCcsIHsgb3V0cHV0OiB0cnVlIH0pLnN5bmMoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBIZWxwZXJzLmluZm8oYFRlc3QgZmFpbGVkLCB5b3UgY2FuIHJ1biB0ZXN0IG1hbnVhbGx5YCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cblxuXG4gIGFzeW5jIGJ1aWxkQWxsTGlicmFyaWVzKCkge1xuICAgIGF3YWl0IHRoaXMucHJvamVjdC5saWJyYXJ5QnVpbGQuYnVpbGRMaWJyYXJpZXMoe1xuICAgICAgd2F0Y2g6IGZhbHNlLFxuICAgICAgcmVsZWFzZUJ1aWxkOiB0cnVlLFxuICAgICAgYnVpbGRUeXBlOiAnYW5ndWxhcicsXG4gICAgfSk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVzZXRSZWxlYXNlRmlsZXMoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldCB0b0J1bXBQcm9qZWN0cygpIHtcbiAgICBjb25zdCB0b0J1bXBQcm9qZWN0cyA9IFtcbiAgICAgIHRoaXMucHJvamVjdCxcbiAgICAgIC4uLnRoaXMucHJvamVjdC5saWJyYXJ5QnVpbGQubGlicmFyaWVzLFxuICAgIF0gYXMgUFJPSkNFVFtdO1xuXG4gICAgcmV0dXJuIHRvQnVtcFByb2plY3RzO1xuICB9XG5cblxuXG4gIGFzeW5jIGJ1bXBOZXdWZXJzaW9uRXZlcnl3aGVyZSgpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgY29uZmlybU5ld1ZlcnNpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcml2YXRlIGFzeW5jIHNlbGVjdFJlbGVhc2VUeXBlKCk6IFByb21pc2U8Q29yZU1vZGVscy5SZWxlYXNlVHlwZT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBhc3luYyBjb21taXRNZXNzYWdlSW5DaGFuZ2Vsb2dUcmFuc2Zvcm1GbihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuXG5cbiAgYXN5bmMgZ2V0Q2hhbmdlbG9nQ29udGVudFRvQXBwZW5kKGFza0ZvckV2ZXJ5SXRlbTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIGV4dGVuZCB0aGlzIHRvIGFsbCBjb21taXRzIGZyb20gbGFzdCByZWxlYXNlXG4gICAqL1xuICBhc3luYyB1cGRhdGVDaGFuZ2VMb2dGcm9tQ29tbWl0cygpOiBQcm9taXNlPHZvaWQ+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIGV4dHJhY3RDaGFuZ2VkTGlicmFyaWVzSW5Db21taXQoXG4gICAgaGFzaE9ySW5kZXg6IHN0cmluZyB8IG51bWJlcixcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIGNoYW5nZWxvZ0l0ZW1UZW1wbGF0ZShcbiAgICBoYXNoT3JJbmRleDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGNvbmZpcm1FdmVyeUl0ZW06IGJvb2xlYW4gPSBmYWxzZSxcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBnZW5lcmF0ZUxhc3RDaGFuZ2VzU3VtbWFyeSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxhc3RSZWxlYXNlQ29tbWl0RGF0YSA9IGF3YWl0IHRoaXMuZ2V0TGFzdFJlbGVhc2VDb21taXREYXRhKCk7XG4gICAgY29uc3QgaGFzTGFzdFJlbGVhc2VDb21taXQgPSBsYXN0UmVsZWFzZUNvbW1pdERhdGEuaW5kZXggIT09IC0xO1xuICAgIGNvbnN0IGxhc3RSZWxlYXNlQ29tbWl0TXNnID0gIWhhc0xhc3RSZWxlYXNlQ29tbWl0XG4gICAgICA/ICc8IG5vdGhpbmcgcmVsZWFzZSB5ZXQgPidcbiAgICAgIDogbGFzdFJlbGVhc2VDb21taXREYXRhLmxhc3RSZWxhc2VDb21taXRNc2c7XG5cbiAgICByZXR1cm4gYCR7Y2hhbGsuYm9sZC5ncmF5KCdMYXN0IGNoYW5nZWxvZy5tZCBub3RlcyBzdW1tYXJ5Jyl9OlxuJHthd2FpdCB0aGlzLmdldExhc3RQYWNrYWdlVmVyc2lvbkNoYW5nZXNGcm9tQ2huYWdlbG9nKCl9XG5cbiR7Y2hhbGsuYm9sZC5ncmF5KFxuICBoYXNMYXN0UmVsZWFzZUNvbW1pdCA/ICdMYXN0IGNvbW1pdHMgdXAgdG8gcmVsYXNlIGNvbW1pdCcgOiAnTGFzdCAzIGNvbW1pdHMnLFxuKX06XG4ke2F3YWl0IHRoaXMuZ2V0TGFzdENoYW5nZXNGcm9tQ29tbWl0cyh7XG4gIG1heE1lc3NhZ2VzVG9DaGVjazogaGFzTGFzdFJlbGVhc2VDb21taXQgPyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgOiAzLFxuICBzdG9wT25Db21taXRNZXNzYWdlOiBoYXNMYXN0UmVsZWFzZUNvbW1pdFxuICAgID8gbGFzdFJlbGVhc2VDb21taXREYXRhLmxhc3RSZWxhc2VDb21taXRNc2dcbiAgICA6ICcnLFxufSl9XG4gICAgYDtcbiAgfVxuXG5cblxuICBhc3luYyBnZXRMYXN0Q2hhbmdlc0Zyb21Db21taXRzKHtcbiAgICBtYXhNZXNzYWdlc1RvQ2hlY2sgPSAzLFxuICAgIHN0b3BPbkNvbW1pdE1lc3NhZ2UgPSAnJyxcbiAgfToge1xuICAgIC8qKlxuICAgICAqIGRlZmF1bHQgM1xuICAgICAqL1xuICAgIG1heE1lc3NhZ2VzVG9DaGVjaz86IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBzdG9wIHNlcmNoaW5nIG9uIGNvbW1pdCBtZXNzYWdlXG4gICAgICovXG4gICAgc3RvcE9uQ29tbWl0TWVzc2FnZT86IHN0cmluZztcbiAgfSA9IHt9KTogUHJvbWlzZTxzdHJpbmc+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIGdldExhc3RSZWxlYXNlQ29tbWl0RGF0YSgpOiBQcm9taXNlPHtcbiAgICBsYXN0UmVsYXNlQ29tbWl0TXNnOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogLTEgaWYgbm90IGZvdW5kXG4gICAgICovXG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyBnZXRMYXN0UGFja2FnZVZlcnNpb25DaGFuZ2VzRnJvbUNobmFnZWxvZygpOiBQcm9taXNlPHN0cmluZz4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBnZXQgY2hhbmdlTG9nUGF0aCgpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldCBjaGFuZ2Vsb2dDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLnByb2plY3QucmVhZEZpbGUodGhpcy5jaGFuZ2VMb2dQYXRoKSB8fCAnJztcbiAgfVxuXG5cblxuICBjaGFuZ2VMb2dLZXlXb3JkKCkge1xuICAgIHJldHVybiAnQ2hhbmdlcyBpbiB2ZXJzaW9uJztcbiAgfVxuXG5cblxuICBnZXRDaG5hZ2Vsb2dEYXRhKCk6IENoYW5nZWxvZ0RhdGFbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS1yZWxlYXNlLXByb2Nlc3MudHMiXX0=
@@ -58,9 +58,18 @@ export class BaseVscodeHelpers extends BaseFeatureForProject {
58
58
  /* */
59
59
  /* */
60
60
  /* */
61
+ /* */
62
+ /* */
63
+ /* */
64
+ /* */
65
+ /* */
66
+ /* */
67
+ /* */
68
+ /* */
69
+ /* */
61
70
  ]);
62
71
  }
63
72
  }
64
73
  ;
65
74
  ({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-vscode.ts
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12c2NvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS12c2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVuQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLE9BQU8saUJBRVgsU0FBUSxxQkFBcUI7SUFDN0IsSUFBSSxVQUFVO1FBQ1osT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQzdCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7U0FFQSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdFQUFnRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4vYmFzZS1wcm9qZWN0JztcbmltcG9ydCB7IEJhc2VGZWF0dXJlRm9yUHJvamVjdCB9IGZyb20gJy4vYmFzZS1mZWF0dXJlLWZvci1wcm9qZWN0JztcblxuZXhwb3J0IGNsYXNzIEJhc2VWc2NvZGVIZWxwZXJzPFxuICBQUk9KQ0VUIGV4dGVuZHMgQmFzZVByb2plY3QgPSBhbnksXG4+IGV4dGVuZHMgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IHtcbiAgZ2V0IGV4dGVuc2lvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBIZWxwZXJzLnVuaXFBcnJheShbXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICBdKTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS12c2NvZGUudHMiXX0=
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12c2NvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS12c2NvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVuQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLE9BQU8saUJBRVgsU0FBUSxxQkFBcUI7SUFDN0IsSUFBSSxVQUFVO1FBQ1osT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQzdCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7U0FFQSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdFQUFnRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4vYmFzZS1wcm9qZWN0JztcbmltcG9ydCB7IEJhc2VGZWF0dXJlRm9yUHJvamVjdCB9IGZyb20gJy4vYmFzZS1mZWF0dXJlLWZvci1wcm9qZWN0JztcblxuZXhwb3J0IGNsYXNzIEJhc2VWc2NvZGVIZWxwZXJzPFxuICBQUk9KQ0VUIGV4dGVuZHMgQmFzZVByb2plY3QgPSBhbnksXG4+IGV4dGVuZHMgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IHtcbiAgZ2V0IGV4dGVuc2lvbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBIZWxwZXJzLnVuaXFBcnJheShbXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICBdKTtcbiAgfVxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS12c2NvZGUudHMiXX0=