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.
- package/assets/shared/shared_folder_info.txt +1 -1
- package/browser/esm2022/lib/base/base-git.mjs +85 -2
- package/browser/esm2022/lib/base/base-library-build.mjs +4 -2
- package/browser/esm2022/lib/base/base-npm-helpers.mjs +168 -15
- package/browser/esm2022/lib/base/base-project.mjs +14 -1
- package/browser/esm2022/lib/base/base-release-process.mjs +582 -0
- package/browser/esm2022/lib/base/base-vscode.mjs +10 -1
- package/browser/esm2022/lib/base/commit-data.mjs +116 -44
- package/browser/esm2022/lib/base/core-project.mjs +1 -1
- package/browser/esm2022/lib/base/index.mjs +3 -1
- package/browser/esm2022/lib/models.mjs +1 -1
- package/browser/fesm2022/tnp-helpers.mjs +1016 -113
- package/browser/fesm2022/tnp-helpers.mjs.map +1 -1
- package/browser/lib/base/base-git.d.ts +22 -4
- package/browser/lib/base/base-library-build.d.ts +1 -1
- package/browser/lib/base/base-npm-helpers.d.ts +28 -1
- package/browser/lib/base/base-project.d.ts +7 -0
- package/browser/lib/base/base-release-process.d.ts +70 -0
- package/browser/lib/base/commit-data.d.ts +18 -13
- package/browser/lib/base/core-project.d.ts +9 -0
- package/browser/lib/base/index.d.ts +1 -0
- package/browser/lib/models.d.ts +11 -1
- package/client/esm2022/lib/base/base-git.mjs +85 -2
- package/client/esm2022/lib/base/base-library-build.mjs +4 -2
- package/client/esm2022/lib/base/base-npm-helpers.mjs +168 -15
- package/client/esm2022/lib/base/base-project.mjs +14 -1
- package/client/esm2022/lib/base/base-release-process.mjs +582 -0
- package/client/esm2022/lib/base/base-vscode.mjs +10 -1
- package/client/esm2022/lib/base/commit-data.mjs +116 -44
- package/client/esm2022/lib/base/core-project.mjs +1 -1
- package/client/esm2022/lib/base/index.mjs +3 -1
- package/client/esm2022/lib/models.mjs +1 -1
- package/client/fesm2022/tnp-helpers.mjs +1016 -113
- package/client/fesm2022/tnp-helpers.mjs.map +1 -1
- package/client/lib/base/base-git.d.ts +22 -4
- package/client/lib/base/base-library-build.d.ts +1 -1
- package/client/lib/base/base-npm-helpers.d.ts +28 -1
- package/client/lib/base/base-project.d.ts +7 -0
- package/client/lib/base/base-release-process.d.ts +70 -0
- package/client/lib/base/commit-data.d.ts +18 -13
- package/client/lib/base/core-project.d.ts +9 -0
- package/client/lib/base/index.d.ts +1 -0
- package/client/lib/models.d.ts +11 -1
- package/client/package.json +32 -31
- package/lib/base/base-command-line.backend.d.ts +4 -0
- package/lib/base/base-command-line.backend.js +113 -1
- package/lib/base/base-command-line.backend.js.map +1 -1
- package/lib/base/base-git.d.ts +19 -1
- package/lib/base/base-git.js +156 -41
- package/lib/base/base-git.js.map +1 -1
- package/lib/base/base-library-build.d.ts +1 -1
- package/lib/base/base-library-build.js +33 -31
- package/lib/base/base-library-build.js.map +1 -1
- package/lib/base/base-npm-helpers.d.ts +30 -2
- package/lib/base/base-npm-helpers.js +212 -17
- package/lib/base/base-npm-helpers.js.map +1 -1
- package/lib/base/base-project.d.ts +7 -0
- package/lib/base/base-project.js +26 -2
- package/lib/base/base-project.js.map +1 -1
- package/lib/base/base-release-process.d.ts +69 -0
- package/lib/base/base-release-process.js +894 -0
- package/lib/base/base-release-process.js.map +1 -0
- package/lib/base/base-vscode.js +9 -0
- package/lib/base/base-vscode.js.map +1 -1
- package/lib/base/commit-data.d.ts +17 -12
- package/lib/base/commit-data.js +138 -78
- package/lib/base/commit-data.js.map +1 -1
- package/lib/base/core-project.d.ts +9 -0
- package/lib/base/core-project.js.map +1 -1
- package/lib/base/index.d.ts +2 -0
- package/lib/base/index.js +2 -0
- package/lib/base/index.js.map +1 -1
- package/lib/base/translate.d.ts +227 -1
- package/lib/base/translate.js +566 -54
- package/lib/base/translate.js.map +1 -1
- package/lib/helpers/for-backend/helpers-console-gui.d.ts +2 -1
- package/lib/helpers/for-backend/helpers-console-gui.js +3 -2
- package/lib/helpers/for-backend/helpers-console-gui.js.map +1 -1
- package/lib/helpers/for-backend/helpers-dependencies.backend.js +1 -2
- package/lib/helpers/for-backend/helpers-dependencies.backend.js.map +1 -1
- package/lib/helpers/for-backend/helpers-git.backend.d.ts +29 -1
- package/lib/helpers/for-backend/helpers-git.backend.js +204 -15
- package/lib/helpers/for-backend/helpers-git.backend.js.map +1 -1
- package/lib/helpers/for-backend/helpers-process.backend.d.ts +10 -8
- package/lib/helpers/for-backend/helpers-process.backend.js +56 -56
- package/lib/helpers/for-backend/helpers-process.backend.js.map +1 -1
- package/lib/helpers/for-browser/angular.helper.js +3 -3
- package/lib/models.d.ts +11 -1
- package/lib/old/base-component.js +3 -3
- package/lib/old/base-formly-component.js +3 -3
- package/lib/old/dual-component-ctrl.js +3 -3
- package/package.json +4 -4
- package/tmp-environment.json +36 -35
- package/websql/esm2022/lib/base/base-git.mjs +85 -2
- package/websql/esm2022/lib/base/base-library-build.mjs +4 -2
- package/websql/esm2022/lib/base/base-npm-helpers.mjs +168 -15
- package/websql/esm2022/lib/base/base-project.mjs +16 -3
- package/websql/esm2022/lib/base/base-release-process.mjs +582 -0
- package/websql/esm2022/lib/base/base-vscode.mjs +10 -1
- package/websql/esm2022/lib/base/commit-data.mjs +116 -44
- package/websql/esm2022/lib/base/core-project.mjs +1 -1
- package/websql/esm2022/lib/base/index.mjs +3 -1
- package/websql/esm2022/lib/models.mjs +1 -1
- package/websql/fesm2022/tnp-helpers.mjs +1018 -115
- package/websql/fesm2022/tnp-helpers.mjs.map +1 -1
- package/websql/lib/base/base-git.d.ts +22 -4
- package/websql/lib/base/base-library-build.d.ts +1 -1
- package/websql/lib/base/base-npm-helpers.d.ts +28 -1
- package/websql/lib/base/base-project.d.ts +7 -0
- package/websql/lib/base/base-release-process.d.ts +70 -0
- package/websql/lib/base/commit-data.d.ts +18 -13
- package/websql/lib/base/core-project.d.ts +9 -0
- package/websql/lib/base/index.d.ts +1 -0
- package/websql/lib/models.d.ts +11 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
/* */
|
|
2
2
|
/* */
|
|
3
|
+
/* */
|
|
4
|
+
/* */
|
|
5
|
+
/* */
|
|
6
|
+
/* */
|
|
7
|
+
/* */
|
|
8
|
+
/* */
|
|
3
9
|
import { _ } from 'tnp-core/websql';
|
|
4
10
|
import { Helpers } from '../index';
|
|
5
11
|
import { BaseFeatureForProject } from './base-feature-for-project';
|
|
@@ -7,7 +13,15 @@ import { config } from 'tnp-config/websql';
|
|
|
7
13
|
export class BaseNpmHelpers extends BaseFeatureForProject {
|
|
8
14
|
constructor(project) {
|
|
9
15
|
super(project);
|
|
10
|
-
this.
|
|
16
|
+
this.project = project;
|
|
17
|
+
this.reloadPackageJsonInMemory();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* if something else change package.json in this project
|
|
21
|
+
* and you know that you need to reload it..
|
|
22
|
+
*/
|
|
23
|
+
reloadPackageJsonInMemory() {
|
|
24
|
+
this.packageJSON = this.project.readJson(config.file.package_json);
|
|
11
25
|
}
|
|
12
26
|
get name() {
|
|
13
27
|
return this.packageJSON?.name || '';
|
|
@@ -18,6 +32,56 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
|
|
|
18
32
|
get version() {
|
|
19
33
|
return this.packageJSON?.version;
|
|
20
34
|
}
|
|
35
|
+
set version(newVersion) {
|
|
36
|
+
this.packageJSON.version = newVersion;
|
|
37
|
+
this.project.writeJson(config.file.package_json, this.packageJSON);
|
|
38
|
+
}
|
|
39
|
+
updateDependency(packageName, version) {
|
|
40
|
+
/* */
|
|
41
|
+
/* */
|
|
42
|
+
/* */
|
|
43
|
+
/* */
|
|
44
|
+
/* */
|
|
45
|
+
/* */
|
|
46
|
+
/* */
|
|
47
|
+
/* */
|
|
48
|
+
/* */
|
|
49
|
+
/* */
|
|
50
|
+
return (void 0);
|
|
51
|
+
}
|
|
52
|
+
get versionWithPatchPlusOne() {
|
|
53
|
+
const ver = this.version.split('.');
|
|
54
|
+
if (ver.length > 0) {
|
|
55
|
+
ver[ver.length - 1] = (parseInt(_.last(ver)) + 1).toString();
|
|
56
|
+
}
|
|
57
|
+
return ver.join('.');
|
|
58
|
+
}
|
|
59
|
+
get versionWithMinorPlusOneAndPatchZero() {
|
|
60
|
+
const ver = this.version.split('.');
|
|
61
|
+
if (ver.length > 1) {
|
|
62
|
+
ver[1] = (parseInt(ver[1]) + 1).toString();
|
|
63
|
+
for (let index = 2; index < ver.length; index++) {
|
|
64
|
+
ver[index] = '0';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
Helpers.warn(`[npm-project] something went wrong with bumping minor version`);
|
|
69
|
+
}
|
|
70
|
+
return ver.join('.');
|
|
71
|
+
}
|
|
72
|
+
get versionWithMajorPlusOneAndMinorZeroAndPatchZero() {
|
|
73
|
+
const ver = this.version.split('.');
|
|
74
|
+
if (ver.length > 0) {
|
|
75
|
+
ver[0] = (parseInt(_.first(ver)) + 1).toString();
|
|
76
|
+
for (let index = 1; index < ver.length; index++) {
|
|
77
|
+
ver[index] = '0';
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
Helpers.warn(`[npm-project] something went wrong with bumping major version`);
|
|
82
|
+
}
|
|
83
|
+
return ver.join('.');
|
|
84
|
+
}
|
|
21
85
|
/**
|
|
22
86
|
* Major Version from package.json
|
|
23
87
|
*/
|
|
@@ -117,18 +181,6 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
|
|
|
117
181
|
...(packageJson.resolutions || {}),
|
|
118
182
|
});
|
|
119
183
|
}
|
|
120
|
-
checkIfLogginInToNpm() {
|
|
121
|
-
/* */
|
|
122
|
-
/* */
|
|
123
|
-
/* */
|
|
124
|
-
/* */
|
|
125
|
-
/* */
|
|
126
|
-
/* */
|
|
127
|
-
/* */
|
|
128
|
-
/* */
|
|
129
|
-
/* */
|
|
130
|
-
return (void 0);
|
|
131
|
-
}
|
|
132
184
|
linkNodeModulesTo(proj) {
|
|
133
185
|
/* */
|
|
134
186
|
/* */
|
|
@@ -285,7 +337,10 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
|
|
|
285
337
|
}
|
|
286
338
|
const command = `npm run ${taskName} ${additionalArguments ? ' -- ' + additionalArguments : ''}`;
|
|
287
339
|
Helpers.info(`Starting npm task: "${command}"`);
|
|
288
|
-
return this.project.run(command, {
|
|
340
|
+
return this.project.run(command, {
|
|
341
|
+
output: true,
|
|
342
|
+
biggerBuffer: true,
|
|
343
|
+
});
|
|
289
344
|
}
|
|
290
345
|
async prepareCommand(optiosn) {
|
|
291
346
|
let { pkg, remove, silent, useYarn, force, removeYarnOrPackageJsonLock, generateYarnOrPackageJsonLock, ignoreOptional, } = optiosn || {};
|
|
@@ -321,7 +376,105 @@ export class BaseNpmHelpers extends BaseFeatureForProject {
|
|
|
321
376
|
}
|
|
322
377
|
return command;
|
|
323
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
*
|
|
381
|
+
* @param registry without specified registr is checking npm registry
|
|
382
|
+
* @returns
|
|
383
|
+
*/
|
|
384
|
+
async isLoggedInToRegistry(registry) {
|
|
385
|
+
/* */
|
|
386
|
+
/* */
|
|
387
|
+
/* */
|
|
388
|
+
/* */
|
|
389
|
+
/* */
|
|
390
|
+
/* */
|
|
391
|
+
/* */
|
|
392
|
+
/* */
|
|
393
|
+
/* */
|
|
394
|
+
/* */
|
|
395
|
+
/* */
|
|
396
|
+
/* */
|
|
397
|
+
/* */
|
|
398
|
+
/* */
|
|
399
|
+
/* */
|
|
400
|
+
/* */
|
|
401
|
+
/* */
|
|
402
|
+
/* */
|
|
403
|
+
/* */
|
|
404
|
+
/* */
|
|
405
|
+
/* */
|
|
406
|
+
/* */
|
|
407
|
+
return (void 0);
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Prompt the user to log in to a specific npm registry.
|
|
411
|
+
* @param {string} [registry] - Optional npm registry URL.
|
|
412
|
+
* @returns {Promise<void>} - A promise that resolves when the login process completes.
|
|
413
|
+
*/
|
|
414
|
+
async loginToRegistry(registry) {
|
|
415
|
+
/* */
|
|
416
|
+
/* */
|
|
417
|
+
/* */
|
|
418
|
+
/* */
|
|
419
|
+
/* */
|
|
420
|
+
/* */
|
|
421
|
+
/* */
|
|
422
|
+
/* */
|
|
423
|
+
/* */
|
|
424
|
+
/* */
|
|
425
|
+
/* */
|
|
426
|
+
/* */
|
|
427
|
+
/* */
|
|
428
|
+
/* */
|
|
429
|
+
/* */
|
|
430
|
+
/* */
|
|
431
|
+
/* */
|
|
432
|
+
/* */
|
|
433
|
+
return (void 0);
|
|
434
|
+
}
|
|
435
|
+
async makeSureLoggedInToNpmRegistry(registry) {
|
|
436
|
+
/* */
|
|
437
|
+
/* */
|
|
438
|
+
/* */
|
|
439
|
+
/* */
|
|
440
|
+
/* */
|
|
441
|
+
/* */
|
|
442
|
+
/* */
|
|
443
|
+
/* */
|
|
444
|
+
/* */
|
|
445
|
+
/* */
|
|
446
|
+
/* */
|
|
447
|
+
/* */
|
|
448
|
+
/* */
|
|
449
|
+
/* */
|
|
450
|
+
/* */
|
|
451
|
+
/* */
|
|
452
|
+
/* */
|
|
453
|
+
/* */
|
|
454
|
+
/* */
|
|
455
|
+
/* */
|
|
456
|
+
/* */
|
|
457
|
+
/* */
|
|
458
|
+
/* */
|
|
459
|
+
return (void 0);
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* @deprecated
|
|
463
|
+
* use makeSureLoggedInToNpmRegistry()
|
|
464
|
+
*/
|
|
465
|
+
checkIfLogginInToNpm() {
|
|
466
|
+
/* */
|
|
467
|
+
/* */
|
|
468
|
+
/* */
|
|
469
|
+
/* */
|
|
470
|
+
/* */
|
|
471
|
+
/* */
|
|
472
|
+
/* */
|
|
473
|
+
/* */
|
|
474
|
+
/* */
|
|
475
|
+
return (void 0);
|
|
476
|
+
}
|
|
324
477
|
}
|
|
325
478
|
;
|
|
326
479
|
({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-npm-helpers.ts
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ucG0taGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS1ucG0taGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUszQyxNQUFNLE9BQU8sY0FFWCxTQUFRLHFCQUFxQjtJQUU3QixZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFHRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFJRDs7T0FFRztJQUNILGFBQWE7SUFDYixJQUFJLFlBQVk7UUFDbEIsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQ7O09BRUc7SUFDSCxhQUFhO0lBQ2IsSUFBSSxZQUFZO1FBQ2xCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FB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QyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHO29CQUNoRCxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUc7b0JBQ3BELElBQUksb0JBQW9CLEdBQUcsQ0FBQztTQUUvQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FFRjtBQUVBLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMscUVBQXFFIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0IHsgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IH0gZnJvbSAnLi9iYXNlLWZlYXR1cmUtZm9yLXByb2plY3QnO1xuaW1wb3J0IHR5cGUgeyBCYXNlUHJvamVjdCB9IGZyb20gJy4vYmFzZS1wcm9qZWN0JztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJ3RucC1jb25maWcvd2Vic3FsJztcbmltcG9ydCB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuXG5cbmV4cG9ydCBjbGFzcyBCYXNlTnBtSGVscGVyczxcbiAgUFJPSkNFVCBleHRlbmRzIEJhc2VQcm9qZWN0ID0gYW55LFxuPiBleHRlbmRzIEJhc2VGZWF0dXJlRm9yUHJvamVjdCB7XG4gIHByaXZhdGUgcGFja2FnZUpTT046IFBhY2thZ2VKc29uO1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQUk9KQ0VUKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG4gICAgdGhpcy5wYWNrYWdlSlNPTiA9IHByb2plY3QucmVhZEpzb24oY29uZmlnLmZpbGUucGFja2FnZV9qc29uKTtcbiAgfVxuXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlSlNPTj8ubmFtZSB8fCAnJztcbiAgfVxuXG5cblxuICAvKipcbiAgICogdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbiAtPiBwcm9wZXJ0eSB2ZXJzaW9uXG4gICAqL1xuICBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2VKU09OPy52ZXJzaW9uO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNYWpvciBWZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICAvLyBAdHMtaWdub3JlXG4gIGdldCBtYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogTWlub3IgVmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvblxuICAgKi9cbiAgLy8gQHRzLWlnbm9yZVxuICBnZXQgbWlub3JWZXJzaW9uKCk6IG51bWJlciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgYXN5bmMgYnVtcFBhdGNoVmVyc2lvbigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXQgdmVyc2lvblBhdGhBc051bWJlcigpOiBudW1iZXIge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIG5wbSBkZXBlbmRlbmNpZXMgZnJvbSBwYWNrYWdlLmpzb25cbiAgICovXG4gIGdldCBkZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhY2thZ2VKU09OID8gdGhpcy5wYWNrYWdlSlNPTi5kZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHBlZXJEZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzXG4gICAqL1xuICBnZXQgcGVlckRlcGVuZGVuY2llcygpIHtcbiAgICByZXR1cm4gKHRoaXMucGFja2FnZUpTT04gPyB0aGlzLnBhY2thZ2VKU09OLnBlZXJEZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGRldkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXNcbiAgICovXG4gIGdldCBkZXZEZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhY2thZ2VKU09OID8gdGhpcy5wYWNrYWdlSlNPTi5kZXZEZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHJlc29sdXRpb25zIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgZ2V0IHJlc29sdXRpb25zKCkge1xuICAgIHJldHVybiAodGhpcy5wYWNrYWdlSlNPTiA/IHRoaXMucGFja2FnZUpTT05bJ3Jlc29sdXRpb25zJ10gOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIG9iamVjdCB3aXRsIGFsbCBkZXBzIGZyb20gY3VycmVudCBwcm9qZWN0IHBhY2thZ2UganNvblxuICAgKi9cbiAgZ2V0IGFsbERlcGVuZGVuY2llcygpOiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLmFsbERlcHNGcm9tUGFja2FnZUpzb24odGhpcy5wYWNrYWdlSlNPTik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgb2JqZWN0IHdpdGwgYWxsIGRlcHMgZnJvbSBwYWNrYWdlIGpzb25cbiAgICovXG4gIGFsbERlcHNGcm9tUGFja2FnZUpzb24ocGFja2FnZUpzb246IFBhY2thZ2VKc29uKSB7XG4gICAgcmV0dXJuIF8ubWVyZ2Uoe1xuICAgICAgLi4uKHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llcyB8fCB7fSksXG4gICAgICAuLi4ocGFja2FnZUpzb24ucGVlckRlcGVuZGVuY2llcyB8fCB7fSksXG4gICAgICAuLi4ocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzIHx8IHt9KSxcbiAgICAgIC4uLihwYWNrYWdlSnNvbi5yZXNvbHV0aW9ucyB8fCB7fSksXG4gICAgfSkgYXMgYW55O1xuICB9XG5cblxuXG4gIGNoZWNrSWZMb2dnaW5JblRvTnBtKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBsaW5rTm9kZU1vZHVsZXNUbyhwcm9qOiBQYXJ0aWFsPEJhc2VQcm9qZWN0Pikge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByZWZlcllhcm5PdmVyTnBtKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG5cblxuICBhc3luYyBtYWtlU3VyZU5vZGVNb2R1bGVzSW5zdGFsbGVkKG9wdGlvbnM/OiB7XG4gICAgdXNlWWFybj86IGJvb2xlYW47XG4gICAgZm9yY2U/OiBib29sZWFuO1xuICB9KSB7XG4gICAgaWYgKHRoaXMuZW1wdHlOb2RlTW9kdWxlcykge1xuICAgICAgdGhpcy5yZWluc3RhbE5vZGVNb2R1bGVzKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG5cblxuICBkZWxldGVOb2RlTW9kdWxlcygpIHtcbiAgICB0aGlzLnByb2plY3QucmVtb3ZlKGNvbmZpZy5mb2xkZXIubm9kZV9tb2R1bGVzKTtcbiAgfVxuXG5cblxuICBhc3luYyByZWluc3RhbGxOb2RlTW9kdWxlcyhmb3JjZXJSZW1vdmVOb2RlTW9kdWxlcyA9IGZhbHNlKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVpbnN0YWxOb2RlTW9kdWxlcyhvcHRpb25zPzogeyB1c2VZYXJuPzogYm9vbGVhbjsgZm9yY2U/OiBib29sZWFuIH0pIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHRydWUgaWYgbm9kZV9tb2R1bGVzIGZvbGRlciBpcyBlbXB0eVxuICAgKi9cbiAgZ2V0IGVtcHR5Tm9kZU1vZHVsZXMoKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcmVzZXRQYWNrYWdlTG9ja0pzb24oKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgc3RhcnROcG1UYXNrKHRhc2tOYW1lOiBzdHJpbmcsIGFkZGl0aW9uYWxBcmd1bWVudHM/OiBzdHJpbmcgfCBvYmplY3QpIHtcbiAgICBpZiAoXy5pc09iamVjdChhZGRpdGlvbmFsQXJndW1lbnRzKSkge1xuICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA9IE9iamVjdC5rZXlzKGFkZGl0aW9uYWxBcmd1bWVudHMpXG4gICAgICAgIC5tYXAoayA9PiBgLS0ke2t9ICR7YWRkaXRpb25hbEFyZ3VtZW50c1trXX1gKVxuICAgICAgICAuam9pbignICcpO1xuICAgIH1cbiAgICBjb25zdCBjb21tYW5kID0gYG5wbSBydW4gJHt0YXNrTmFtZX0gJHthZGRpdGlvbmFsQXJndW1lbnRzID8gJyAtLSAnICsgYWRkaXRpb25hbEFyZ3VtZW50cyA6ICcnfWBcbiAgICBIZWxwZXJzLmluZm8oYFN0YXJ0aW5nIG5wbSB0YXNrOiBcIiR7Y29tbWFuZH1cImApO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvamVjdC5ydW4oY29tbWFuZCxcbiAgICAgIHsgb3V0cHV0OiB0cnVlLCBiaWdnZXJCdWZmZXI6dHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcHJlcGFyZUNvbW1hbmQoXG4gICAgb3B0aW9zbj86IENvcmVNb2RlbHMuTnBtSW5zdGFsbE9wdGlvbnMsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHtcbiAgICAgIHBrZyxcbiAgICAgIHJlbW92ZSxcbiAgICAgIHNpbGVudCxcbiAgICAgIHVzZVlhcm4sXG4gICAgICBmb3JjZSxcbiAgICAgIHJlbW92ZVlhcm5PclBhY2thZ2VKc29uTG9jayxcbiAgICAgIGdlbmVyYXRlWWFybk9yUGFja2FnZUpzb25Mb2NrLFxuICAgICAgaWdub3JlT3B0aW9uYWwsXG4gICAgfSA9IG9wdGlvc24gfHwge307XG5cbiAgICBmb3JjZSA9IHRydWU7IC8vIFRPRE8gUVVJQ0tfRklYXG5cbiAgICBsZXQgY29tbWFuZCA9ICcnO1xuICAgIGNvbnN0IGNvbW1vbk9wdGlvbnMgPSBgLS1pZ25vcmUtZW5naW5lc2A7XG5cbiAgICBpZiAodXNlWWFybikge1xuXG4gICAgICBjb25zdCBhcmdzRm9yRmFzdGVySW5zdGFsbCA9IGAke2ZvcmNlID8gJy0tZm9yY2UnIDogJyd9ICR7Y29tbW9uT3B0aW9uc30gYDtcbiAgICAgIGNvbW1hbmQgPVxuICAgICAgICBgJHtcbiAgICAgICAgICByZW1vdmVZYXJuT3JQYWNrYWdlSnNvbkxvY2tcbiAgICAgICAgICAgID8gYHJtICR7Y29uZmlnLmZpbGUueWFybl9sb2NrfSBgICtcbiAgICAgICAgICAgICAgYCYmIHRvdWNoICR7Y29uZmlnLmZpbGUueWFybl9sb2NrfSAmJiBgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1gICtcbiAgICAgICAgYHlhcm4gJHtwa2cgPyAocmVtb3ZlID8gJ3JlbW92ZScgOiAnYWRkJykgOiAnaW5zdGFsbCd9ICR7cGtnID8gcGtnLm5hbWUgOiAnJ30gYCArXG4gICAgICAgIGAgJHtnZW5lcmF0ZVlhcm5PclBhY2thZ2VKc29uTG9jayA/ICcnIDogJy0tbm8tbG9ja2ZpbGUnfSBgICtcbiAgICAgICAgYCAke2FyZ3NGb3JGYXN0ZXJJbnN0YWxsfSBgICtcbiAgICAgICAgYCAke3BrZyAmJiBwa2cuaW5zdGFsbFR5cGUgJiYgcGtnLmluc3RhbGxUeXBlID09PSAnLS1zYXZlLWRldicgPyAnLWRldicgOiAnJ30gYDtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IGFyZ3NGb3JGYXN0ZXJJbnN0YWxsID1cbiAgICAgICAgYCR7Zm9yY2UgPyAnLS1mb3JjZScgOiAnJ30gJHtjb21tb25PcHRpb25zfSAtLW5vLWF1ZGl0IGAgK1xuICAgICAgICBgJHtzaWxlbnQgPyAnLS1zaWxlbnQgLS1uby1wcm9ncmVzcycgOiAnJ30gICBgO1xuXG4gICAgICBjb21tYW5kID1cbiAgICAgICAgYCR7XG4gICAgICAgICAgcmVtb3ZlWWFybk9yUGFja2FnZUpzb25Mb2NrXG4gICAgICAgICAgICA/IGBybSAke2NvbmZpZy5maWxlLnBhY2thZ2VfbG9ja19qc29ufSBgICtcbiAgICAgICAgICAgICAgYCYmIHRvdWNoICR7Y29uZmlnLmZpbGUucGFja2FnZV9sb2NrX2pzb259ICAmJiBgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1gICtcbiAgICAgICAgYG5weCAtLW5vZGUtb3B0aW9ucz0tLW1heC1vbGQtc3BhY2Utc2l6ZT04MDAwIG5wbSBgICtcbiAgICAgICAgYCR7cmVtb3ZlID8gJ3VuaW5zdGFsbCcgOiAnaW5zdGFsbCd9ICR7cGtnID8gcGtnLm5hbWUgOiAnJ30gYCArXG4gICAgICAgIGAgJHtnZW5lcmF0ZVlhcm5PclBhY2thZ2VKc29uTG9jayA/ICcnIDogJy0tbm8tcGFja2FnZS1sb2NrJ30gYCArXG4gICAgICAgIGAgJHtpZ25vcmVPcHRpb25hbCA/ICctLWlnbm9yZS1vcHRpb25hbCcgOiAnJ30gYCArXG4gICAgICAgIGAgJHtwa2cgJiYgcGtnLmluc3RhbGxUeXBlID8gcGtnLmluc3RhbGxUeXBlIDogJyd9IGAgK1xuICAgICAgICBgICR7YXJnc0ZvckZhc3Rlckluc3RhbGx9IGA7XG5cbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmQ7XG4gIH1cblxufVxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWhlbHBlcnMgbGliL2Jhc2UvYmFzZS1ucG0taGVscGVycy50cyJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1ucG0taGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90bnAtaGVscGVycy9wcm9qZWN0cy90bnAtaGVscGVycy9zcmMvbGliL2Jhc2UvYmFzZS1ucG0taGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUszQyxNQUFNLE9BQU8sY0FFWCxTQUFRLHFCQUFxQjtJQUU3QixZQUFZLE9BQWdCO1FBQzFCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFHRDs7O09BR0c7SUFDSCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFJRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBSUQ7O09BRUc7SUFDSCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxVQUFrQjtRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFJRCxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLE9BQWU7UUFDdkQsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRCxJQUFJLHVCQUF1QjtRQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUM5RDtRQUNELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBSUQsSUFBSSxtQ0FBbUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9DLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDbEI7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FDViwrREFBK0QsQ0FDaEUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLCtDQUErQztRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2xCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQy9DLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDbEI7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLElBQUksQ0FDViwrREFBK0QsQ0FDaEUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFJRDs7T0FFRztJQUNILGFBQWE7SUFDYixJQUFJLFlBQVk7UUFDbEIsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQ7O09BRUc7SUFDSCxhQUFhO0lBQ2IsSUFBSSxZQUFZO1FBQ2xCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRDs7T0FFRztJQUNILEtBQUssQ0FBQyxnQkFBZ0I7UUFDeEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsSUFBSSxtQkFBbUI7UUFDekIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRDs7T0FFRztJQUNILElBQUksWUFBWTtRQUNkLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZFLENBQUM7SUFJRDs7T0FFRztJQUNILElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0UsQ0FBQztJQUlEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFFLENBQUM7SUFJRDs7T0FFRztJQUNILElBQUksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUlEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxzQkFBc0IsQ0FBQyxXQUF3QjtRQUM3QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDYixHQUFHLENBQUMsV0FBVyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7WUFDdEMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7WUFDdkMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxXQUFXLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztTQUNuQyxDQUFRLENBQUM7SUFDWixDQUFDO0lBSUQsaUJBQWlCLENBQUMsSUFBMEI7UUFDOUMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBSUQsaUJBQWlCO1FBQ2YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBSUQsS0FBSyxDQUFDLDRCQUE0QixDQUFDLE9BR2xDO1FBQ0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUlELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUlELEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLO1FBQzVELEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUlELG1CQUFtQixDQUFDLE9BQWdEO1FBQ3RFLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFJRDs7T0FFRztJQUNILElBQUksZ0JBQWdCO1FBQ3RCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FB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Q0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUN0QixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBRUY7QUFFQSxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHFFQUFxRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IF8gfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgSGVscGVycyB9IGZyb20gJy4uL2luZGV4JztcbmltcG9ydCB7IEJhc2VGZWF0dXJlRm9yUHJvamVjdCB9IGZyb20gJy4vYmFzZS1mZWF0dXJlLWZvci1wcm9qZWN0JztcbmltcG9ydCB0eXBlIHsgQmFzZVByb2plY3QgfSBmcm9tICcuL2Jhc2UtcHJvamVjdCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL3dlYnNxbCc7XG5pbXBvcnQgeyBQYWNrYWdlSnNvbiB9IGZyb20gJ3R5cGUtZmVzdCc7XG5pbXBvcnQgeyBDb3JlTW9kZWxzIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuXG5leHBvcnQgY2xhc3MgQmFzZU5wbUhlbHBlcnM8XG4gIFBST0pDRVQgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IGFueSxcbj4gZXh0ZW5kcyBCYXNlRmVhdHVyZUZvclByb2plY3Qge1xuICBwcml2YXRlIHBhY2thZ2VKU09OOiBQYWNrYWdlSnNvbjtcbiAgY29uc3RydWN0b3IocHJvamVjdDogUFJPSkNFVCkge1xuICAgIHN1cGVyKHByb2plY3QpO1xuICAgIHRoaXMucHJvamVjdCA9IHByb2plY3Q7XG4gICAgdGhpcy5yZWxvYWRQYWNrYWdlSnNvbkluTWVtb3J5KCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBpZiBzb21ldGhpbmcgZWxzZSBjaGFuZ2UgcGFja2FnZS5qc29uIGluIHRoaXMgcHJvamVjdFxuICAgKiBhbmQgeW91IGtub3cgdGhhdCB5b3UgbmVlZCB0byByZWxvYWQgaXQuLlxuICAgKi9cbiAgcmVsb2FkUGFja2FnZUpzb25Jbk1lbW9yeSgpOiB2b2lkIHtcbiAgICB0aGlzLnBhY2thZ2VKU09OID0gdGhpcy5wcm9qZWN0LnJlYWRKc29uKGNvbmZpZy5maWxlLnBhY2thZ2VfanNvbik7XG4gIH1cblxuXG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlSlNPTj8ubmFtZSB8fCAnJztcbiAgfVxuXG5cblxuICAvKipcbiAgICogdmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvbiAtPiBwcm9wZXJ0eSB2ZXJzaW9uXG4gICAqL1xuICBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2VKU09OPy52ZXJzaW9uO1xuICB9XG5cbiAgc2V0IHZlcnNpb24obmV3VmVyc2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5wYWNrYWdlSlNPTi52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB0aGlzLnByb2plY3Qud3JpdGVKc29uKGNvbmZpZy5maWxlLnBhY2thZ2VfanNvbiwgdGhpcy5wYWNrYWdlSlNPTik7XG4gIH1cblxuXG5cbiAgdXBkYXRlRGVwZW5kZW5jeShwYWNrYWdlTmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB2b2lkIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldCB2ZXJzaW9uV2l0aFBhdGNoUGx1c09uZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZlciA9IHRoaXMudmVyc2lvbi5zcGxpdCgnLicpO1xuICAgIGlmICh2ZXIubGVuZ3RoID4gMCkge1xuICAgICAgdmVyW3Zlci5sZW5ndGggLSAxXSA9IChwYXJzZUludChfLmxhc3QodmVyKSkgKyAxKS50b1N0cmluZygpO1xuICAgIH1cbiAgICByZXR1cm4gdmVyLmpvaW4oJy4nKTtcbiAgfVxuXG5cblxuICBnZXQgdmVyc2lvbldpdGhNaW5vclBsdXNPbmVBbmRQYXRjaFplcm8oKTogc3RyaW5nIHtcbiAgICBjb25zdCB2ZXIgPSB0aGlzLnZlcnNpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAodmVyLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZlclsxXSA9IChwYXJzZUludCh2ZXJbMV0pICsgMSkudG9TdHJpbmcoKTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMjsgaW5kZXggPCB2ZXIubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZlcltpbmRleF0gPSAnMCc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIEhlbHBlcnMud2FybihcbiAgICAgICAgYFtucG0tcHJvamVjdF0gc29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBidW1waW5nIG1pbm9yIHZlcnNpb25gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlci5qb2luKCcuJyk7XG4gIH1cblxuXG5cbiAgZ2V0IHZlcnNpb25XaXRoTWFqb3JQbHVzT25lQW5kTWlub3JaZXJvQW5kUGF0Y2haZXJvKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdmVyID0gdGhpcy52ZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHZlci5sZW5ndGggPiAwKSB7XG4gICAgICB2ZXJbMF0gPSAocGFyc2VJbnQoXy5maXJzdCh2ZXIpKSArIDEpLnRvU3RyaW5nKCk7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgdmVyLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB2ZXJbaW5kZXhdID0gJzAnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBIZWxwZXJzLndhcm4oXG4gICAgICAgIGBbbnBtLXByb2plY3RdIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggYnVtcGluZyBtYWpvciB2ZXJzaW9uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB2ZXIuam9pbignLicpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBNYWpvciBWZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICAvLyBAdHMtaWdub3JlXG4gIGdldCBtYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogTWlub3IgVmVyc2lvbiBmcm9tIHBhY2thZ2UuanNvblxuICAgKi9cbiAgLy8gQHRzLWlnbm9yZVxuICBnZXQgbWlub3JWZXJzaW9uKCk6IG51bWJlciB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgYXN5bmMgYnVtcFBhdGNoVmVyc2lvbigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXQgdmVyc2lvblBhdGhBc051bWJlcigpOiBudW1iZXIge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIG5wbSBkZXBlbmRlbmNpZXMgZnJvbSBwYWNrYWdlLmpzb25cbiAgICovXG4gIGdldCBkZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhY2thZ2VKU09OID8gdGhpcy5wYWNrYWdlSlNPTi5kZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHBlZXJEZXBlbmRlbmNpZXMgZGVwZW5kZW5jaWVzXG4gICAqL1xuICBnZXQgcGVlckRlcGVuZGVuY2llcygpIHtcbiAgICByZXR1cm4gKHRoaXMucGFja2FnZUpTT04gPyB0aGlzLnBhY2thZ2VKU09OLnBlZXJEZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGRldkRlcGVuZGVuY2llcyBkZXBlbmRlbmNpZXNcbiAgICovXG4gIGdldCBkZXZEZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuICh0aGlzLnBhY2thZ2VKU09OID8gdGhpcy5wYWNrYWdlSlNPTi5kZXZEZXBlbmRlbmNpZXMgOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHJlc29sdXRpb25zIGRlcGVuZGVuY2llc1xuICAgKi9cbiAgZ2V0IHJlc29sdXRpb25zKCkge1xuICAgIHJldHVybiAodGhpcy5wYWNrYWdlSlNPTiA/IHRoaXMucGFja2FnZUpTT05bJ3Jlc29sdXRpb25zJ10gOiB7fSkgfHwge307XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIG9iamVjdCB3aXRsIGFsbCBkZXBzIGZyb20gY3VycmVudCBwcm9qZWN0IHBhY2thZ2UganNvblxuICAgKi9cbiAgZ2V0IGFsbERlcGVuZGVuY2llcygpOiB7IFtwYWNrYWdlTmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB0aGlzLmFsbERlcHNGcm9tUGFja2FnZUpzb24odGhpcy5wYWNrYWdlSlNPTik7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgb2JqZWN0IHdpdGwgYWxsIGRlcHMgZnJvbSBwYWNrYWdlIGpzb25cbiAgICovXG4gIGFsbERlcHNGcm9tUGFja2FnZUpzb24ocGFja2FnZUpzb246IFBhY2thZ2VKc29uKSB7XG4gICAgcmV0dXJuIF8ubWVyZ2Uoe1xuICAgICAgLi4uKHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llcyB8fCB7fSksXG4gICAgICAuLi4ocGFja2FnZUpzb24ucGVlckRlcGVuZGVuY2llcyB8fCB7fSksXG4gICAgICAuLi4ocGFja2FnZUpzb24uZGVwZW5kZW5jaWVzIHx8IHt9KSxcbiAgICAgIC4uLihwYWNrYWdlSnNvbi5yZXNvbHV0aW9ucyB8fCB7fSksXG4gICAgfSkgYXMgYW55O1xuICB9XG5cblxuXG4gIGxpbmtOb2RlTW9kdWxlc1RvKHByb2o6IFBhcnRpYWw8QmFzZVByb2plY3Q+KSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcHJlZmVyWWFybk92ZXJOcG0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIGFzeW5jIG1ha2VTdXJlTm9kZU1vZHVsZXNJbnN0YWxsZWQob3B0aW9ucz86IHtcbiAgICB1c2VZYXJuPzogYm9vbGVhbjtcbiAgICBmb3JjZT86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBpZiAodGhpcy5lbXB0eU5vZGVNb2R1bGVzKSB7XG4gICAgICB0aGlzLnJlaW5zdGFsTm9kZU1vZHVsZXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cblxuXG4gIGRlbGV0ZU5vZGVNb2R1bGVzKCkge1xuICAgIHRoaXMucHJvamVjdC5yZW1vdmUoY29uZmlnLmZvbGRlci5ub2RlX21vZHVsZXMpO1xuICB9XG5cblxuXG4gIGFzeW5jIHJlaW5zdGFsbE5vZGVNb2R1bGVzKGZvcmNlclJlbW92ZU5vZGVNb2R1bGVzID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICByZWluc3RhbE5vZGVNb2R1bGVzKG9wdGlvbnM/OiB7IHVzZVlhcm4/OiBib29sZWFuOyBmb3JjZT86IGJvb2xlYW4gfSkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpZiBub2RlX21vZHVsZXMgZm9sZGVyIGlzIGVtcHR5XG4gICAqL1xuICBnZXQgZW1wdHlOb2RlTW9kdWxlcygpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBhc3luYyByZXNldFBhY2thZ2VMb2NrSnNvbigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBzdGFydE5wbVRhc2sodGFza05hbWU6IHN0cmluZywgYWRkaXRpb25hbEFyZ3VtZW50cz86IHN0cmluZyB8IG9iamVjdCkge1xuICAgIGlmIChfLmlzT2JqZWN0KGFkZGl0aW9uYWxBcmd1bWVudHMpKSB7XG4gICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID0gT2JqZWN0LmtleXMoYWRkaXRpb25hbEFyZ3VtZW50cylcbiAgICAgICAgLm1hcChrID0+IGAtLSR7a30gJHthZGRpdGlvbmFsQXJndW1lbnRzW2tdfWApXG4gICAgICAgIC5qb2luKCcgJyk7XG4gICAgfVxuICAgIGNvbnN0IGNvbW1hbmQgPSBgbnBtIHJ1biAke3Rhc2tOYW1lfSAke1xuICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA/ICcgLS0gJyArIGFkZGl0aW9uYWxBcmd1bWVudHMgOiAnJ1xuICAgIH1gO1xuICAgIEhlbHBlcnMuaW5mbyhgU3RhcnRpbmcgbnBtIHRhc2s6IFwiJHtjb21tYW5kfVwiYCk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9qZWN0LnJ1bihjb21tYW5kLCB7XG4gICAgICBvdXRwdXQ6IHRydWUsXG4gICAgICBiaWdnZXJCdWZmZXI6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuXG5cbiAgYXN5bmMgcHJlcGFyZUNvbW1hbmQoXG4gICAgb3B0aW9zbj86IENvcmVNb2RlbHMuTnBtSW5zdGFsbE9wdGlvbnMsXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IHtcbiAgICAgIHBrZyxcbiAgICAgIHJlbW92ZSxcbiAgICAgIHNpbGVudCxcbiAgICAgIHVzZVlhcm4sXG4gICAgICBmb3JjZSxcbiAgICAgIHJlbW92ZVlhcm5PclBhY2thZ2VKc29uTG9jayxcbiAgICAgIGdlbmVyYXRlWWFybk9yUGFja2FnZUpzb25Mb2NrLFxuICAgICAgaWdub3JlT3B0aW9uYWwsXG4gICAgfSA9IG9wdGlvc24gfHwge307XG5cbiAgICBmb3JjZSA9IHRydWU7IC8vIFRPRE8gUVVJQ0tfRklYXG5cbiAgICBsZXQgY29tbWFuZCA9ICcnO1xuICAgIGNvbnN0IGNvbW1vbk9wdGlvbnMgPSBgLS1pZ25vcmUtZW5naW5lc2A7XG5cbiAgICBpZiAodXNlWWFybikge1xuXG4gICAgICBjb25zdCBhcmdzRm9yRmFzdGVySW5zdGFsbCA9IGAke2ZvcmNlID8gJy0tZm9yY2UnIDogJyd9ICR7Y29tbW9uT3B0aW9uc30gYDtcbiAgICAgIGNvbW1hbmQgPVxuICAgICAgICBgJHtcbiAgICAgICAgICByZW1vdmVZYXJuT3JQYWNrYWdlSnNvbkxvY2tcbiAgICAgICAgICAgID8gYHJtICR7Y29uZmlnLmZpbGUueWFybl9sb2NrfSBgICtcbiAgICAgICAgICAgICAgYCYmIHRvdWNoICR7Y29uZmlnLmZpbGUueWFybl9sb2NrfSAmJiBgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1gICtcbiAgICAgICAgYHlhcm4gJHtwa2cgPyAocmVtb3ZlID8gJ3JlbW92ZScgOiAnYWRkJykgOiAnaW5zdGFsbCd9ICR7cGtnID8gcGtnLm5hbWUgOiAnJ30gYCArXG4gICAgICAgIGAgJHtnZW5lcmF0ZVlhcm5PclBhY2thZ2VKc29uTG9jayA/ICcnIDogJy0tbm8tbG9ja2ZpbGUnfSBgICtcbiAgICAgICAgYCAke2FyZ3NGb3JGYXN0ZXJJbnN0YWxsfSBgICtcbiAgICAgICAgYCAke3BrZyAmJiBwa2cuaW5zdGFsbFR5cGUgJiYgcGtnLmluc3RhbGxUeXBlID09PSAnLS1zYXZlLWRldicgPyAnLWRldicgOiAnJ30gYDtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IGFyZ3NGb3JGYXN0ZXJJbnN0YWxsID1cbiAgICAgICAgYCR7Zm9yY2UgPyAnLS1mb3JjZScgOiAnJ30gJHtjb21tb25PcHRpb25zfSAtLW5vLWF1ZGl0IGAgK1xuICAgICAgICBgJHtzaWxlbnQgPyAnLS1zaWxlbnQgLS1uby1wcm9ncmVzcycgOiAnJ30gICBgO1xuXG4gICAgICBjb21tYW5kID1cbiAgICAgICAgYCR7XG4gICAgICAgICAgcmVtb3ZlWWFybk9yUGFja2FnZUpzb25Mb2NrXG4gICAgICAgICAgICA/IGBybSAke2NvbmZpZy5maWxlLnBhY2thZ2VfbG9ja19qc29ufSBgICtcbiAgICAgICAgICAgICAgYCYmIHRvdWNoICR7Y29uZmlnLmZpbGUucGFja2FnZV9sb2NrX2pzb259ICAmJiBgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1gICtcbiAgICAgICAgYG5weCAtLW5vZGUtb3B0aW9ucz0tLW1heC1vbGQtc3BhY2Utc2l6ZT04MDAwIG5wbSBgICtcbiAgICAgICAgYCR7cmVtb3ZlID8gJ3VuaW5zdGFsbCcgOiAnaW5zdGFsbCd9ICR7cGtnID8gcGtnLm5hbWUgOiAnJ30gYCArXG4gICAgICAgIGAgJHtnZW5lcmF0ZVlhcm5PclBhY2thZ2VKc29uTG9jayA/ICcnIDogJy0tbm8tcGFja2FnZS1sb2NrJ30gYCArXG4gICAgICAgIGAgJHtpZ25vcmVPcHRpb25hbCA/ICctLWlnbm9yZS1vcHRpb25hbCcgOiAnJ30gYCArXG4gICAgICAgIGAgJHtwa2cgJiYgcGtnLmluc3RhbGxUeXBlID8gcGtnLmluc3RhbGxUeXBlIDogJyd9IGAgK1xuICAgICAgICBgICR7YXJnc0ZvckZhc3Rlckluc3RhbGx9IGA7XG5cbiAgICB9XG4gICAgcmV0dXJuIGNvbW1hbmQ7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSByZWdpc3RyeSB3aXRob3V0IHNwZWNpZmllZCByZWdpc3RyIGlzIGNoZWNraW5nIG5wbSByZWdpc3RyeVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXN5bmMgaXNMb2dnZWRJblRvUmVnaXN0cnkocmVnaXN0cnk/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBQcm9tcHQgdGhlIHVzZXIgdG8gbG9nIGluIHRvIGEgc3BlY2lmaWMgbnBtIHJlZ2lzdHJ5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3JlZ2lzdHJ5XSAtIE9wdGlvbmFsIG5wbSByZWdpc3RyeSBVUkwuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGxvZ2luIHByb2Nlc3MgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgbG9naW5Ub1JlZ2lzdHJ5KHJlZ2lzdHJ5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGFzeW5jIG1ha2VTdXJlTG9nZ2VkSW5Ub05wbVJlZ2lzdHJ5KHJlZ2lzdHJ5Pzogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogdXNlIG1ha2VTdXJlTG9nZ2VkSW5Ub05wbVJlZ2lzdHJ5KClcbiAgICovXG4gIGNoZWNrSWZMb2dnaW5JblRvTnBtKCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS9iYXNlLW5wbS1oZWxwZXJzLnRzIl19
|
|
@@ -56,6 +56,9 @@ class BaseProject {
|
|
|
56
56
|
/* */
|
|
57
57
|
/* */
|
|
58
58
|
/* */
|
|
59
|
+
/* */
|
|
60
|
+
/* */
|
|
61
|
+
/* */
|
|
59
62
|
}
|
|
60
63
|
get isMonorepo() {
|
|
61
64
|
return false;
|
|
@@ -214,13 +217,13 @@ class BaseProject {
|
|
|
214
217
|
.split('/')
|
|
215
218
|
.slice(-1 * sliceMinus)
|
|
216
219
|
.join('/');
|
|
217
|
-
const result = (shortPath.includes(crossPlatformPath(this.location)) ? '' : '(..)') +
|
|
220
|
+
const result = (shortPath.includes(crossPlatformPath(this.location)) ? '/' : '(..)') +
|
|
218
221
|
this.checkAndBoldenPath(this.location)
|
|
219
222
|
.split('/')
|
|
220
223
|
.slice(-1 * sliceMinus)
|
|
221
224
|
.join('/') +
|
|
222
225
|
`(${nameFromPackageJson})`;
|
|
223
|
-
this.cache['genericName'] = result;
|
|
226
|
+
this.cache['genericName'] = result.replace(/\/\//g, '/');
|
|
224
227
|
return this.cache['genericName'];
|
|
225
228
|
}
|
|
226
229
|
checkAndBoldenPath(fullPath) {
|
|
@@ -375,6 +378,7 @@ class BaseProject {
|
|
|
375
378
|
/* */
|
|
376
379
|
/* */
|
|
377
380
|
/* */
|
|
381
|
+
/* */
|
|
378
382
|
return (void 0);
|
|
379
383
|
}
|
|
380
384
|
readJson(fileRelativeToProjectPath) {
|
|
@@ -642,6 +646,15 @@ class BaseProject {
|
|
|
642
646
|
async build(buildOptions) {
|
|
643
647
|
throw new Error('TODO IMPLEMENT');
|
|
644
648
|
}
|
|
649
|
+
/**
|
|
650
|
+
* publish project to npm
|
|
651
|
+
*/
|
|
652
|
+
async publish(publishOptions) {
|
|
653
|
+
throw new Error('TODO IMPLEMENT');
|
|
654
|
+
}
|
|
655
|
+
async release(releaseOptions) {
|
|
656
|
+
throw new Error('TODO IMPLEMENT');
|
|
657
|
+
}
|
|
645
658
|
/**
|
|
646
659
|
* lint porject
|
|
647
660
|
*/
|
|
@@ -685,4 +698,4 @@ ${(this.linkedProjects.linkedProjects || [])
|
|
|
685
698
|
export { BaseProject };
|
|
686
699
|
;
|
|
687
700
|
({}); // @--end-of-file-for-module=tnp-helpers lib/base/base-project.ts
|
|
688
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9iYXNlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlMLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFrQixXQUFXLEVBQUksT0FBTyxHQUE0RCxNQUFNLFVBQVUsQ0FBQyxDQUFBLEtBQUs7QUFDakksS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFjOUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQXNCLFdBQVc7YUFPeEIsUUFBRyxHQUFHLElBQUksbUJBQW1CLENBQWMsV0FBVyxDQUFDLEFBQXBELENBQXFEO2FBT2pELFVBQUssR0FBUSxFQUFFLEFBQVYsQ0FBVztJQUM5QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFxQkQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdELGFBQWE7SUFDYjtJQUNFOztPQUVHO0lBQ0gsUUFB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QUFDLGlFQUFpRSIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBDTEkgfSBmcm9tICd0bnAtY2xpL3dlYnNxbCc7XG5pbXBvcnQgeyBwYXRoLCBjcm9zc1BsYXRmb3JtUGF0aCB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICd0bnAtY29uZmlnL3dlYnNxbCc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7ICAgQ29tbWl0RGF0YSwgICBDb3JlUHJvamVjdCwgICBIZWxwZXJzLCAgIExpbmtlZFBvcmplY3RzQ29uZmlnLCAgIExpbmtlZFByb2plY3QsICAgVHlwZU9mQ29tbWl0LCB9IGZyb20gJy4uL2luZGV4JzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBCYXNlUHJvamVjdFJlc29sdmVyIH0gZnJvbSAnLi9iYXNlLXByb2plY3QtcmVzb2x2ZXInO1xuaW1wb3J0IHsgICBCYXNlUHJvamVjdFR5cGUsICAgTGlicmFyaWVzQnVpbGRPcHRpb25zLCAgIExpYnJhcnlCdWlsZENvbW1hbmRPcHRpb25zLCAgIE5nUHJvamVjdCwgfSBmcm9tICcuLi9tb2RlbHMnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgdHlwZSB7IEJhc2VMaWJyYXJ5QnVpbGQgfSBmcm9tICcuL2Jhc2UtbGlicmFyeS1idWlsZCc7XG5pbXBvcnQgeyBCYXNlTnBtSGVscGVycyB9IGZyb20gJy4vYmFzZS1ucG0taGVscGVycyc7XG5pbXBvcnQgeyBCYXNlTGlua2VkUHJvamVjdHMgfSBmcm9tICcuL2Jhc2UtbGlua2VkLXByb2plY3RzJztcbmltcG9ydCB7IEJhc2VHaXQgfSBmcm9tICcuL2Jhc2UtZ2l0JztcbmltcG9ydCB7IEJhc2VWc2NvZGVIZWxwZXJzIH0gZnJvbSAnLi9iYXNlLXZzY29kZSc7XG5cblxuY29uc3QgdGFrZW5Qb3J0cyA9IFtdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVByb2plY3Q8XG4gIFBST0pDRVQgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IGFueSxcbiAgVFlQRSA9IEJhc2VQcm9qZWN0VHlwZSxcbj4ge1xuXG5cblxuICBzdGF0aWMgaW5zID0gbmV3IEJhc2VQcm9qZWN0UmVzb2x2ZXI8QmFzZVByb2plY3Q+KEJhc2VQcm9qZWN0KTtcblxuXG5cblxuXG4gIHB1YmxpYyBjYWNoZTogYW55ID0ge307XG4gIHB1YmxpYyBzdGF0aWMgY2FjaGU6IGFueSA9IHt9O1xuICBwdWJsaWMgZ2V0IGdsb2JhbENhY2hlKCkge1xuICAgIHJldHVybiBCYXNlUHJvamVjdC5jYWNoZTtcbiAgfVxuICByZWFkb25seSB0eXBlOiBUWVBFIHwgc3RyaW5nID0gJ3Vua25vdyc7XG5cbiAgLyoqXG4gICAqIHJlc29sdmUgaW5zdGFuY2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGluczogQmFzZVByb2plY3RSZXNvbHZlcjxQUk9KQ0VUPjtcbiAgLyoqXG4gICAqIFVuaXF1ZSBmcmVlIHBvcnQgZm9yIHByb2plY3QgaW5zdGFuY2VcbiAgICogb25seSBhdmFpbGFibGUgYWZ0ZXIgZXhlY3V0aW5nICp0aGlzLmFzc2lnbkZyZWVQb3J0KCkqXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBzdHJpbmc7XG5cbiAgcHVibGljIGxpYnJhcnlCdWlsZDogQmFzZUxpYnJhcnlCdWlsZDtcbiAgcHVibGljIG5wbUhlbHBlcnM6IEJhc2VOcG1IZWxwZXJzO1xuICBwdWJsaWMgbGlua2VkUHJvamVjdHM6IEJhc2VMaW5rZWRQcm9qZWN0cztcbiAgcHVibGljIHZzQ29kZUhlbHBlcnM6IEJhc2VWc2NvZGVIZWxwZXJzO1xuICBwdWJsaWMgZ2l0OiBCYXNlR2l0O1xuXG5cbiAgcHJpdmF0ZSBfX2xvY2F0aW9uOiBzdHJpbmc7XG4gIGdldCBsb2NhdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9fbG9jYXRpb247XG4gIH1cbiAgc2V0IGxvY2F0aW9uKHY6IHN0cmluZykge1xuICAgIHRoaXMuX19sb2NhdGlvbiA9IGNyb3NzUGxhdGZvcm1QYXRoKHYpO1xuICB9XG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIGRvZXNuJ3QgbmVlZCB0byBiZSByZWFsIHBhdGggLT4gY2FuIGJlIGxpbmtcbiAgICAgKi9cbiAgICBsb2NhdGlvbjogc3RyaW5nLFxuICApIHtcbiAgICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBnZXQgaXNNb25vcmVwbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXG5cbiAgcHJvdGVjdGVkIG9yZGVyQ29yZVByb2plY3RzKGNvcmVQcm9qZWN0czogQ29yZVByb2plY3RbXSk6IENvcmVQcm9qZWN0W10ge1xuICAgIGNvbnN0IHByb2plY3RNYXAgPSBuZXcgTWFwPENvcmVQcm9qZWN0LCBDb3JlUHJvamVjdFtdPigpO1xuXG5cbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgY29yZVByb2plY3RzKSB7XG4gICAgICBwcm9qZWN0TWFwLnNldChwcm9qZWN0LCBbXSk7XG4gICAgfVxuXG5cbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgY29yZVByb2plY3RzKSB7XG4gICAgICBpZiAoIXByb2plY3RNYXAuaGFzKHByb2plY3QuZXh0ZW5kcykpIHtcbiAgICAgICAgcHJvamVjdE1hcC5zZXQocHJvamVjdC5leHRlbmRzLCBbXSk7XG4gICAgICB9XG4gICAgICBwcm9qZWN0TWFwLmdldChwcm9qZWN0LmV4dGVuZHMpIS5wdXNoKHByb2plY3QpO1xuICAgIH1cblxuICAgIGNvbnN0IG9yZGVyZWRQcm9qZWN0czogQ29yZVByb2plY3RbXSA9IFtdO1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PENvcmVQcm9qZWN0PigpO1xuXG4gICAgY29uc3QgdmlzaXQgPSAocHJvamVjdDogQ29yZVByb2plY3QpID0+IHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMocHJvamVjdCkpIHtcbiAgICAgICAgdmlzaXRlZC5hZGQocHJvamVjdCk7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IHByb2plY3RNYXAuZ2V0KHByb2plY3QpO1xuICAgICAgICBpZiAoZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgICAgICB2aXNpdChkZXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvcmRlcmVkUHJvamVjdHMucHVzaChwcm9qZWN0KTtcbiAgICAgIH1cbiAgICB9O1xuXG5cbiAgICBmb3IgKGNvbnN0IHByb2plY3Qgb2YgY29yZVByb2plY3RzKSB7XG4gICAgICB2aXNpdChwcm9qZWN0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXJlZFByb2plY3RzLnJldmVyc2UoKTtcbiAgfVxuXG5cblxuXG4gIGdldCBjb3JlKCk6IENvcmVQcm9qZWN0IHtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5jYWNoZVsnY29yZSddKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbJ2NvcmUnXTtcbiAgICB9XG5cbiAgICBsZXQgY29yZVByb2plY3RzID0gQ29yZVByb2plY3QuY29yZVByb2plY3RzLmZpbHRlcihwID0+XG4gICAgICBwLnJlY29nbml6ZWRGbih0aGlzIGFzIGFueSksXG4gICAgKTtcbiAgICBjb3JlUHJvamVjdHMgPSB0aGlzLm9yZGVyQ29yZVByb2plY3RzKGNvcmVQcm9qZWN0cyk7XG5cblxuICAgIHRoaXMuY2FjaGVbJ2NvcmUnXSA9IF8uZmlyc3QoY29yZVByb2plY3RzKTtcbiAgICByZXR1cm4gdGhpcy5jYWNoZVsnY29yZSddO1xuICB9XG5cblxuXG4gIGdldCBsaW5rZWRQcm9qZWN0c0V4aXN0ZWQoKTogUFJPSkNFVFtdIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHB1YmxpYyBzZXRUeXBlKHR5cGU6IFRZUEUpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxuXG5cblxuICBwdWJsaWMgdHlwZUlzKC4uLnR5cGVzOiBUWVBFW10pIHtcbiAgICByZXR1cm4gdGhpcy50eXBlICYmIHR5cGVzLmluY2x1ZGVzKHRoaXMudHlwZSBhcyBhbnkpO1xuICB9XG5cblxuXG4gIHB1YmxpYyB0eXBlSXNOb3QoLi4udHlwZXM6IFRZUEVbXSkge1xuICAgIHJldHVybiAhdGhpcy50eXBlSXMoLi4udHlwZXMpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBwcm9qZWN0IGZvbGRlciBiYXNlbmFtZVxuICAgKi9cbiAgZ2V0IGJhc2VuYW1lKCk6IHN0cmluZyB7XG5cbiAgICByZXR1cm4gcGF0aC5iYXNlbmFtZSh0aGlzLmxvY2F0aW9uKTtcblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBuYW1lIGZyb20gcGFja2FnZS5qc29uXG4gICAqL1xuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm5wbUhlbHBlcnM/Lm5hbWUgfHwgdGhpcy5uYW1lRnJvbVBvbVhNTDtcbiAgfVxuXG4gIGdldCBuYW1lRnJvbVBvbVhNTCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFydGlmYWN0SWRQYXR0ZXJuID0gLzxhcnRpZmFjdElkPihbXjxdKyk8XFwvYXJ0aWZhY3RJZD4vO1xuICAgIGNvbnN0IG1hdGNoID0gKHRoaXMucmVhZEZpbGUoJ3BvbS54bWwnKSB8fCAnJykubWF0Y2goYXJ0aWZhY3RJZFBhdHRlcm4pO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaFsxXSkge1xuICAgICAgcmV0dXJuIG1hdGNoWzFdO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuXG5cbiAgcHJvdGVjdGVkIGdldEZvbGRlcnNGb3JQb3NzaWJsZVByb2plY3RDaGlsZHJlbigpOiBzdHJpbmdbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBnZXRBbGxDaGlsZHJlbigpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGFsaWFzIHRvIGdldEFsbENoaWxkcmVuXG4gICAqL1xuICBnZXQgY2hpbGRyZW4oKTogUFJPSkNFVFtdIHtcblxuICAgIHJldHVybiB0aGlzLmdldEFsbENoaWxkcmVuKCk7XG5cbiAgfVxuXG5cblxuICBnZXRDaGlsZEJ5KG5hbWVPckJhc2VuYW1lOiBzdHJpbmcsIGVycm9ycyA9IHRydWUpOiBQUk9KQ0VUIHtcblxuICAgIGNvbnN0IGMgPSB0aGlzLmNoaWxkcmVuLmZpbmQoXG4gICAgICBjID0+IGMubmFtZSA9PT0gbmFtZU9yQmFzZW5hbWUgfHwgYy5iYXNlbmFtZSA9PT0gbmFtZU9yQmFzZW5hbWUsXG4gICAgKTtcbiAgICBpZiAoZXJyb3JzICYmICFjKSB7XG4gICAgICBIZWxwZXJzLndhcm4oXG4gICAgICAgIGBQcm9qZWN0IGRvZXNudCBjb250YWluIGNoaWxkIHdpdGggbmFtZSBvciBiYXNlbmFtZTogJHtuYW1lT3JCYXNlbmFtZX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGM7XG5cbiAgfVxuXG5cblxuICBnZXQgcGFyZW50KCk6IFBST0pDRVQge1xuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHRoaXMubG9jYXRpb24pIHx8IHRoaXMubG9jYXRpb24udHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5zLkZyb20ocGF0aC5qb2luKHRoaXMubG9jYXRpb24sICcuLicpKTtcblxuICB9XG5cblxuXG4gIGdldCBncmFuZHBhKCk6IFBST0pDRVQge1xuXG4gICAgaWYgKCFfLmlzU3RyaW5nKHRoaXMubG9jYXRpb24pIHx8IHRoaXMubG9jYXRpb24udHJpbSgpID09PSAnJykge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG4gICAgY29uc3QgZ3JhbmRwYSA9IHRoaXMuaW5zLkZyb20ocGF0aC5qb2luKHRoaXMubG9jYXRpb24sICcuLicsICcuLicpKTtcbiAgICByZXR1cm4gZ3JhbmRwYTtcblxuICB9XG5cblxuXG4gIGdldCBnZW5lcmljTmFtZSgpIHtcblxuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmNhY2hlWydnZW5lcmljTmFtZSddKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGVbJ2dlbmVyaWNOYW1lJ107XG4gICAgfVxuICAgIGxldCBuYW1lRnJvbVBhY2thZ2VKc29uID0gdGhpcy5uYW1lO1xuLyogKi9cbi8qICovXG4gIFxuXG4gICAgY29uc3Qgc2xpY2VNaW51cyA9IDg7XG4gICAgY29uc3Qgc2hvcnRQYXRoID1cbiAgICAgICcvJyArXG4gICAgICBjcm9zc1BsYXRmb3JtUGF0aCh0aGlzLmxvY2F0aW9uKVxuICAgICAgICAuc3BsaXQoJy8nKVxuICAgICAgICAuc2xpY2UoLTEgKiBzbGljZU1pbnVzKVxuICAgICAgICAuam9pbignLycpO1xuXG4gICAgY29uc3QgcmVzdWx0ID1cbiAgICAgIChzaG9ydFBhdGguaW5jbHVkZXMoY3Jvc3NQbGF0Zm9ybVBhdGgodGhpcy5sb2NhdGlvbikpID8gJycgOiAnKC4uKScpICtcbiAgICAgIHRoaXMuY2hlY2tBbmRCb2xkZW5QYXRoKHRoaXMubG9jYXRpb24pXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5zbGljZSgtMSAqIHNsaWNlTWludXMpXG4gICAgICAgIC5qb2luKCcvJykgK1xuICAgICAgYCgke25hbWVGcm9tUGFja2FnZUpzb259KWA7XG5cbiAgICB0aGlzLmNhY2hlWydnZW5lcmljTmFtZSddID0gcmVzdWx0O1xuICAgIHJldHVybiB0aGlzLmNhY2hlWydnZW5lcmljTmFtZSddO1xuXG4gIH1cblxuXG5cbiAgcHJpdmF0ZSBjaGVja0FuZEJvbGRlblBhdGgoZnVsbFBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gZnVsbFBhdGguc3BsaXQoJy8nKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHBhcnRzLm1hcCgocGFydCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHBhdGhUb2NoZWNrID0gcGFydHMuc2xpY2UoMCwgaW5kZXggKyAxKS5qb2luKCcvJyk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmpvaW4oJy8nKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogc2FtZSBoYXMgcHJvamVjdC5oYXNGaWxlKCk7XG4gICAqL1xuICBwYXRoRXhpc3RzKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5oYXNGaWxlKHJlbGF0aXZlUGF0aCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHNhbWUgYXMgcHJvamVjdC5wYXRoRXhpc3RzKCk7XG4gICAqL1xuICBoYXNGaWxlKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pOiBib29sZWFuIHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuICBoYXNGb2xkZXIocmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBzYW1lIGFzIHByb2plY3QucGF0aGhhc0ZpbGVFeGlzdHMoKTtcbiAgICogYnV0IHdpdGggcGF0aC5yZXNvbHZlXG4gICAqL1xuICBjb250YWluc0ZpbGUoZmlsZVJlbGF0aXZlVG9Qcm9qZWN0UGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUoXG4gICAgICBwYXRoLmpvaW4odGhpcy5sb2NhdGlvbiwgZmlsZVJlbGF0aXZlVG9Qcm9qZWN0UGF0aCksXG4gICAgKTtcbiAgICByZXR1cm4gSGVscGVycy5leGlzdHMoZnVsbFBhdGgpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBhYnNvbHV0ZSBwYXRoOlxuICAgKiBjb25jYXRlZCBwcm9qZWN0IGxvY2F0aW9uIHdpdGggcmVsYXRpdmUgcGF0aFxuICAgKi9cbiAgcGF0aEZvcihyZWxhdGl2ZVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgd3JpdGVKc29uKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBqc29uOiBvYmplY3QpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXMgZXhlY3V0ZSBpbnN0ZWFkXG4gICAqIHVzZSBvdXRwdXQgZnJvbSBvciBtb3JlIHByZWNpZXNlIGNyYWZ0ZWQgYXBpXG4gICAqL1xuICBydW4oY29tbWFuZDogc3RyaW5nLCBvcHRpb25zPzogT21pdDxDb3JlTW9kZWxzLlJ1bk9wdGlvbnMsICdjd2QnPikge1xuICAgIGxldCBvcHQ6IENvcmVNb2RlbHMuUnVuT3B0aW9ucztcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICByZXR1cm4gSGVscGVycy5ydW4oY29tbWFuZCwgb3B0KTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogc2FtZSBhcyBydW4gYnV0IGFzeW5jXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZXhlY3V0ZShcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IENvcmVNb2RlbHMuRXhlY3V0ZU9wdGlvbnMgJiB7IHNob3dDb21tYW5kPzogYm9vbGVhbiB9LFxuICApOiBQcm9taXNlPGFueT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHRyeSBydW4gYnV0IGNvbnRpbnVlIHdoZW4gaXQgZmFpbHNcbiAgICogQHBhcmFtIGNvbW1hbmRcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHRyeVJ1blN5bmMoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuLyogKi9cbi8qICovXG4gIFxuICApOiB2b2lkIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgb3V0cHV0RnJvbShcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4vKiAqL1xuLyogKi9cbiAgXG4gICkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHJlbW92ZUZpbGUoZmlsZVJlbGF0aXZlVG9Qcm9qZWN0UGF0aDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVhZEZpbGUoZmlsZVJlbGF0aXZlVG9Qcm9qZWN0UGF0aDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVhZEpzb248VCA9IHt9PihmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpOiBUIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICByZW1vdmUocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGV4YWN0UGF0aCA9IHRydWUpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgcmVtb3ZlRm9sZGVyQnlSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoVG9Gb2xkZXI6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIGFzeW5jIGFzc2lnbkZyZWVQb3J0KFxuICAgIHN0YXJ0RnJvbTogbnVtYmVyID0gNDIwMCxcbiAgICBob3dNYW55RnJlZVBvcnRzQWZ0ZXJUaGF0UG9ydDogbnVtYmVyID0gMCxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVtb3ZlSXRzZWxmKCkge1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBQdXJwb3NlOiBub3QgaW5pdGlhbGl6aW5nIGFsbCBjbGFzc2VzIGF0IHRoZSBiZWdpbm5pbmdcbiAgICogT25seSBmb3IgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IGNsYXNzXG4gICAqL1xuICBkZWZpbmVQcm9wZXJ0eTxQUk9KRUNUPihcbiAgICB2YXJpYWJsZU5hbWU6IGtleW9mIFBST0pFQ1QsXG4gICAgY2xhc3NGbjogRnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGN1c3RvbUluc3RhbmNlUmV0dXJuPzogKCkgPT4gb2JqZWN0O1xuICAgIH0sXG4gICkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGZzLmNvcHkgb3B0aW9uIGZpbHRlciBmdW5jdGlvbiBmb3IgY29weWluZyBvbmx5IHNlbGVjdGVkIGZvbGRlcnMgZnJvbSBwcm9qZWN0XG4gICAqL1xuICBmaWx0ZXJPbmx5Q29weShiYXNlUGF0aEZvbGRlcnNPbmx5VG9JbmNsdWRlOiBzdHJpbmdbXSkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBmcy5jb3B5IG9wdGlvbiBmaWx0ZXIgZnVuY3Rpb24gZm9yIGNvcHlpbmcgb25seSBub3Qgc2VsZWN0ZWQgZm9sZGVycyBmcm9tIHByb2plY3RcbiAgICovXG4gIGZpbHRlckRvbnRDb3B5KGJhc2VQYXRoRm9sZGVyc1Rvc1NraXA6IHN0cmluZ1tdKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdlbmVyYWwgZGVmYXVsdCBkZXZlbG9wbWVudCBicmFuY2ggZm9yIGFsbCBraW5kcyBvZiBwcm9qZWN0c1xuICAgKi9cbiAgZ2V0RGVmYXVsdERldmVsb3BtZW50QnJhbmNoKCkge1xuICAgIHJldHVybiAnZGV2ZWxvcCc7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIG1haW4vZGVmYXVsdCBoYXJkY29kZWQgYnJhbmNoZXNcbiAgICovXG4gIGdldE1haW5CcmFuY2hlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnbWFzdGVyJywgJ2RldmVsb3AnLCAnc3RhZ2UnLCAncHJvZCcsICd0ZXN0J107XG4gIH1cblxuXG5cbiAgaXNVbnNpbmdBY3Rpb25Db21taXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIGFzeW5jIHJlc2V0UHJvY2VzcyhvdmVycmlkZUJyYW5jaD86IHN0cmluZywgcmVjcnVzaXZlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBsaW5rVG8oZGVzdFBhY2thZ2VMb2NhdGlvbjogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgc2V0VmFsdWVUb0pTT04oXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcsXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICk6IHZvaWQge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldFZhbHVlRnJvbUpTT04oXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcsXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55ID0gdm9pZCAwLFxuICApOiBhbnkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXRWYWx1ZUZyb21KU09OQyhcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgICBsb2Rhc2hHZXRQYXRoOiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiBhbnkgPSB2b2lkIDAsXG4gICk6IGFueSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG5cbiAgd3JpdGVGaWxlKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBwdWJsaWMgcnVuQ29tbWFuZEdldFN0cmluZyh0aGlzOiBCYXNlUHJvamVjdCwgY29tbWFuZDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICB0b1N0cmluZyA9ICgpID0+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfT0+JHt0aGlzLmxvY2F0aW9ufWA7XG4gIH07XG5cblxuXG4gIGdldCBwYXJlbnRzTmFtZXMoKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG4gIG9wZW5Mb2NhdGlvbihyZWxhdGl2ZUZvbGRlclBhdGg6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuICBwcml2YXRlIGZpbmRQYXJlbnRzTmFtZXMoXG4gICAgcHJvamVjdD86IFBST0pDRVQsXG4gICAgcGFyZW50PzogUFJPSkNFVCxcbiAgICByZXN1bHQgPSBbXSxcbiAgKTogc3RyaW5nW10ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHRyeUtpbGxBbGxFbGVjdHJvbkluc3RhbmNlcygpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IHByb2plY3QgZmlsZXMgc3RydWN0dXJlIGFuZCBkZXBlZGVuY2llc1xuICAgKi9cbiAgYXN5bmMgaW5pdChpbml0T3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogZ2xvYmFsbHkgbGluayBucG0gYXMgcGFja2FnZVxuICAgKi9cbiAgYXN5bmMgbGluaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE8gSU1QTEVNRU5UJyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGluaXQgcHJvamVjdCBmaWxlcyBzdHJ1Y3R1cmUgd2l0aG91dCBkZXBlZGVuY2llc1xuICAgKi9cbiAgYXN5bmMgc3RydWN0KGluaXRPcHRpb25zPzogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IGFuZCBidWlsZCgpIHByb2plY3RcbiAgICovXG4gIGFzeW5jIGJ1aWxkKGJ1aWxkT3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogbGludCBwb3JqZWN0XG4gICAqL1xuICBhc3luYyBsaW50KGxpbnRPcHRpb25zPzogYW55KSB7XG4gICAgSGVscGVycy5pbmZvKGBcblxuXG4gICAgQ09NTUlUIExJTlQgTk9UIElNUExFTUVOVEVEXG5cblxuICAgIGApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBnZXQgaW5mbyBhYm91dCBwb3JqZWN0XG4gICAqL1xuICBhc3luYyBpbmZvKCkge1xuICAgIGNvbnN0IHByb2ogPSB0aGlzO1xuICAgIEhlbHBlcnMuaW5mbyhcbiAgICAgIGBcblxuICBuYW1lOiAke3Byb2o/Lm5hbWV9XG4gIHR5cGU6ICR7cHJvaj8udHlwZX1cbiAgY29yZSBwcm9qZWN0IG5hbWU6ICcke3Byb2o/LmNvcmU/Lm5hbWV9J1xuICBlbWJlZGRlZCBwcm9qZWN0OiAke3Byb2o/LmxpbmtlZFByb2plY3RzLmVtYmVkZGVkUHJvamVjdD8uZ2VuZXJpY05hbWUgfHwgJzwgbm9uZSA+J31cbiAgY2hpbGRyZW4gKCR7cHJvaj8uY2hpbGRyZW4ubGVuZ3RofSk6ICR7IXByb2ogfHwgIXByb2ouY2hpbGRyZW4ubGVuZ3RoID8gJzwgbm9uZSA+JyA6ICcnfVxuJHtwcm9qPy5jaGlsZHJlbi5tYXAoYyA9PiAnKycgKyBjLmdlbmVyaWNOYW1lKS5qb2luKCdcXG4nKX1cbmAgK1xuICAgICAgICBgXG5saW5rZWQgcG9yamVjdCBwcmVmaXg6IFwiJHt0aGlzLmxpbmtlZFByb2plY3RzLmxpbmtlZFByb2plY3RzUHJlZml4fVwiXG5cbmxpbmtlZCBwcm9qZWN0cyBmcm9tIGpzb24gKCR7dGhpcy5saW5rZWRQcm9qZWN0cy5saW5rZWRQcm9qZWN0cz8ubGVuZ3RoIHx8IDB9KTpcbiR7KHRoaXMubGlua2VkUHJvamVjdHMubGlua2VkUHJvamVjdHMgfHwgW10pXG4gIC5tYXAoYyA9PiB7XG4gICAgY29uc3QgcHJvaiA9IHRoaXMuaW5zLkZyb20odGhpcy5wYXRoRm9yKGMucmVsYXRpdmVDbG9uZVBhdGgpKTtcbiAgICByZXR1cm4gJy0gJyArIHByb2ogPyBwcm9qLmdlbmVyaWNOYW1lIDogYy5yZWxhdGl2ZUNsb25lUGF0aDtcbiAgfSlcbiAgLmpvaW4oJ1xcbicpfVxuXG4gIGAsXG4gICAgKTtcblxuXG5cbiAgfVxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10bnAtaGVscGVycyBsaWIvYmFzZS9iYXNlLXByb2plY3QudHMiXX0=
|
|
701
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1oZWxwZXJzL3Byb2plY3RzL3RucC1oZWxwZXJzL3NyYy9saWIvYmFzZS9iYXNlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlMLE9BQU8sRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFrQixXQUFXLEVBQUksT0FBTyxHQUE0RCxNQUFNLFVBQVUsQ0FBQyxDQUFBLEtBQUs7QUFDakksS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBRUwsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFlOUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBRXRCLE1BQXNCLFdBQVc7YUFPeEIsUUFBRyxHQUFHLElBQUksbUJBQW1CLENBQWMsV0FBVyxDQUFDLEFBQXBELENBQXFEO2FBT2pELFVBQUssR0FBUSxFQUFFLEFBQVYsQ0FBVztJQUM5QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFzQkQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxDQUFTO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUdELGFBQWE7SUFDYjtJQUNFOztPQUVHO0lBQ0gsUUFB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QUFPLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDOUQsT0FBTyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7WUFDOUQsQ0FBQyxDQUFDO2lCQUNELElBQUksQ0FBQyxJQUFJLENBQUM7O0dBRVYsQ0FDRSxDQUFDO0lBSUosQ0FBQzs7U0F0OUJtQixXQUFXO0FBMDlCaEMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxpRUFBaUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbmltcG9ydCB7IENvcmVNb2RlbHMgfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgQ0xJIH0gZnJvbSAndG5wLWNsaS93ZWJzcWwnO1xuaW1wb3J0IHsgcGF0aCwgY3Jvc3NQbGF0Zm9ybVBhdGggfSBmcm9tICd0bnAtY29yZS93ZWJzcWwnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAndG5wLWNvbmZpZy93ZWJzcWwnO1xuaW1wb3J0IHsgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyAgIENvbW1pdERhdGEsICAgQ29yZVByb2plY3QsICAgSGVscGVycywgICBMaW5rZWRQb3JqZWN0c0NvbmZpZywgICBMaW5rZWRQcm9qZWN0LCAgIFR5cGVPZkNvbW1pdCwgfSBmcm9tICcuLi9pbmRleCc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgQmFzZVByb2plY3RSZXNvbHZlciB9IGZyb20gJy4vYmFzZS1wcm9qZWN0LXJlc29sdmVyJztcbmltcG9ydCB7ICAgQmFzZVByb2plY3RUeXBlLCAgIExpYnJhcmllc0J1aWxkT3B0aW9ucywgICBMaWJyYXJ5QnVpbGRDb21tYW5kT3B0aW9ucywgICBOZ1Byb2plY3QsIH0gZnJvbSAnLi4vbW9kZWxzJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHR5cGUgeyBCYXNlTGlicmFyeUJ1aWxkIH0gZnJvbSAnLi9iYXNlLWxpYnJhcnktYnVpbGQnO1xuaW1wb3J0IHsgQmFzZU5wbUhlbHBlcnMgfSBmcm9tICcuL2Jhc2UtbnBtLWhlbHBlcnMnO1xuaW1wb3J0IHsgQmFzZUxpbmtlZFByb2plY3RzIH0gZnJvbSAnLi9iYXNlLWxpbmtlZC1wcm9qZWN0cyc7XG5pbXBvcnQgeyBCYXNlR2l0IH0gZnJvbSAnLi9iYXNlLWdpdCc7XG5pbXBvcnQgeyBCYXNlVnNjb2RlSGVscGVycyB9IGZyb20gJy4vYmFzZS12c2NvZGUnO1xuaW1wb3J0IHsgQmFzZVJlbGVhc2VQcm9jZXNzIH0gZnJvbSAnLi9iYXNlLXJlbGVhc2UtcHJvY2Vzcyc7XG5cblxuY29uc3QgdGFrZW5Qb3J0cyA9IFtdO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVByb2plY3Q8XG4gIFBST0pDRVQgZXh0ZW5kcyBCYXNlUHJvamVjdCA9IGFueSxcbiAgVFlQRSA9IEJhc2VQcm9qZWN0VHlwZSxcbj4ge1xuXG5cblxuICBzdGF0aWMgaW5zID0gbmV3IEJhc2VQcm9qZWN0UmVzb2x2ZXI8QmFzZVByb2plY3Q+KEJhc2VQcm9qZWN0KTtcblxuXG5cblxuXG4gIHB1YmxpYyBjYWNoZTogYW55ID0ge307XG4gIHB1YmxpYyBzdGF0aWMgY2FjaGU6IGFueSA9IHt9O1xuICBwdWJsaWMgZ2V0IGdsb2JhbENhY2hlKCkge1xuICAgIHJldHVybiBCYXNlUHJvamVjdC5jYWNoZTtcbiAgfVxuICByZWFkb25seSB0eXBlOiBUWVBFIHwgc3RyaW5nID0gJ3Vua25vdyc7XG5cbiAgLyoqXG4gICAqIHJlc29sdmUgaW5zdGFuY2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGluczogQmFzZVByb2plY3RSZXNvbHZlcjxQUk9KQ0VUPjtcbiAgLyoqXG4gICAqIFVuaXF1ZSBmcmVlIHBvcnQgZm9yIHByb2plY3QgaW5zdGFuY2VcbiAgICogb25seSBhdmFpbGFibGUgYWZ0ZXIgZXhlY3V0aW5nICp0aGlzLmFzc2lnbkZyZWVQb3J0KCkqXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBzdHJpbmc7XG5cbiAgcHVibGljIGxpYnJhcnlCdWlsZDogQmFzZUxpYnJhcnlCdWlsZDtcbiAgcHVibGljIG5wbUhlbHBlcnM6IEJhc2VOcG1IZWxwZXJzO1xuICBwdWJsaWMgbGlua2VkUHJvamVjdHM6IEJhc2VMaW5rZWRQcm9qZWN0cztcbiAgcHVibGljIHZzQ29kZUhlbHBlcnM6IEJhc2VWc2NvZGVIZWxwZXJzO1xuICBwdWJsaWMgcmVsZWFzZVByb2Nlc3M6IEJhc2VSZWxlYXNlUHJvY2VzcztcbiAgcHVibGljIGdpdDogQmFzZUdpdDtcblxuXG4gIHByaXZhdGUgX19sb2NhdGlvbjogc3RyaW5nO1xuICBnZXQgbG9jYXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fX2xvY2F0aW9uO1xuICB9XG4gIHNldCBsb2NhdGlvbih2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fbG9jYXRpb24gPSBjcm9zc1BsYXRmb3JtUGF0aCh2KTtcbiAgfVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdHJ1Y3RvcihcbiAgICAvKipcbiAgICAgKiBkb2Vzbid0IG5lZWQgdG8gYmUgcmVhbCBwYXRoIC0+IGNhbiBiZSBsaW5rXG4gICAgICovXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgKSB7XG4gICAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgZ2V0IGlzTW9ub3JlcG8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBvcmRlckNvcmVQcm9qZWN0cyhjb3JlUHJvamVjdHM6IENvcmVQcm9qZWN0W10pOiBDb3JlUHJvamVjdFtdIHtcbiAgICBjb25zdCBwcm9qZWN0TWFwID0gbmV3IE1hcDxDb3JlUHJvamVjdCwgQ29yZVByb2plY3RbXT4oKTtcblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgcHJvamVjdE1hcC5zZXQocHJvamVjdCwgW10pO1xuICAgIH1cblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgaWYgKCFwcm9qZWN0TWFwLmhhcyhwcm9qZWN0LmV4dGVuZHMpKSB7XG4gICAgICAgIHByb2plY3RNYXAuc2V0KHByb2plY3QuZXh0ZW5kcywgW10pO1xuICAgICAgfVxuICAgICAgcHJvamVjdE1hcC5nZXQocHJvamVjdC5leHRlbmRzKSEucHVzaChwcm9qZWN0KTtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlcmVkUHJvamVjdHM6IENvcmVQcm9qZWN0W10gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxDb3JlUHJvamVjdD4oKTtcblxuICAgIGNvbnN0IHZpc2l0ID0gKHByb2plY3Q6IENvcmVQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKHByb2plY3QpKSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKHByb2plY3QpO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBwcm9qZWN0TWFwLmdldChwcm9qZWN0KTtcbiAgICAgICAgaWYgKGRlcGVuZGVuY2llcykge1xuICAgICAgICAgIGZvciAoY29uc3QgZGVwIG9mIGRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgdmlzaXQoZGVwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgb3JkZXJlZFByb2plY3RzLnB1c2gocHJvamVjdCk7XG4gICAgICB9XG4gICAgfTtcblxuXG4gICAgZm9yIChjb25zdCBwcm9qZWN0IG9mIGNvcmVQcm9qZWN0cykge1xuICAgICAgdmlzaXQocHJvamVjdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyZWRQcm9qZWN0cy5yZXZlcnNlKCk7XG4gIH1cblxuXG5cblxuICBnZXQgY29yZSgpOiBDb3JlUHJvamVjdCB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuY2FjaGVbJ2NvcmUnXSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlWydjb3JlJ107XG4gICAgfVxuXG4gICAgbGV0IGNvcmVQcm9qZWN0cyA9IENvcmVQcm9qZWN0LmNvcmVQcm9qZWN0cy5maWx0ZXIocCA9PlxuICAgICAgcC5yZWNvZ25pemVkRm4odGhpcyBhcyBhbnkpLFxuICAgICk7XG4gICAgY29yZVByb2plY3RzID0gdGhpcy5vcmRlckNvcmVQcm9qZWN0cyhjb3JlUHJvamVjdHMpO1xuXG5cbiAgICB0aGlzLmNhY2hlWydjb3JlJ10gPSBfLmZpcnN0KGNvcmVQcm9qZWN0cyk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbJ2NvcmUnXTtcbiAgfVxuXG5cblxuICBnZXQgbGlua2VkUHJvamVjdHNFeGlzdGVkKCk6IFBST0pDRVRbXSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwdWJsaWMgc2V0VHlwZSh0eXBlOiBUWVBFKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gIH1cblxuXG5cbiAgcHVibGljIHR5cGVJcyguLi50eXBlczogVFlQRVtdKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSAmJiB0eXBlcy5pbmNsdWRlcyh0aGlzLnR5cGUgYXMgYW55KTtcbiAgfVxuXG5cblxuICBwdWJsaWMgdHlwZUlzTm90KC4uLnR5cGVzOiBUWVBFW10pIHtcbiAgICByZXR1cm4gIXRoaXMudHlwZUlzKC4uLnR5cGVzKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHJvamVjdCBmb2xkZXIgYmFzZW5hbWVcbiAgICovXG4gIGdldCBiYXNlbmFtZSgpOiBzdHJpbmcge1xuXG4gICAgcmV0dXJuIHBhdGguYmFzZW5hbWUodGhpcy5sb2NhdGlvbik7XG5cbiAgfVxuXG5cblxuICAvKipcbiAgICogbmFtZSBmcm9tIHBhY2thZ2UuanNvblxuICAgKi9cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ucG1IZWxwZXJzPy5uYW1lIHx8IHRoaXMubmFtZUZyb21Qb21YTUw7XG4gIH1cblxuICBnZXQgbmFtZUZyb21Qb21YTUwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcnRpZmFjdElkUGF0dGVybiA9IC88YXJ0aWZhY3RJZD4oW148XSspPFxcL2FydGlmYWN0SWQ+LztcbiAgICBjb25zdCBtYXRjaCA9ICh0aGlzLnJlYWRGaWxlKCdwb20ueG1sJykgfHwgJycpLm1hdGNoKGFydGlmYWN0SWRQYXR0ZXJuKTtcbiAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMV0pIHtcbiAgICAgIHJldHVybiBtYXRjaFsxXTtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cblxuXG4gIHByb3RlY3RlZCBnZXRGb2xkZXJzRm9yUG9zc2libGVQcm9qZWN0Q2hpbGRyZW4oKTogc3RyaW5nW10ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBwcm90ZWN0ZWQgZ2V0QWxsQ2hpbGRyZW4oKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBhbGlhcyB0byBnZXRBbGxDaGlsZHJlblxuICAgKi9cbiAgZ2V0IGNoaWxkcmVuKCk6IFBST0pDRVRbXSB7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRBbGxDaGlsZHJlbigpO1xuXG4gIH1cblxuXG5cbiAgZ2V0Q2hpbGRCeShuYW1lT3JCYXNlbmFtZTogc3RyaW5nLCBlcnJvcnMgPSB0cnVlKTogUFJPSkNFVCB7XG5cbiAgICBjb25zdCBjID0gdGhpcy5jaGlsZHJlbi5maW5kKFxuICAgICAgYyA9PiBjLm5hbWUgPT09IG5hbWVPckJhc2VuYW1lIHx8IGMuYmFzZW5hbWUgPT09IG5hbWVPckJhc2VuYW1lLFxuICAgICk7XG4gICAgaWYgKGVycm9ycyAmJiAhYykge1xuICAgICAgSGVscGVycy53YXJuKFxuICAgICAgICBgUHJvamVjdCBkb2VzbnQgY29udGFpbiBjaGlsZCB3aXRoIG5hbWUgb3IgYmFzZW5hbWU6ICR7bmFtZU9yQmFzZW5hbWV9YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBjO1xuXG4gIH1cblxuXG5cbiAgZ2V0IHBhcmVudCgpOiBQUk9KQ0VUIHtcblxuICAgIGlmICghXy5pc1N0cmluZyh0aGlzLmxvY2F0aW9uKSB8fCB0aGlzLmxvY2F0aW9uLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmlucy5Gcm9tKHBhdGguam9pbih0aGlzLmxvY2F0aW9uLCAnLi4nKSk7XG5cbiAgfVxuXG5cblxuICBnZXQgZ3JhbmRwYSgpOiBQUk9KQ0VUIHtcblxuICAgIGlmICghXy5pc1N0cmluZyh0aGlzLmxvY2F0aW9uKSB8fCB0aGlzLmxvY2F0aW9uLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIGNvbnN0IGdyYW5kcGEgPSB0aGlzLmlucy5Gcm9tKHBhdGguam9pbih0aGlzLmxvY2F0aW9uLCAnLi4nLCAnLi4nKSk7XG4gICAgcmV0dXJuIGdyYW5kcGE7XG5cbiAgfVxuXG5cblxuICBnZXQgZ2VuZXJpY05hbWUoKSB7XG5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5jYWNoZVsnZ2VuZXJpY05hbWUnXSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhY2hlWydnZW5lcmljTmFtZSddO1xuICAgIH1cbiAgICBsZXQgbmFtZUZyb21QYWNrYWdlSnNvbiA9IHRoaXMubmFtZTtcbi8qICovXG4vKiAqL1xuICBcblxuICAgIGNvbnN0IHNsaWNlTWludXMgPSA4O1xuICAgIGNvbnN0IHNob3J0UGF0aCA9XG4gICAgICAnLycgK1xuICAgICAgY3Jvc3NQbGF0Zm9ybVBhdGgodGhpcy5sb2NhdGlvbilcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLnNsaWNlKC0xICogc2xpY2VNaW51cylcbiAgICAgICAgLmpvaW4oJy8nKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9XG4gICAgICAoc2hvcnRQYXRoLmluY2x1ZGVzKGNyb3NzUGxhdGZvcm1QYXRoKHRoaXMubG9jYXRpb24pKSA/ICcvJyA6ICcoLi4pJykgK1xuICAgICAgdGhpcy5jaGVja0FuZEJvbGRlblBhdGgodGhpcy5sb2NhdGlvbilcbiAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgLnNsaWNlKC0xICogc2xpY2VNaW51cylcbiAgICAgICAgLmpvaW4oJy8nKSArXG4gICAgICBgKCR7bmFtZUZyb21QYWNrYWdlSnNvbn0pYDtcblxuICAgIHRoaXMuY2FjaGVbJ2dlbmVyaWNOYW1lJ10gPSByZXN1bHQucmVwbGFjZSgvXFwvXFwvL2csICcvJyk7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVbJ2dlbmVyaWNOYW1lJ107XG5cbiAgfVxuXG5cblxuICBwcml2YXRlIGNoZWNrQW5kQm9sZGVuUGF0aChmdWxsUGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFydHMgPSBmdWxsUGF0aC5zcGxpdCgnLycpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gcGFydHMubWFwKChwYXJ0LCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcGF0aFRvY2hlY2sgPSBwYXJ0cy5zbGljZSgwLCBpbmRleCArIDEpLmpvaW4oJy8nKTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHQuam9pbignLycpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBzYW1lIGhhcyBwcm9qZWN0Lmhhc0ZpbGUoKTtcbiAgICovXG4gIHBhdGhFeGlzdHMocmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc0ZpbGUocmVsYXRpdmVQYXRoKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogc2FtZSBhcyBwcm9qZWN0LnBhdGhFeGlzdHMoKTtcbiAgICovXG4gIGhhc0ZpbGUocmVsYXRpdmVQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG4gIGhhc0ZvbGRlcihyZWxhdGl2ZVBhdGg6IHN0cmluZyB8IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIHNhbWUgYXMgcHJvamVjdC5wYXRoaGFzRmlsZUV4aXN0cygpO1xuICAgKiBidXQgd2l0aCBwYXRoLnJlc29sdmVcbiAgICovXG4gIGNvbnRhaW5zRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShcbiAgICAgIHBhdGguam9pbih0aGlzLmxvY2F0aW9uLCBmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoKSxcbiAgICApO1xuICAgIHJldHVybiBIZWxwZXJzLmV4aXN0cyhmdWxsUGF0aCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGFic29sdXRlIHBhdGg6XG4gICAqIGNvbmNhdGVkIHByb2plY3QgbG9jYXRpb24gd2l0aCByZWxhdGl2ZSBwYXRoXG4gICAqL1xuICBwYXRoRm9yKHJlbGF0aXZlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10pIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICB3cml0ZUpzb24ocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGpzb246IG9iamVjdCkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1cyBleGVjdXRlIGluc3RlYWRcbiAgICogdXNlIG91dHB1dCBmcm9tIG9yIG1vcmUgcHJlY2llc2UgY3JhZnRlZCBhcGlcbiAgICovXG4gIHJ1bihjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBPbWl0PENvcmVNb2RlbHMuUnVuT3B0aW9ucywgJ2N3ZCc+KSB7XG4gICAgbGV0IG9wdDogQ29yZU1vZGVscy5SdW5PcHRpb25zO1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBIZWxwZXJzLnJ1bihjb21tYW5kLCBvcHQpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBzYW1lIGFzIHJ1biBidXQgYXN5bmNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBleGVjdXRlKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ29yZU1vZGVscy5FeGVjdXRlT3B0aW9ucyAmIHsgc2hvd0NvbW1hbmQ/OiBib29sZWFuIH0sXG4gICk6IFByb21pc2U8YW55PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogdHJ5IHJ1biBidXQgY29udGludWUgd2hlbiBpdCBmYWlsc1xuICAgKiBAcGFyYW0gY29tbWFuZFxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdHJ5UnVuU3luYyhcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4vKiAqL1xuLyogKi9cbiAgXG4gICk6IHZvaWQge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBvdXRwdXRGcm9tKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbi8qICovXG4vKiAqL1xuICBcbiAgKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVtb3ZlRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICByZWFkRmlsZShmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVhZEpzb248VCA9IHt9PihmaWxlUmVsYXRpdmVUb1Byb2plY3RQYXRoOiBzdHJpbmcpOiBUIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICByZW1vdmUocmVsYXRpdmVQYXRoOiBzdHJpbmcsIGV4YWN0UGF0aCA9IHRydWUpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgcmVtb3ZlRm9sZGVyQnlSZWxhdGl2ZVBhdGgocmVsYXRpdmVQYXRoVG9Gb2xkZXI6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIGFzeW5jIGFzc2lnbkZyZWVQb3J0KFxuICAgIHN0YXJ0RnJvbTogbnVtYmVyID0gNDIwMCxcbiAgICBob3dNYW55RnJlZVBvcnRzQWZ0ZXJUaGF0UG9ydDogbnVtYmVyID0gMCxcbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgcmVtb3ZlSXRzZWxmKCkge1xuLyogKi9cbi8qICovXG4gIFxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBQdXJwb3NlOiBub3QgaW5pdGlhbGl6aW5nIGFsbCBjbGFzc2VzIGF0IHRoZSBiZWdpbm5pbmdcbiAgICogT25seSBmb3IgQmFzZUZlYXR1cmVGb3JQcm9qZWN0IGNsYXNzXG4gICAqL1xuICBkZWZpbmVQcm9wZXJ0eTxQUk9KRUNUPihcbiAgICB2YXJpYWJsZU5hbWU6IGtleW9mIFBST0pFQ1QsXG4gICAgY2xhc3NGbjogRnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGN1c3RvbUluc3RhbmNlUmV0dXJuPzogKCkgPT4gb2JqZWN0O1xuICAgIH0sXG4gICkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGZzLmNvcHkgb3B0aW9uIGZpbHRlciBmdW5jdGlvbiBmb3IgY29weWluZyBvbmx5IHNlbGVjdGVkIGZvbGRlcnMgZnJvbSBwcm9qZWN0XG4gICAqL1xuICBmaWx0ZXJPbmx5Q29weShiYXNlUGF0aEZvbGRlcnNPbmx5VG9JbmNsdWRlOiBzdHJpbmdbXSkge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBmcy5jb3B5IG9wdGlvbiBmaWx0ZXIgZnVuY3Rpb24gZm9yIGNvcHlpbmcgb25seSBub3Qgc2VsZWN0ZWQgZm9sZGVycyBmcm9tIHByb2plY3RcbiAgICovXG4gIGZpbHRlckRvbnRDb3B5KGJhc2VQYXRoRm9sZGVyc1Rvc1NraXA6IHN0cmluZ1tdKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdlbmVyYWwgZGVmYXVsdCBkZXZlbG9wbWVudCBicmFuY2ggZm9yIGFsbCBraW5kcyBvZiBwcm9qZWN0c1xuICAgKi9cbiAgZ2V0RGVmYXVsdERldmVsb3BtZW50QnJhbmNoKCkge1xuICAgIHJldHVybiAnZGV2ZWxvcCc7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIG1haW4vZGVmYXVsdCBoYXJkY29kZWQgYnJhbmNoZXNcbiAgICovXG4gIGdldE1haW5CcmFuY2hlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsnbWFzdGVyJywgJ2RldmVsb3AnLCAnc3RhZ2UnLCAncHJvZCcsICd0ZXN0J107XG4gIH1cblxuXG5cbiAgaXNVbnNpbmdBY3Rpb25Db21taXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuXG4gIGFzeW5jIHJlc2V0UHJvY2VzcyhvdmVycmlkZUJyYW5jaD86IHN0cmluZywgcmVjcnVzaXZlID0gZmFsc2UpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBsaW5rVG8oZGVzdFBhY2thZ2VMb2NhdGlvbjogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbiAgXG4gIH1cblxuXG5cbiAgc2V0VmFsdWVUb0pTT04oXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcsXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIHZhbHVlOiBhbnksXG4gICk6IHZvaWQge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIGdldFZhbHVlRnJvbUpTT04oXG4gICAgcmVsYXRpdmVQYXRoOiBzdHJpbmcsXG4gICAgbG9kYXNoR2V0UGF0aDogc3RyaW5nLFxuICAgIGRlZmF1bHRWYWx1ZTogYW55ID0gdm9pZCAwLFxuICApOiBhbnkge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICBnZXRWYWx1ZUZyb21KU09OQyhcbiAgICByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgICBsb2Rhc2hHZXRQYXRoOiBzdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiBhbnkgPSB2b2lkIDAsXG4gICk6IGFueSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG5cbiAgd3JpdGVGaWxlKHJlbGF0aXZlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG5cblxuICBwdWJsaWMgcnVuQ29tbWFuZEdldFN0cmluZyh0aGlzOiBCYXNlUHJvamVjdCwgY29tbWFuZDogc3RyaW5nKSB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfVxuXG5cblxuICB0b1N0cmluZyA9ICgpID0+IHtcbiAgICByZXR1cm4gYCR7dGhpcy5uYW1lfT0+JHt0aGlzLmxvY2F0aW9ufWA7XG4gIH07XG5cblxuXG4gIGdldCBwYXJlbnRzTmFtZXMoKSB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH1cblxuXG4gIG9wZW5Mb2NhdGlvbihyZWxhdGl2ZUZvbGRlclBhdGg6IHN0cmluZykge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuICBwcml2YXRlIGZpbmRQYXJlbnRzTmFtZXMoXG4gICAgcHJvamVjdD86IFBST0pDRVQsXG4gICAgcGFyZW50PzogUFJPSkNFVCxcbiAgICByZXN1bHQgPSBbXSxcbiAgKTogc3RyaW5nW10ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIHRyeUtpbGxBbGxFbGVjdHJvbkluc3RhbmNlcygpIHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IHByb2plY3QgZmlsZXMgc3RydWN0dXJlIGFuZCBkZXBlZGVuY2llc1xuICAgKi9cbiAgYXN5bmMgaW5pdChpbml0T3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogZ2xvYmFsbHkgbGluayBucG0gYXMgcGFja2FnZVxuICAgKi9cbiAgYXN5bmMgbGluaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE8gSU1QTEVNRU5UJyk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGluaXQgcHJvamVjdCBmaWxlcyBzdHJ1Y3R1cmUgd2l0aG91dCBkZXBlZGVuY2llc1xuICAgKi9cbiAgYXN5bmMgc3RydWN0KGluaXRPcHRpb25zPzogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBpbml0IGFuZCBidWlsZCgpIHByb2plY3RcbiAgICovXG4gIGFzeW5jIGJ1aWxkKGJ1aWxkT3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogcHVibGlzaCBwcm9qZWN0IHRvIG5wbVxuICAgKi9cbiAgYXN5bmMgcHVibGlzaChwdWJsaXNoT3B0aW9ucz86IGFueSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVE9ETyBJTVBMRU1FTlQnKTtcbiAgfVxuXG5cblxuICBhc3luYyByZWxlYXNlKHJlbGVhc2VPcHRpb25zPzogYW55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPIElNUExFTUVOVCcpO1xuICB9XG5cblxuXG4gIC8qKlxuICAgKiBsaW50IHBvcmplY3RcbiAgICovXG4gIGFzeW5jIGxpbnQobGludE9wdGlvbnM/OiBhbnkpIHtcbiAgICBIZWxwZXJzLmluZm8oYFxuXG5cbiAgICBDT01NSVQgTElOVCBOT1QgSU1QTEVNRU5URURcblxuXG4gICAgYCk7XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIGdldCBpbmZvIGFib3V0IHBvcmplY3RcbiAgICovXG4gIGFzeW5jIGluZm8oKSB7XG4gICAgY29uc3QgcHJvaiA9IHRoaXM7XG4gICAgSGVscGVycy5pbmZvKFxuICAgICAgYFxuXG4gIG5hbWU6ICR7cHJvaj8ubmFtZX1cbiAgdHlwZTogJHtwcm9qPy50eXBlfVxuICBjb3JlIHByb2plY3QgbmFtZTogJyR7cHJvaj8uY29yZT8ubmFtZX0nXG4gIGVtYmVkZGVkIHByb2plY3Q6ICR7cHJvaj8ubGlua2VkUHJvamVjdHMuZW1iZWRkZWRQcm9qZWN0Py5nZW5lcmljTmFtZSB8fCAnPCBub25lID4nfVxuICBjaGlsZHJlbiAoJHtwcm9qPy5jaGlsZHJlbi5sZW5ndGh9KTogJHshcHJvaiB8fCAhcHJvai5jaGlsZHJlbi5sZW5ndGggPyAnPCBub25lID4nIDogJyd9XG4ke3Byb2o/LmNoaWxkcmVuLm1hcChjID0+ICcrJyArIGMuZ2VuZXJpY05hbWUpLmpvaW4oJ1xcbicpfVxuYCArXG4gICAgICAgIGBcbmxpbmtlZCBwb3JqZWN0IHByZWZpeDogXCIke3RoaXMubGlua2VkUHJvamVjdHMubGlua2VkUHJvamVjdHNQcmVmaXh9XCJcblxubGlua2VkIHByb2plY3RzIGZyb20ganNvbiAoJHt0aGlzLmxpbmtlZFByb2plY3RzLmxpbmtlZFByb2plY3RzPy5sZW5ndGggfHwgMH0pOlxuJHsodGhpcy5saW5rZWRQcm9qZWN0cy5saW5rZWRQcm9qZWN0cyB8fCBbXSlcbiAgLm1hcChjID0+IHtcbiAgICBjb25zdCBwcm9qID0gdGhpcy5pbnMuRnJvbSh0aGlzLnBhdGhGb3IoYy5yZWxhdGl2ZUNsb25lUGF0aCkpO1xuICAgIHJldHVybiAnLSAnICsgcHJvaiA/IHByb2ouZ2VuZXJpY05hbWUgOiBjLnJlbGF0aXZlQ2xvbmVQYXRoO1xuICB9KVxuICAuam9pbignXFxuJyl9XG5cbiAgYCxcbiAgICApO1xuXG5cblxuICB9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRucC1oZWxwZXJzIGxpYi9iYXNlL2Jhc2UtcHJvamVjdC50cyJdfQ==
|