@macedon-technologies/batman 1.34.0 → 1.35.0
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/.jsii +248 -28
- package/API.md +212 -0
- package/README.md +26 -0
- package/factory/work-item-sources.md +24 -4
- package/lib/BatmanProject.d.ts +11 -0
- package/lib/BatmanProject.js +5 -2
- package/lib/BootcampProject.js +5 -2
- package/lib/CodeOwnersFile.js +1 -1
- package/lib/PrAutoMergeWorkflow.js +1 -1
- package/lib/ProductionDeployWorkflow.js +1 -1
- package/lib/SoftwareFactoryBootstrap.d.ts +14 -3
- package/lib/SoftwareFactoryBootstrap.js +99 -15
- package/lib/SoftwareFactoryFiles.d.ts +13 -0
- package/lib/SoftwareFactoryFiles.js +22 -4
- package/lib/SoftwareFactoryJiraExtension.d.ts +14 -0
- package/lib/SoftwareFactoryJiraExtension.js +58 -0
- package/lib/SoftwareFactoryModels.d.ts +10 -0
- package/lib/SoftwareFactoryModels.js +26 -7
- package/lib/SoftwareFactoryWorkItemSources.d.ts +20 -3
- package/lib/SoftwareFactoryWorkItemSources.js +98 -9
- package/lib/StagingDeployWorkflow.js +1 -1
- package/lib/WorkItemSource.d.ts +67 -0
- package/lib/WorkItemSource.js +45 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/utils.js +36 -3
- package/package.json +3 -2
- package/swamp-bootstrap/pull-extensions.ts +79 -10
- package/swamp-bootstrap/required-extensions.json +4 -0
- package/templates/app/swamp-bootstrap/pull-extensions.ts +79 -10
- package/templates/app/swamp-bootstrap/required-extensions.json +4 -0
- package/templates/jira/extensions/models/jira.ts +191 -0
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SoftwareFactoryBootstrap = void 0;
|
|
3
|
+
exports.SoftwareFactoryBootstrap = exports.REQUIRED_EXTENSIONS_PATH = void 0;
|
|
4
4
|
const projen_1 = require("projen");
|
|
5
|
+
const WorkItemSource_1 = require("./WorkItemSource");
|
|
6
|
+
exports.REQUIRED_EXTENSIONS_PATH = 'swamp-bootstrap/required-extensions.json';
|
|
7
|
+
const SOURCE_EXTENSIONS = {
|
|
8
|
+
[WorkItemSource_1.WorkItemSource.GITHUB]: ['@webframp/github', '2026.09.08.1'],
|
|
9
|
+
};
|
|
5
10
|
/**
|
|
6
11
|
* The extension step of `swamp:bootstrap`: a Node script, so it runs the same
|
|
7
12
|
* under projen's PowerShell 5.1 task shell on Windows as under bash/sh, that
|
|
8
|
-
* pulls every extension at the version pinned in the repo's swamp lockfile
|
|
9
|
-
*
|
|
13
|
+
* pulls every extension at the version pinned in the repo's swamp lockfile,
|
|
14
|
+
* then raises any extension below the minimum the enabled work-item sources
|
|
15
|
+
* need. The script is the same for every project; the minimums come from the
|
|
16
|
+
* generated `required-extensions.json`.
|
|
10
17
|
*/
|
|
11
18
|
class SoftwareFactoryBootstrap {
|
|
12
|
-
constructor(project) {
|
|
19
|
+
constructor(project, options) {
|
|
20
|
+
new projen_1.JsonFile(project, exports.REQUIRED_EXTENSIONS_PATH, {
|
|
21
|
+
marker: true,
|
|
22
|
+
readonly: true,
|
|
23
|
+
obj: Object.fromEntries(options.workItemSources.flatMap((source) => {
|
|
24
|
+
const extension = SOURCE_EXTENSIONS[source];
|
|
25
|
+
return extension ? [extension] : [];
|
|
26
|
+
})),
|
|
27
|
+
});
|
|
13
28
|
new projen_1.TextFile(project, 'swamp-bootstrap/pull-extensions.ts', {
|
|
14
29
|
marker: true,
|
|
15
30
|
lines: [
|
|
@@ -24,11 +39,18 @@ class SoftwareFactoryBootstrap {
|
|
|
24
39
|
' * it writes backslash paths and deletes the committed files it tracks (e.g.',
|
|
25
40
|
' * .claude/skills/software-factory/). So afterwards the lockfile and every',
|
|
26
41
|
' * git-tracked file it lists are restored from git.',
|
|
42
|
+
' *',
|
|
43
|
+
' * Then each extension in swamp-bootstrap/required-extensions.json that the',
|
|
44
|
+
' * lockfile lacks, or pins below the listed minimum, is pulled at that',
|
|
45
|
+
' * minimum. The tracked files it lists are restored again, except the',
|
|
46
|
+
' * lockfile, whose paths are normalized to forward slashes so it is the only',
|
|
47
|
+
' * change left to commit.',
|
|
27
48
|
' */',
|
|
28
49
|
"import { execFileSync } from 'node:child_process';",
|
|
29
|
-
"import { existsSync, readFileSync } from 'node:fs';",
|
|
50
|
+
"import { existsSync, readFileSync, writeFileSync } from 'node:fs';",
|
|
30
51
|
'',
|
|
31
52
|
"const LOCKFILE = 'extensions/models/upstream_extensions.json';",
|
|
53
|
+
"const REQUIRED_EXTENSIONS = 'swamp-bootstrap/required-extensions.json';",
|
|
32
54
|
"const DEFAULT_EXTENSIONS = ['@swamp/software-factory', '@webframp/github', '@goodcraft/github'];",
|
|
33
55
|
'',
|
|
34
56
|
'interface LockfileEntry {',
|
|
@@ -52,12 +74,45 @@ class SoftwareFactoryBootstrap {
|
|
|
52
74
|
" execFileSync('swamp', ['extension', 'pull', extension, '--force'], { stdio: 'inherit' });",
|
|
53
75
|
'}',
|
|
54
76
|
'',
|
|
55
|
-
'function
|
|
77
|
+
'function readRequiredExtensions(): Record<string, string> {',
|
|
78
|
+
' if (!existsSync(REQUIRED_EXTENSIONS)) {',
|
|
79
|
+
' return {};',
|
|
80
|
+
' }',
|
|
81
|
+
" const required = JSON.parse(readFileSync(REQUIRED_EXTENSIONS, 'utf8')) as Record<string, string>;",
|
|
82
|
+
" return Object.fromEntries(Object.entries(required).filter(([name]) => name.startsWith('@')));",
|
|
83
|
+
'}',
|
|
84
|
+
'',
|
|
85
|
+
'function isOlder(version: string | undefined, minimum: string): boolean {',
|
|
86
|
+
' for (const value of [version, minimum]) {',
|
|
87
|
+
" if (typeof value !== 'string' || !/^\\d+(\\.\\d+)*$/.test(value)) {",
|
|
88
|
+
' throw new Error(`Cannot compare extension version ${JSON.stringify(value)}: expected digits separated by dots`);',
|
|
89
|
+
' }',
|
|
90
|
+
' }',
|
|
91
|
+
" const have = version!.split('.').map(Number);",
|
|
92
|
+
" const want = minimum.split('.').map(Number);",
|
|
93
|
+
' for (let i = 0; i < Math.max(have.length, want.length); i++) {',
|
|
94
|
+
' const difference = (have[i] ?? 0) - (want[i] ?? 0);',
|
|
95
|
+
' if (difference !== 0) {',
|
|
96
|
+
' return difference < 0;',
|
|
97
|
+
' }',
|
|
98
|
+
' }',
|
|
99
|
+
' return false;',
|
|
100
|
+
'}',
|
|
101
|
+
'',
|
|
102
|
+
'function toPosix(file: string): string {',
|
|
103
|
+
" return file.replace(/\\\\/g, '/');",
|
|
104
|
+
'}',
|
|
105
|
+
'',
|
|
106
|
+
'function restoreTrackedFiles(lockfile: Record<string, LockfileEntry>, includeLockfile = true): void {',
|
|
56
107
|
' const listed = Object.values(lockfile)',
|
|
57
108
|
' .flatMap((entry) => entry.files ?? [])',
|
|
58
|
-
|
|
109
|
+
' .map(toPosix)',
|
|
59
110
|
" .filter((file) => !file.startsWith('.swamp/'));",
|
|
60
|
-
|
|
111
|
+
' const paths = [...(includeLockfile ? [LOCKFILE] : []), ...listed];',
|
|
112
|
+
' if (paths.length === 0) {',
|
|
113
|
+
' return;',
|
|
114
|
+
' }',
|
|
115
|
+
" const tracked = run('git', ['ls-files', '-z', '--', ...paths])",
|
|
61
116
|
" .split('\\0')",
|
|
62
117
|
' .filter(Boolean);',
|
|
63
118
|
' if (tracked.length > 0) {',
|
|
@@ -66,18 +121,47 @@ class SoftwareFactoryBootstrap {
|
|
|
66
121
|
' }',
|
|
67
122
|
'}',
|
|
68
123
|
'',
|
|
124
|
+
'function normalizeLockfile(lockfile: Record<string, LockfileEntry>): void {',
|
|
125
|
+
' for (const entry of Object.values(lockfile)) {',
|
|
126
|
+
' if (entry.files) {',
|
|
127
|
+
' entry.files = entry.files.map(toPosix);',
|
|
128
|
+
' }',
|
|
129
|
+
' }',
|
|
130
|
+
' writeFileSync(LOCKFILE, `${JSON.stringify(lockfile, null, 2)}\\n`);',
|
|
131
|
+
'}',
|
|
132
|
+
'',
|
|
133
|
+
'function pullRequiredExtensions(): void {',
|
|
134
|
+
' const lockfile = readLockfile() ?? {};',
|
|
135
|
+
' const needed = Object.entries(readRequiredExtensions())',
|
|
136
|
+
' .filter(([name, minimum]) => !lockfile[name] || isOlder(lockfile[name].version, minimum));',
|
|
137
|
+
' if (needed.length === 0) {',
|
|
138
|
+
' return;',
|
|
139
|
+
' }',
|
|
140
|
+
' for (const [name, minimum] of needed) {',
|
|
141
|
+
' pull(`${name}@${minimum}`);',
|
|
142
|
+
' }',
|
|
143
|
+
' const updated = readLockfile();',
|
|
144
|
+
' if (updated) {',
|
|
145
|
+
' const pulled = new Set(needed.map(([name]) => name));',
|
|
146
|
+
' restoreTrackedFiles(Object.fromEntries(Object.entries(updated).filter(([name]) => !pulled.has(name))), false);',
|
|
147
|
+
' normalizeLockfile(updated);',
|
|
148
|
+
' }',
|
|
149
|
+
" const pinned = needed.map(([name, minimum]) => `${name}@${minimum}`).join(', ');",
|
|
150
|
+
' console.log(`Commit ${LOCKFILE}: it now pins ${pinned}`);',
|
|
151
|
+
'}',
|
|
152
|
+
'',
|
|
69
153
|
'function main(): void {',
|
|
70
154
|
' const lockfile = readLockfile();',
|
|
71
155
|
' if (!lockfile) {',
|
|
72
156
|
' console.log(`No ${LOCKFILE} yet: pulling the latest stable software-factory extensions`);',
|
|
73
157
|
' DEFAULT_EXTENSIONS.forEach(pull);',
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'',
|
|
77
|
-
'
|
|
78
|
-
'
|
|
158
|
+
' } else {',
|
|
159
|
+
' for (const [name, entry] of Object.entries(lockfile)) {',
|
|
160
|
+
' pull(`${name}@${entry.version}`);',
|
|
161
|
+
' }',
|
|
162
|
+
' restoreTrackedFiles(lockfile);',
|
|
79
163
|
' }',
|
|
80
|
-
'
|
|
164
|
+
' pullRequiredExtensions();',
|
|
81
165
|
'}',
|
|
82
166
|
'',
|
|
83
167
|
'main();',
|
|
@@ -98,4 +182,4 @@ class SoftwareFactoryBootstrap {
|
|
|
98
182
|
}
|
|
99
183
|
}
|
|
100
184
|
exports.SoftwareFactoryBootstrap = SoftwareFactoryBootstrap;
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBNEM7QUFHNUM7Ozs7O0dBS0c7QUFDSCxNQUFhLHdCQUF3QjtJQUNuQyxZQUFZLE9BQW9CO1FBQzlCLElBQUksaUJBQVEsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUU7WUFDMUQsTUFBTSxFQUFFLElBQUk7WUFDWixLQUFLLEVBQUU7Z0JBQ0wsS0FBSztnQkFDTCx3REFBd0Q7Z0JBQ3hELDBFQUEwRTtnQkFDMUUsMEVBQTBFO2dCQUMxRSwwRUFBMEU7Z0JBQzFFLHdEQUF3RDtnQkFDeEQsSUFBSTtnQkFDSiw4RUFBOEU7Z0JBQzlFLDhFQUE4RTtnQkFDOUUsNEVBQTRFO2dCQUM1RSxxREFBcUQ7Z0JBQ3JELEtBQUs7Z0JBQ0wsb0RBQW9EO2dCQUNwRCxxREFBcUQ7Z0JBQ3JELEVBQUU7Z0JBQ0YsZ0VBQWdFO2dCQUNoRSxrR0FBa0c7Z0JBQ2xHLEVBQUU7Z0JBQ0YsMkJBQTJCO2dCQUMzQixvQkFBb0I7Z0JBQ3BCLHFCQUFxQjtnQkFDckIsR0FBRztnQkFDSCxFQUFFO2dCQUNGLHNFQUFzRTtnQkFDdEUsZ0NBQWdDO2dCQUNoQyx1QkFBdUI7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsdUZBQXVGO2dCQUN2RixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YseURBQXlEO2dCQUN6RCxtR0FBbUc7Z0JBQ25HLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRiwwQ0FBMEM7Z0JBQzFDLDZEQUE2RDtnQkFDN0QsNkZBQTZGO2dCQUM3RixHQUFHO2dCQUNILEVBQUU7Z0JBQ0YsK0VBQStFO2dCQUMvRSwwQ0FBMEM7Z0JBQzFDLDRDQUE0QztnQkFDNUMsZ0RBQWdEO2dCQUNoRCxxREFBcUQ7Z0JBQ3JELDZFQUE2RTtnQkFDN0UsbUJBQW1CO2dCQUNuQix1QkFBdUI7Z0JBQ3ZCLDZCQUE2QjtnQkFDN0IsaURBQWlEO2dCQUNqRCx5RUFBeUU7Z0JBQ3pFLEtBQUs7Z0JBQ0wsR0FBRztnQkFDSCxFQUFFO2dCQUNGLHlCQUF5QjtnQkFDekIsb0NBQW9DO2dCQUNwQyxvQkFBb0I7Z0JBQ3BCLCtGQUErRjtnQkFDL0YsdUNBQXVDO2dCQUN2QyxhQUFhO2dCQUNiLEtBQUs7Z0JBQ0wsRUFBRTtnQkFDRiwyREFBMkQ7Z0JBQzNELHVDQUF1QztnQkFDdkMsS0FBSztnQkFDTCxrQ0FBa0M7Z0JBQ2xDLEdBQUc7Z0JBQ0gsRUFBRTtnQkFDRixTQUFTO2FBQ1Y7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFRLENBQUMsT0FBTyxFQUFFLCtCQUErQixFQUFFO1lBQ3JELE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFO2dCQUNILE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLGVBQWUsRUFBRTtvQkFDZixNQUFNLEVBQUUsSUFBSTtvQkFDWixPQUFPLEVBQUUsR0FBRztpQkFDYjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUMxQjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpGRCw0REF5RkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uRmlsZSwgVGV4dEZpbGUgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuXG4vKipcbiAqIFRoZSBleHRlbnNpb24gc3RlcCBvZiBgc3dhbXA6Ym9vdHN0cmFwYDogYSBOb2RlIHNjcmlwdCwgc28gaXQgcnVucyB0aGUgc2FtZVxuICogdW5kZXIgcHJvamVuJ3MgUG93ZXJTaGVsbCA1LjEgdGFzayBzaGVsbCBvbiBXaW5kb3dzIGFzIHVuZGVyIGJhc2gvc2gsIHRoYXRcbiAqIHB1bGxzIGV2ZXJ5IGV4dGVuc2lvbiBhdCB0aGUgdmVyc2lvbiBwaW5uZWQgaW4gdGhlIHJlcG8ncyBzd2FtcCBsb2NrZmlsZS5cbiAqIEZ1bGx5IGdlbmVyaWMg4oCUIG5vIHBlci1yZXBvIHBhcmFtZXRlcml6YXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTb2Z0d2FyZUZhY3RvcnlCb290c3RyYXAge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCkge1xuICAgIG5ldyBUZXh0RmlsZShwcm9qZWN0LCAnc3dhbXAtYm9vdHN0cmFwL3B1bGwtZXh0ZW5zaW9ucy50cycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUHVsbHMgZWFjaCBzd2FtcCBleHRlbnNpb24gYXQgdGhlIHZlcnNpb24gcGlubmVkIGluJyxcbiAgICAgICAgJyAqIGV4dGVuc2lvbnMvbW9kZWxzL3Vwc3RyZWFtX2V4dGVuc2lvbnMuanNvbiwgc28gYSBmcmVzaCBjbG9uZSBydW5zIHRoZScsXG4gICAgICAgICcgKiBzYW1lIGV4dGVuc2lvbnMgYXMgdGhlIHJlc3Qgb2YgdGhlIHRlYW0sIGluY2x1ZGluZyBhbnkgdGhlIHJlcG8gYWRkZWQnLFxuICAgICAgICAnICogaXRzZWxmLiBBIHJlcG8gd2l0aCBubyBsb2NrZmlsZSB5ZXQgcHVsbHMgREVGQVVMVF9FWFRFTlNJT05TIGF0IHRoZWlyJyxcbiAgICAgICAgJyAqIGxhdGVzdCBzdGFibGUgdmVyc2lvbnMsIHdoaWNoIGNyZWF0ZXMgdGhlIGxvY2tmaWxlLicsXG4gICAgICAgICcgKicsXG4gICAgICAgICcgKiBBIHB1bGwgcmV3cml0ZXMgdGhlIGxvY2tmaWxlIGV2ZW4gYXQgYW4gaWRlbnRpY2FsIHZlcnNpb24sIGFuZCBvbiBXaW5kb3dzJyxcbiAgICAgICAgJyAqIGl0IHdyaXRlcyBiYWNrc2xhc2ggcGF0aHMgYW5kIGRlbGV0ZXMgdGhlIGNvbW1pdHRlZCBmaWxlcyBpdCB0cmFja3MgKGUuZy4nLFxuICAgICAgICAnICogLmNsYXVkZS9za2lsbHMvc29mdHdhcmUtZmFjdG9yeS8pLiBTbyBhZnRlcndhcmRzIHRoZSBsb2NrZmlsZSBhbmQgZXZlcnknLFxuICAgICAgICAnICogZ2l0LXRyYWNrZWQgZmlsZSBpdCBsaXN0cyBhcmUgcmVzdG9yZWQgZnJvbSBnaXQuJyxcbiAgICAgICAgJyAqLycsXG4gICAgICAgIFwiaW1wb3J0IHsgZXhlY0ZpbGVTeW5jIH0gZnJvbSAnbm9kZTpjaGlsZF9wcm9jZXNzJztcIixcbiAgICAgICAgXCJpbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcIixcbiAgICAgICAgJycsXG4gICAgICAgIFwiY29uc3QgTE9DS0ZJTEUgPSAnZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uJztcIixcbiAgICAgICAgXCJjb25zdCBERUZBVUxUX0VYVEVOU0lPTlMgPSBbJ0Bzd2FtcC9zb2Z0d2FyZS1mYWN0b3J5JywgJ0B3ZWJmcmFtcC9naXRodWInLCAnQGdvb2RjcmFmdC9naXRodWInXTtcIixcbiAgICAgICAgJycsXG4gICAgICAgICdpbnRlcmZhY2UgTG9ja2ZpbGVFbnRyeSB7JyxcbiAgICAgICAgJyAgdmVyc2lvbjogc3RyaW5nOycsXG4gICAgICAgICcgIGZpbGVzPzogc3RyaW5nW107JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2Z1bmN0aW9uIHJlYWRMb2NrZmlsZSgpOiBSZWNvcmQ8c3RyaW5nLCBMb2NrZmlsZUVudHJ5PiB8IHVuZGVmaW5lZCB7JyxcbiAgICAgICAgJyAgaWYgKCFleGlzdHNTeW5jKExPQ0tGSUxFKSkgeycsXG4gICAgICAgICcgICAgcmV0dXJuIHVuZGVmaW5lZDsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgXCIgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhMT0NLRklMRSwgJ3V0ZjgnKSkgYXMgUmVjb3JkPHN0cmluZywgTG9ja2ZpbGVFbnRyeT47XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiBydW4oY29tbWFuZDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7JyxcbiAgICAgICAgXCIgIHJldHVybiBleGVjRmlsZVN5bmMoY29tbWFuZCwgYXJncywgeyBlbmNvZGluZzogJ3V0ZjgnLCBzdGRpbzogWydpZ25vcmUnLCAncGlwZScsICdpbmhlcml0J10gfSk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiBwdWxsKGV4dGVuc2lvbjogc3RyaW5nKTogdm9pZCB7JyxcbiAgICAgICAgJyAgY29uc29sZS5sb2coYHN3YW1wIGV4dGVuc2lvbiBwdWxsICR7ZXh0ZW5zaW9ufSAtLWZvcmNlYCk7JyxcbiAgICAgICAgXCIgIGV4ZWNGaWxlU3luYygnc3dhbXAnLCBbJ2V4dGVuc2lvbicsICdwdWxsJywgZXh0ZW5zaW9uLCAnLS1mb3JjZSddLCB7IHN0ZGlvOiAnaW5oZXJpdCcgfSk7XCIsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiByZXN0b3JlVHJhY2tlZEZpbGVzKGxvY2tmaWxlOiBSZWNvcmQ8c3RyaW5nLCBMb2NrZmlsZUVudHJ5Pik6IHZvaWQgeycsXG4gICAgICAgICcgIGNvbnN0IGxpc3RlZCA9IE9iamVjdC52YWx1ZXMobG9ja2ZpbGUpJyxcbiAgICAgICAgJyAgICAuZmxhdE1hcCgoZW50cnkpID0+IGVudHJ5LmZpbGVzID8/IFtdKScsXG4gICAgICAgIFwiICAgIC5tYXAoKGZpbGUpID0+IGZpbGUucmVwbGFjZSgvXFxcXFxcXFwvZywgJy8nKSlcIixcbiAgICAgICAgXCIgICAgLmZpbHRlcigoZmlsZSkgPT4gIWZpbGUuc3RhcnRzV2l0aCgnLnN3YW1wLycpKTtcIixcbiAgICAgICAgXCIgIGNvbnN0IHRyYWNrZWQgPSBydW4oJ2dpdCcsIFsnbHMtZmlsZXMnLCAnLXonLCAnLS0nLCBMT0NLRklMRSwgLi4ubGlzdGVkXSlcIixcbiAgICAgICAgXCIgICAgLnNwbGl0KCdcXFxcMCcpXCIsXG4gICAgICAgICcgICAgLmZpbHRlcihCb29sZWFuKTsnLFxuICAgICAgICAnICBpZiAodHJhY2tlZC5sZW5ndGggPiAwKSB7JyxcbiAgICAgICAgXCIgICAgcnVuKCdnaXQnLCBbJ2NoZWNrb3V0JywgJy0tJywgLi4udHJhY2tlZF0pO1wiLFxuICAgICAgICAnICAgIGNvbnNvbGUubG9nKGBSZXN0b3JlZCAke3RyYWNrZWQubGVuZ3RofSB0cmFja2VkIGZpbGUocykgZnJvbSBnaXRgKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ2Z1bmN0aW9uIG1haW4oKTogdm9pZCB7JyxcbiAgICAgICAgJyAgY29uc3QgbG9ja2ZpbGUgPSByZWFkTG9ja2ZpbGUoKTsnLFxuICAgICAgICAnICBpZiAoIWxvY2tmaWxlKSB7JyxcbiAgICAgICAgJyAgICBjb25zb2xlLmxvZyhgTm8gJHtMT0NLRklMRX0geWV0OiBwdWxsaW5nIHRoZSBsYXRlc3Qgc3RhYmxlIHNvZnR3YXJlLWZhY3RvcnkgZXh0ZW5zaW9uc2ApOycsXG4gICAgICAgICcgICAgREVGQVVMVF9FWFRFTlNJT05TLmZvckVhY2gocHVsbCk7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcnLFxuICAgICAgICAnICBmb3IgKGNvbnN0IFtuYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMobG9ja2ZpbGUpKSB7JyxcbiAgICAgICAgJyAgICBwdWxsKGAke25hbWV9QCR7ZW50cnkudmVyc2lvbn1gKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgJyAgcmVzdG9yZVRyYWNrZWRGaWxlcyhsb2NrZmlsZSk7JyxcbiAgICAgICAgJ30nLFxuICAgICAgICAnJyxcbiAgICAgICAgJ21haW4oKTsnLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIG5ldyBKc29uRmlsZShwcm9qZWN0LCAnc3dhbXAtYm9vdHN0cmFwL3RzY29uZmlnLmpzb24nLCB7XG4gICAgICBtYXJrZXI6IGZhbHNlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGV4dGVuZHM6ICcuLi90c2NvbmZpZy5qc29uJyxcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgbm9FbWl0OiB0cnVlLFxuICAgICAgICAgIHJvb3REaXI6ICcuJyxcbiAgICAgICAgfSxcbiAgICAgICAgaW5jbHVkZTogWycqLnRzJ10sXG4gICAgICAgIGV4Y2x1ZGU6IFsnbm9kZV9tb2R1bGVzJ10sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBNEM7QUFFNUMscURBQWtEO0FBRXJDLFFBQUEsd0JBQXdCLEdBQUcsMENBQTBDLENBQUM7QUFFbkYsTUFBTSxpQkFBaUIsR0FBc0Q7SUFDM0UsQ0FBQywrQkFBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxDQUFDO0NBQzlELENBQUM7QUFVRjs7Ozs7OztHQU9HO0FBQ0gsTUFBYSx3QkFBd0I7SUFDbkMsWUFBWSxPQUFvQixFQUFFLE9BQXdDO1FBQ3hFLElBQUksaUJBQVEsQ0FBQyxPQUFPLEVBQUUsZ0NBQXdCLEVBQUU7WUFDOUMsTUFBTSxFQUFFLElBQUk7WUFDWixRQUFRLEVBQUUsSUFBSTtZQUNkLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2pFLE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDO1FBRUgsSUFBSSxpQkFBUSxDQUFDLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRTtZQUMxRCxNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRTtnQkFDTCxLQUFLO2dCQUNMLHdEQUF3RDtnQkFDeEQsMEVBQTBFO2dCQUMxRSwwRUFBMEU7Z0JBQzFFLDBFQUEwRTtnQkFDMUUsd0RBQXdEO2dCQUN4RCxJQUFJO2dCQUNKLDhFQUE4RTtnQkFDOUUsOEVBQThFO2dCQUM5RSw0RUFBNEU7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QUFJO29CQUNaLE9BQU8sRUFBRSxHQUFHO2lCQUNiO2dCQUNELE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDakIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzFCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdktELDREQXVLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25GaWxlLCBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyBXb3JrSXRlbVNvdXJjZSB9IGZyb20gJy4vV29ya0l0ZW1Tb3VyY2UnO1xuXG5leHBvcnQgY29uc3QgUkVRVUlSRURfRVhURU5TSU9OU19QQVRIID0gJ3N3YW1wLWJvb3RzdHJhcC9yZXF1aXJlZC1leHRlbnNpb25zLmpzb24nO1xuXG5jb25zdCBTT1VSQ0VfRVhURU5TSU9OUzogUGFydGlhbDxSZWNvcmQ8V29ya0l0ZW1Tb3VyY2UsIFtzdHJpbmcsIHN0cmluZ10+PiA9IHtcbiAgW1dvcmtJdGVtU291cmNlLkdJVEhVQl06IFsnQHdlYmZyYW1wL2dpdGh1YicsICcyMDI2LjA5LjA4LjEnXSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgZW5hYmxlZCB3b3JrLWl0ZW0gc291cmNlcywgd2hvc2UgZXh0ZW5zaW9ucyBib290c3RyYXAga2VlcHMgYXQgb3JcbiAgICogYWJvdmUgdGhlaXIgbWluaW11bSB2ZXJzaW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtJdGVtU291cmNlczogV29ya0l0ZW1Tb3VyY2VbXTtcbn1cblxuLyoqXG4gKiBUaGUgZXh0ZW5zaW9uIHN0ZXAgb2YgYHN3YW1wOmJvb3RzdHJhcGA6IGEgTm9kZSBzY3JpcHQsIHNvIGl0IHJ1bnMgdGhlIHNhbWVcbiAqIHVuZGVyIHByb2plbidzIFBvd2VyU2hlbGwgNS4xIHRhc2sgc2hlbGwgb24gV2luZG93cyBhcyB1bmRlciBiYXNoL3NoLCB0aGF0XG4gKiBwdWxscyBldmVyeSBleHRlbnNpb24gYXQgdGhlIHZlcnNpb24gcGlubmVkIGluIHRoZSByZXBvJ3Mgc3dhbXAgbG9ja2ZpbGUsXG4gKiB0aGVuIHJhaXNlcyBhbnkgZXh0ZW5zaW9uIGJlbG93IHRoZSBtaW5pbXVtIHRoZSBlbmFibGVkIHdvcmstaXRlbSBzb3VyY2VzXG4gKiBuZWVkLiBUaGUgc2NyaXB0IGlzIHRoZSBzYW1lIGZvciBldmVyeSBwcm9qZWN0OyB0aGUgbWluaW11bXMgY29tZSBmcm9tIHRoZVxuICogZ2VuZXJhdGVkIGByZXF1aXJlZC1leHRlbnNpb25zLmpzb25gLlxuICovXG5leHBvcnQgY2xhc3MgU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwIHtcbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFNvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcE9wdGlvbnMpIHtcbiAgICBuZXcgSnNvbkZpbGUocHJvamVjdCwgUkVRVUlSRURfRVhURU5TSU9OU19QQVRILCB7XG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICByZWFkb25seTogdHJ1ZSxcbiAgICAgIG9iajogT2JqZWN0LmZyb21FbnRyaWVzKG9wdGlvbnMud29ya0l0ZW1Tb3VyY2VzLmZsYXRNYXAoKHNvdXJjZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBTT1VSQ0VfRVhURU5TSU9OU1tzb3VyY2VdO1xuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uID8gW2V4dGVuc2lvbl0gOiBbXTtcbiAgICAgIH0pKSxcbiAgICB9KTtcblxuICAgIG5ldyBUZXh0RmlsZShwcm9qZWN0LCAnc3dhbXAtYm9vdHN0cmFwL3B1bGwtZXh0ZW5zaW9ucy50cycsIHtcbiAgICAgIG1hcmtlcjogdHJ1ZSxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgICcvKionLFxuICAgICAgICAnICogUHVsbHMgZWFjaCBzd2FtcCBleHRlbnNpb24gYXQgdGhlIHZlcnNpb24gcGlubmVkIGluJyxcbiAgICAgICAgJyAqIGV4dGVuc2lvbnMvbW9kZWxzL3Vwc3RyZWFtX2V4dGVuc2lvbnMuanNvbiwgc28gYSBmcmVzaCBjbG9uZSBydW5zIHRoZScsXG4gICAgICAgICcgKiBzYW1lIGV4dGVuc2lvbnMgYXMgdGhlIHJlc3Qgb2YgdGhlIHRlYW0sIGluY2x1ZGluZyBhbnkgdGhlIHJlcG8gYWRkZWQnLFxuICAgICAgICAnICogaXRzZWxmLiBBIHJlcG8gd2l0aCBubyBsb2NrZmlsZSB5ZXQgcHVsbHMgREVGQVVMVF9FWFRFTlNJT05TIGF0IHRoZWlyJyxcbiAgICAgICAgJyAqIGxhdGVzdCBzdGFibGUgdmVyc2lvbnMsIHdoaWNoIGNyZWF0ZXMgdGhlIGxvY2tmaWxlLicsXG4gICAgICAgICcgKicsXG4gICAgICAgICcgKiBBIHB1bGwgcmV3cml0ZXMgdGhlIGxvY2tmaWxlIGV2ZW4gYXQgYW4gaWRlbnRpY2FsIHZlcnNpb24sIGFuZCBvbiBXaW5kb3dzJyxcbiAgICAgICAgJyAqIGl0IHdyaXRlcyBiYWNrc2xhc2ggcGF0aHMgYW5kIGRlbGV0ZXMgdGhlIGNvbW1pdHRlZCBmaWxlcyBpdCB0cmFja3MgKGUuZy4nLFxuICAgICAgICAnICogLmNsYXVkZS9za2lsbHMvc29mdHdhcmUtZmFjdG9yeS8pLiBTbyBhZnRlcndhcmRzIHRoZSBsb2NrZmlsZSBhbmQgZXZlcnknLFxuICAgICAgICAnICogZ2l0LXRyYWNrZWQgZmlsZSBpdCBsaXN0cyBhcmUgcmVzdG9yZWQgZnJvbSBnaXQuJyxcbiAgICAgICAgJyAqJyxcbiAgICAgICAgJyAqIFRoZW4gZWFjaCBleHRlbnNpb24gaW4gc3dhbXAtYm9vdHN0cmFwL3JlcXVpcmVkLWV4dGVuc2lvbnMuanNvbiB0aGF0IHRoZScsXG4gICAgICAgICcgKiBsb2NrZmlsZSBsYWNrcywgb3IgcGlucyBiZWxvdyB0aGUgbGlzdGVkIG1pbmltdW0sIGlzIHB1bGxlZCBhdCB0aGF0JyxcbiAgICAgICAgJyAqIG1pbmltdW0uIFRoZSB0cmFja2VkIGZpbGVzIGl0IGxpc3RzIGFyZSByZXN0b3JlZCBhZ2FpbiwgZXhjZXB0IHRoZScsXG4gICAgICAgICcgKiBsb2NrZmlsZSwgd2hvc2UgcGF0aHMgYXJlIG5vcm1hbGl6ZWQgdG8gZm9yd2FyZCBzbGFzaGVzIHNvIGl0IGlzIHRoZSBvbmx5JyxcbiAgICAgICAgJyAqIGNoYW5nZSBsZWZ0IHRvIGNvbW1pdC4nLFxuICAgICAgICAnICovJyxcbiAgICAgICAgXCJpbXBvcnQgeyBleGVjRmlsZVN5bmMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1wiLFxuICAgICAgICBcImltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnO1wiLFxuICAgICAgICAnJyxcbiAgICAgICAgXCJjb25zdCBMT0NLRklMRSA9ICdleHRlbnNpb25zL21vZGVscy91cHN0cmVhbV9leHRlbnNpb25zLmpzb24nO1wiLFxuICAgICAgICBcImNvbnN0IFJFUVVJUkVEX0VYVEVOU0lPTlMgPSAnc3dhbXAtYm9vdHN0cmFwL3JlcXVpcmVkLWV4dGVuc2lvbnMuanNvbic7XCIsXG4gICAgICAgIFwiY29uc3QgREVGQVVMVF9FWFRFTlNJT05TID0gWydAc3dhbXAvc29mdHdhcmUtZmFjdG9yeScsICdAd2ViZnJhbXAvZ2l0aHViJywgJ0Bnb29kY3JhZnQvZ2l0aHViJ107XCIsXG4gICAgICAgICcnLFxuICAgICAgICAnaW50ZXJmYWNlIExvY2tmaWxlRW50cnkgeycsXG4gICAgICAgICcgIHZlcnNpb246IHN0cmluZzsnLFxuICAgICAgICAnICBmaWxlcz86IHN0cmluZ1tdOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiByZWFkTG9ja2ZpbGUoKTogUmVjb3JkPHN0cmluZywgTG9ja2ZpbGVFbnRyeT4gfCB1bmRlZmluZWQgeycsXG4gICAgICAgICcgIGlmICghZXhpc3RzU3luYyhMT0NLRklMRSkpIHsnLFxuICAgICAgICAnICAgIHJldHVybiB1bmRlZmluZWQ7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgIFwiICByZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoTE9DS0ZJTEUsICd1dGY4JykpIGFzIFJlY29yZDxzdHJpbmcsIExvY2tmaWxlRW50cnk+O1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gcnVuKGNvbW1hbmQ6IHN0cmluZywgYXJnczogc3RyaW5nW10pOiBzdHJpbmcgeycsXG4gICAgICAgIFwiICByZXR1cm4gZXhlY0ZpbGVTeW5jKGNvbW1hbmQsIGFyZ3MsIHsgZW5jb2Rpbmc6ICd1dGY4Jywgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAnaW5oZXJpdCddIH0pO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gcHVsbChleHRlbnNpb246IHN0cmluZyk6IHZvaWQgeycsXG4gICAgICAgICcgIGNvbnNvbGUubG9nKGBzd2FtcCBleHRlbnNpb24gcHVsbCAke2V4dGVuc2lvbn0gLS1mb3JjZWApOycsXG4gICAgICAgIFwiICBleGVjRmlsZVN5bmMoJ3N3YW1wJywgWydleHRlbnNpb24nLCAncHVsbCcsIGV4dGVuc2lvbiwgJy0tZm9yY2UnXSwgeyBzdGRpbzogJ2luaGVyaXQnIH0pO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gcmVhZFJlcXVpcmVkRXh0ZW5zaW9ucygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHsnLFxuICAgICAgICAnICBpZiAoIWV4aXN0c1N5bmMoUkVRVUlSRURfRVhURU5TSU9OUykpIHsnLFxuICAgICAgICAnICAgIHJldHVybiB7fTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgXCIgIGNvbnN0IHJlcXVpcmVkID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoUkVRVUlSRURfRVhURU5TSU9OUywgJ3V0ZjgnKSkgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcIixcbiAgICAgICAgXCIgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocmVxdWlyZWQpLmZpbHRlcigoW25hbWVdKSA9PiBuYW1lLnN0YXJ0c1dpdGgoJ0AnKSkpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gaXNPbGRlcih2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsIG1pbmltdW06IHN0cmluZyk6IGJvb2xlYW4geycsXG4gICAgICAgICcgIGZvciAoY29uc3QgdmFsdWUgb2YgW3ZlcnNpb24sIG1pbmltdW1dKSB7JyxcbiAgICAgICAgXCIgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgIS9eXFxcXGQrKFxcXFwuXFxcXGQrKSokLy50ZXN0KHZhbHVlKSkge1wiLFxuICAgICAgICAnICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY29tcGFyZSBleHRlbnNpb24gdmVyc2lvbiAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX06IGV4cGVjdGVkIGRpZ2l0cyBzZXBhcmF0ZWQgYnkgZG90c2ApOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICBcIiAgY29uc3QgaGF2ZSA9IHZlcnNpb24hLnNwbGl0KCcuJykubWFwKE51bWJlcik7XCIsXG4gICAgICAgIFwiICBjb25zdCB3YW50ID0gbWluaW11bS5zcGxpdCgnLicpLm1hcChOdW1iZXIpO1wiLFxuICAgICAgICAnICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWF4KGhhdmUubGVuZ3RoLCB3YW50Lmxlbmd0aCk7IGkrKykgeycsXG4gICAgICAgICcgICAgY29uc3QgZGlmZmVyZW5jZSA9IChoYXZlW2ldID8/IDApIC0gKHdhbnRbaV0gPz8gMCk7JyxcbiAgICAgICAgJyAgICBpZiAoZGlmZmVyZW5jZSAhPT0gMCkgeycsXG4gICAgICAgICcgICAgICByZXR1cm4gZGlmZmVyZW5jZSA8IDA7JyxcbiAgICAgICAgJyAgICB9JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHJldHVybiBmYWxzZTsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gdG9Qb3NpeChmaWxlOiBzdHJpbmcpOiBzdHJpbmcgeycsXG4gICAgICAgIFwiICByZXR1cm4gZmlsZS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnLycpO1wiLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gcmVzdG9yZVRyYWNrZWRGaWxlcyhsb2NrZmlsZTogUmVjb3JkPHN0cmluZywgTG9ja2ZpbGVFbnRyeT4sIGluY2x1ZGVMb2NrZmlsZSA9IHRydWUpOiB2b2lkIHsnLFxuICAgICAgICAnICBjb25zdCBsaXN0ZWQgPSBPYmplY3QudmFsdWVzKGxvY2tmaWxlKScsXG4gICAgICAgICcgICAgLmZsYXRNYXAoKGVudHJ5KSA9PiBlbnRyeS5maWxlcyA/PyBbXSknLFxuICAgICAgICAnICAgIC5tYXAodG9Qb3NpeCknLFxuICAgICAgICBcIiAgICAuZmlsdGVyKChmaWxlKSA9PiAhZmlsZS5zdGFydHNXaXRoKCcuc3dhbXAvJykpO1wiLFxuICAgICAgICAnICBjb25zdCBwYXRocyA9IFsuLi4oaW5jbHVkZUxvY2tmaWxlID8gW0xPQ0tGSUxFXSA6IFtdKSwgLi4ubGlzdGVkXTsnLFxuICAgICAgICAnICBpZiAocGF0aHMubGVuZ3RoID09PSAwKSB7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgIFwiICBjb25zdCB0cmFja2VkID0gcnVuKCdnaXQnLCBbJ2xzLWZpbGVzJywgJy16JywgJy0tJywgLi4ucGF0aHNdKVwiLFxuICAgICAgICBcIiAgICAuc3BsaXQoJ1xcXFwwJylcIixcbiAgICAgICAgJyAgICAuZmlsdGVyKEJvb2xlYW4pOycsXG4gICAgICAgICcgIGlmICh0cmFja2VkLmxlbmd0aCA+IDApIHsnLFxuICAgICAgICBcIiAgICBydW4oJ2dpdCcsIFsnY2hlY2tvdXQnLCAnLS0nLCAuLi50cmFja2VkXSk7XCIsXG4gICAgICAgICcgICAgY29uc29sZS5sb2coYFJlc3RvcmVkICR7dHJhY2tlZC5sZW5ndGh9IHRyYWNrZWQgZmlsZShzKSBmcm9tIGdpdGApOycsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gbm9ybWFsaXplTG9ja2ZpbGUobG9ja2ZpbGU6IFJlY29yZDxzdHJpbmcsIExvY2tmaWxlRW50cnk+KTogdm9pZCB7JyxcbiAgICAgICAgJyAgZm9yIChjb25zdCBlbnRyeSBvZiBPYmplY3QudmFsdWVzKGxvY2tmaWxlKSkgeycsXG4gICAgICAgICcgICAgaWYgKGVudHJ5LmZpbGVzKSB7JyxcbiAgICAgICAgJyAgICAgIGVudHJ5LmZpbGVzID0gZW50cnkuZmlsZXMubWFwKHRvUG9zaXgpOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgIH0nLFxuICAgICAgICAnICB3cml0ZUZpbGVTeW5jKExPQ0tGSUxFLCBgJHtKU09OLnN0cmluZ2lmeShsb2NrZmlsZSwgbnVsbCwgMil9XFxcXG5gKTsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnZnVuY3Rpb24gcHVsbFJlcXVpcmVkRXh0ZW5zaW9ucygpOiB2b2lkIHsnLFxuICAgICAgICAnICBjb25zdCBsb2NrZmlsZSA9IHJlYWRMb2NrZmlsZSgpID8/IHt9OycsXG4gICAgICAgICcgIGNvbnN0IG5lZWRlZCA9IE9iamVjdC5lbnRyaWVzKHJlYWRSZXF1aXJlZEV4dGVuc2lvbnMoKSknLFxuICAgICAgICAnICAgIC5maWx0ZXIoKFtuYW1lLCBtaW5pbXVtXSkgPT4gIWxvY2tmaWxlW25hbWVdIHx8IGlzT2xkZXIobG9ja2ZpbGVbbmFtZV0udmVyc2lvbiwgbWluaW11bSkpOycsXG4gICAgICAgICcgIGlmIChuZWVkZWQubGVuZ3RoID09PSAwKSB7JyxcbiAgICAgICAgJyAgICByZXR1cm47JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGZvciAoY29uc3QgW25hbWUsIG1pbmltdW1dIG9mIG5lZWRlZCkgeycsXG4gICAgICAgICcgICAgcHVsbChgJHtuYW1lfUAke21pbmltdW19YCk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIGNvbnN0IHVwZGF0ZWQgPSByZWFkTG9ja2ZpbGUoKTsnLFxuICAgICAgICAnICBpZiAodXBkYXRlZCkgeycsXG4gICAgICAgICcgICAgY29uc3QgcHVsbGVkID0gbmV3IFNldChuZWVkZWQubWFwKChbbmFtZV0pID0+IG5hbWUpKTsnLFxuICAgICAgICAnICAgIHJlc3RvcmVUcmFja2VkRmlsZXMoT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHVwZGF0ZWQpLmZpbHRlcigoW25hbWVdKSA9PiAhcHVsbGVkLmhhcyhuYW1lKSkpLCBmYWxzZSk7JyxcbiAgICAgICAgJyAgICBub3JtYWxpemVMb2NrZmlsZSh1cGRhdGVkKTsnLFxuICAgICAgICAnICB9JyxcbiAgICAgICAgXCIgIGNvbnN0IHBpbm5lZCA9IG5lZWRlZC5tYXAoKFtuYW1lLCBtaW5pbXVtXSkgPT4gYCR7bmFtZX1AJHttaW5pbXVtfWApLmpvaW4oJywgJyk7XCIsXG4gICAgICAgICcgIGNvbnNvbGUubG9nKGBDb21taXQgJHtMT0NLRklMRX06IGl0IG5vdyBwaW5zICR7cGlubmVkfWApOycsXG4gICAgICAgICd9JyxcbiAgICAgICAgJycsXG4gICAgICAgICdmdW5jdGlvbiBtYWluKCk6IHZvaWQgeycsXG4gICAgICAgICcgIGNvbnN0IGxvY2tmaWxlID0gcmVhZExvY2tmaWxlKCk7JyxcbiAgICAgICAgJyAgaWYgKCFsb2NrZmlsZSkgeycsXG4gICAgICAgICcgICAgY29uc29sZS5sb2coYE5vICR7TE9DS0ZJTEV9IHlldDogcHVsbGluZyB0aGUgbGF0ZXN0IHN0YWJsZSBzb2Z0d2FyZS1mYWN0b3J5IGV4dGVuc2lvbnNgKTsnLFxuICAgICAgICAnICAgIERFRkFVTFRfRVhURU5TSU9OUy5mb3JFYWNoKHB1bGwpOycsXG4gICAgICAgICcgIH0gZWxzZSB7JyxcbiAgICAgICAgJyAgICBmb3IgKGNvbnN0IFtuYW1lLCBlbnRyeV0gb2YgT2JqZWN0LmVudHJpZXMobG9ja2ZpbGUpKSB7JyxcbiAgICAgICAgJyAgICAgIHB1bGwoYCR7bmFtZX1AJHtlbnRyeS52ZXJzaW9ufWApOycsXG4gICAgICAgICcgICAgfScsXG4gICAgICAgICcgICAgcmVzdG9yZVRyYWNrZWRGaWxlcyhsb2NrZmlsZSk7JyxcbiAgICAgICAgJyAgfScsXG4gICAgICAgICcgIHB1bGxSZXF1aXJlZEV4dGVuc2lvbnMoKTsnLFxuICAgICAgICAnfScsXG4gICAgICAgICcnLFxuICAgICAgICAnbWFpbigpOycsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbmV3IEpzb25GaWxlKHByb2plY3QsICdzd2FtcC1ib290c3RyYXAvdHNjb25maWcuanNvbicsIHtcbiAgICAgIG1hcmtlcjogZmFsc2UsXG4gICAgICBvYmo6IHtcbiAgICAgICAgZXh0ZW5kczogJy4uL3RzY29uZmlnLmpzb24nLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICBub0VtaXQ6IHRydWUsXG4gICAgICAgICAgcm9vdERpcjogJy4nLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbJyoudHMnXSxcbiAgICAgICAgZXhjbHVkZTogWydub2RlX21vZHVsZXMnXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NodeProject } from 'projen/lib/javascript';
|
|
2
2
|
import { WorkflowActionVersions } from './WorkflowActionVersions';
|
|
3
|
+
import { WorkItemSourcesOptions } from './WorkItemSource';
|
|
3
4
|
export interface SoftwareFactoryFilesOptions {
|
|
4
5
|
/**
|
|
5
6
|
* The bare repo name (e.g. `expense-tracker`), used to derive the factory's
|
|
@@ -33,6 +34,14 @@ export interface SoftwareFactoryFilesOptions {
|
|
|
33
34
|
* @default - only the default files
|
|
34
35
|
*/
|
|
35
36
|
readonly attestationFiles?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* The trackers the factory's intake resolves work items from. Only the
|
|
39
|
+
* sources given are enabled, so `{ jira: {...} }` means Jira alone; leave a
|
|
40
|
+
* source out to turn it off.
|
|
41
|
+
*
|
|
42
|
+
* @default { github: {} }
|
|
43
|
+
*/
|
|
44
|
+
readonly workItemSources?: WorkItemSourcesOptions;
|
|
36
45
|
}
|
|
37
46
|
/**
|
|
38
47
|
* Backports exman's swamp "software factory" pattern
|
|
@@ -59,5 +68,9 @@ export interface SoftwareFactoryFilesOptions {
|
|
|
59
68
|
* workflows that wire them together) is templated.
|
|
60
69
|
*/
|
|
61
70
|
export declare class SoftwareFactoryFiles {
|
|
71
|
+
/**
|
|
72
|
+
* The work-item sources a project gets when it doesn't set `workItemSources`.
|
|
73
|
+
*/
|
|
74
|
+
static readonly DEFAULT_WORK_ITEM_SOURCES: WorkItemSourcesOptions;
|
|
62
75
|
constructor(project: NodeProject, options: SoftwareFactoryFilesOptions);
|
|
63
76
|
}
|
|
@@ -5,10 +5,12 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const SoftwareFactoryArchitectureRules_1 = require("./SoftwareFactoryArchitectureRules");
|
|
6
6
|
const SoftwareFactoryAttestation_1 = require("./SoftwareFactoryAttestation");
|
|
7
7
|
const SoftwareFactoryBootstrap_1 = require("./SoftwareFactoryBootstrap");
|
|
8
|
+
const SoftwareFactoryJiraExtension_1 = require("./SoftwareFactoryJiraExtension");
|
|
8
9
|
const SoftwareFactoryModels_1 = require("./SoftwareFactoryModels");
|
|
9
10
|
const SoftwareFactoryOpenSpecGates_1 = require("./SoftwareFactoryOpenSpecGates");
|
|
10
11
|
const SoftwareFactoryWorkflows_1 = require("./SoftwareFactoryWorkflows");
|
|
11
12
|
const SoftwareFactoryWorkItemSources_1 = require("./SoftwareFactoryWorkItemSources");
|
|
13
|
+
const WorkItemSource_1 = require("./WorkItemSource");
|
|
12
14
|
const DEFAULT_GITHUB_OWNER = 'macedon-technologies';
|
|
13
15
|
/**
|
|
14
16
|
* Backports exman's swamp "software factory" pattern
|
|
@@ -35,9 +37,16 @@ const DEFAULT_GITHUB_OWNER = 'macedon-technologies';
|
|
|
35
37
|
* workflows that wire them together) is templated.
|
|
36
38
|
*/
|
|
37
39
|
class SoftwareFactoryFiles {
|
|
38
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.
|
|
40
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@macedon-technologies/batman.SoftwareFactoryFiles", version: "1.35.0" };
|
|
41
|
+
/**
|
|
42
|
+
* The work-item sources a project gets when it doesn't set `workItemSources`.
|
|
43
|
+
*/
|
|
44
|
+
static DEFAULT_WORK_ITEM_SOURCES = { github: {} };
|
|
39
45
|
constructor(project, options) {
|
|
40
46
|
const { repoName, actionVersions, attestationFiles } = options;
|
|
47
|
+
const workItemSources = (0, WorkItemSource_1.resolveWorkItemSources)(options.workItemSources ?? SoftwareFactoryFiles.DEFAULT_WORK_ITEM_SOURCES);
|
|
48
|
+
const jira = options.workItemSources?.jira;
|
|
49
|
+
const jiraEnabled = workItemSources.includes(WorkItemSource_1.WorkItemSource.JIRA);
|
|
41
50
|
const githubOwner = options.githubOwner || DEFAULT_GITHUB_OWNER;
|
|
42
51
|
const baseBranch = options.baseBranch || 'main';
|
|
43
52
|
const secretsVault = `${repoName}-secrets`;
|
|
@@ -50,13 +59,18 @@ class SoftwareFactoryFiles {
|
|
|
50
59
|
repoName,
|
|
51
60
|
githubOwner,
|
|
52
61
|
baseBranch,
|
|
62
|
+
workItemSources,
|
|
63
|
+
jira,
|
|
53
64
|
});
|
|
54
|
-
new SoftwareFactoryWorkItemSources_1.SoftwareFactoryWorkItemSources(project, { repoName, githubOwner });
|
|
65
|
+
new SoftwareFactoryWorkItemSources_1.SoftwareFactoryWorkItemSources(project, { repoName, githubOwner, sources: workItemSources, jira });
|
|
66
|
+
if (jiraEnabled) {
|
|
67
|
+
new SoftwareFactoryJiraExtension_1.SoftwareFactoryJiraExtension(project);
|
|
68
|
+
}
|
|
55
69
|
new SoftwareFactoryArchitectureRules_1.SoftwareFactoryArchitectureRules(project);
|
|
56
70
|
new SoftwareFactoryAttestation_1.SoftwareFactoryAttestation(project, { repoName, attestationFiles });
|
|
57
71
|
new SoftwareFactoryOpenSpecGates_1.SoftwareFactoryOpenSpecGates(project);
|
|
58
72
|
new SoftwareFactoryWorkflows_1.SoftwareFactoryWorkflows(project, { repoName, actionVersions });
|
|
59
|
-
new SoftwareFactoryBootstrap_1.SoftwareFactoryBootstrap(project);
|
|
73
|
+
new SoftwareFactoryBootstrap_1.SoftwareFactoryBootstrap(project, { workItemSources });
|
|
60
74
|
project.addTask('validate:architecture', {
|
|
61
75
|
description: 'Run the architecture rule registry (architecture-rules/rules.json) against the repo',
|
|
62
76
|
exec: 'ts-node --project architecture-rules/tsconfig.json architecture-rules/check.ts',
|
|
@@ -83,6 +97,10 @@ class SoftwareFactoryFiles {
|
|
|
83
97
|
{
|
|
84
98
|
exec: `echo "Next: swamp vault put ${secretsVault} GITHUB_TOKEN --refresh-from 'gh auth token'"`,
|
|
85
99
|
},
|
|
100
|
+
...(jiraEnabled && jira ? [
|
|
101
|
+
{ exec: `echo "Then: install acli from ${SoftwareFactoryJiraExtension_1.ACLI_INSTALL_GUIDE} and run: acli jira auth login --web"` },
|
|
102
|
+
{ exec: `echo "Then: acli jira auth status must show Site: ${jira.siteHost}. If it shows another site, run: acli jira auth switch --site ${jira.siteHost}"` },
|
|
103
|
+
] : []),
|
|
86
104
|
],
|
|
87
105
|
});
|
|
88
106
|
// `swamp init` is safe to re-run (idempotent when already initialized),
|
|
@@ -104,4 +122,4 @@ class SoftwareFactoryFiles {
|
|
|
104
122
|
}
|
|
105
123
|
}
|
|
106
124
|
exports.SoftwareFactoryFiles = SoftwareFactoryFiles;
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUseUVBQXNFO0FBQ3RFLG1FQUFnRTtBQUNoRSxpRkFBOEU7QUFDOUUseUVBQXNFO0FBQ3RFLHFGQUFrRjtBQUdsRixNQUFNLG9CQUFvQixHQUFHLHNCQUFzQixDQUFDO0FBeUNwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFhLG9CQUFvQjs7SUFDL0IsWUFBWSxPQUFvQixFQUFFLE9BQW9DO1FBQ3BFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQy9ELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksb0JBQW9CLENBQUM7UUFDaEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsR0FBRyxRQUFRLFVBQVUsQ0FBQztRQUMzQyxzRUFBc0U7UUFDdEUsc0VBQXNFO1FBQ3RFLHVFQUF1RTtRQUN2RSx5RUFBeUU7UUFDekUsTUFBTSxhQUFhLEdBQUcsaUVBQWlFLENBQUM7UUFFeEYsSUFBSSw2Q0FBcUIsQ0FBQyxPQUFPLEVBQUU7WUFDakMsUUFBUTtZQUNSLFdBQVc7WUFDWCxVQUFVO1NBQ1gsQ0FBQyxDQUFDO1FBRUgsSUFBSSwrREFBOEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUV2RSxJQUFJLG1FQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTlDLElBQUksdURBQTBCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUV4RSxJQUFJLDJEQUE0QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksbURBQXdCLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFFcEUsSUFBSSxtREFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QyxPQUFPLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFO1lBQ3ZDLFdBQVcsRUFBRSxxRkFBcUY7WUFDbEcsSUFBSSxFQUFFLGdGQUFnRjtTQUN2RixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFO1lBQy9DLFdBQVcsRUFBRSwyRkFBMkY7WUFDeEcsSUFBSSxFQUFFLHVGQUF1RjtZQUM3RixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFO1lBQ3RDLFdBQVcsRUFBRSx3R0FBd0c7WUFDckgsSUFBSSxFQUFFLHFFQUFxRTtTQUM1RSxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixFQUFFO1lBQ3BDLFdBQVcsRUFBRSx5SEFBeUg7WUFDdEksSUFBSSxFQUFFLG1FQUFtRTtZQUN6RSxXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO1lBQ2pDLFdBQVcsRUFBRSwrTEFBK0w7WUFDNU0sS0FBSyxFQUFFO2dCQUNMLEVBQUUsSUFBSSxFQUFFLG9GQUFvRixFQUFFO2dCQUM5RixFQUFFLElBQUksRUFBRSx1Q0FBdUMsWUFBWSxFQUFFLEVBQUU7Z0JBQy9EO29CQUNFLElBQUksRUFBRSwrQkFBK0IsWUFBWSwrQ0FBK0M7aUJBQ2pHO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCx3RUFBd0U7UUFDeEUsd0VBQXdFO1FBQ3hFLHlFQUF5RTtRQUN6RSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRWxELHVFQUF1RTtRQUN2RSx3RUFBd0U7UUFDeEUsdUVBQXVFO1FBQ3ZFLG1FQUFtRTtRQUNuRSxvREFBb0Q7UUFDcEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sQ0FBQyxZQUFZLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNwRCxPQUFPLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O0FBaEZILG9EQWlGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVQcm9qZWN0IH0gZnJvbSAncHJvamVuL2xpYi9qYXZhc2NyaXB0JztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUFyY2hpdGVjdHVyZVJ1bGVzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbiB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5QXR0ZXN0YXRpb24nO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5Qm9vdHN0cmFwIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlCb290c3RyYXAnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5TW9kZWxzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlNb2RlbHMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrSXRlbVNvdXJjZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtJdGVtU291cmNlcyc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcblxuY29uc3QgREVGQVVMVF9HSVRIVUJfT1dORVIgPSAnbWFjZWRvbi10ZWNobm9sb2dpZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFyZSByZXBvIG5hbWUgKGUuZy4gYGV4cGVuc2UtdHJhY2tlcmApLCB1c2VkIHRvIGRlcml2ZSB0aGUgZmFjdG9yeSdzXG4gICAqIG1vZGVsIG5hbWVzIChgPHJlcG9OYW1lPi1mYWN0b3J5YCwgYDxyZXBvTmFtZT4taXNzdWVzYCwgYDxyZXBvTmFtZT4tcHJgLFxuICAgKiBgPHJlcG9OYW1lPi1zaGVsbCpgKSBhbmQgdmF1bHQgbmFtZSAoYDxyZXBvTmFtZT4tc2VjcmV0c2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEdpdEh1YiBvcmcvdXNlciB0aGUgcmVwbyBsaXZlcyBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21hY2Vkb24tdGVjaG5vbG9naWVzJ1xuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViT3duZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBicmFuY2ggdGhlIGZhY3Rvcnkgb3BlbnMgcHVsbCByZXF1ZXN0cyBhZ2FpbnN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFpbidcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VCcmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBmb3IgdGhlIHBpbm5lZCBhY3Rpb24gdmVyc2lvbnMgdXNlZCBieSBgdmVyaWZ5LWF0dGVzdGF0aW9uLnltbGAuXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25WZXJzaW9ucz86IFdvcmtmbG93QWN0aW9uVmVyc2lvbnM7XG5cbiAgLyoqXG4gICAqIEV4dHJhIGZpbGVzIHRoYXQgdGhlIFBSIGF0dGVzdGF0aW9uIG1hbmlmZXN0IGFsc28gaGFzaGVzLCBzdWNoIGFzIHRoZVxuICAgKiBwcm9qZWN0J3Mgb3duIHZlcmlmaWNhdGlvbiBjaGVja3MuIEVhY2ggZW50cnkgaXMgYW4gZXhhY3QgZmlsZSBwYXRoXG4gICAqIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QsIGluIG5vcm1hbGl6ZWQgUE9TSVggZm9ybSwgdXNpbmcgb25seVxuICAgKiBsZXR0ZXJzLCBkaWdpdHMgYW5kIGAuX0ArLWAsIHdpdGggbm8gYC5gIG9yIGAuLmAgc2VnbWVudDsgc3ludGggZmFpbHNcbiAgICogb24gYW55IG90aGVyIGVudHJ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG9ubHkgdGhlIGRlZmF1bHQgZmlsZXNcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVzdGF0aW9uRmlsZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBCYWNrcG9ydHMgZXhtYW4ncyBzd2FtcCBcInNvZnR3YXJlIGZhY3RvcnlcIiBwYXR0ZXJuXG4gKiAobWFjZWRvbi10ZWNobm9sb2dpZXMvZXhtYW4jMTMpIGFzIGdlbmVyYXRlZCBzY2FmZm9sZGluZzogYVxuICogYEBzd2FtcC9zb2Z0d2FyZS1mYWN0b3J5YCBzdGF0ZSBtYWNoaW5lIHRoYXQgZHJpdmVzIGEgR2l0SHViIGlzc3VlIGZyb21cbiAqIGludGFrZSB0aHJvdWdoIGFuIG9wZW5lZCBQUiwgZW5mb3JjaW5nIE9wZW5TcGVjIHVzYWdlLCBhbiBhcmNoaXRlY3R1cmVcbiAqIHJ1bGUgcmVnaXN0cnksIGFuZCBhIHByZS1QUiB2ZXJpZmljYXRpb24gZ2F0ZSB3aG9zZSBhdHRlc3RhdGlvbiBpc1xuICogcmUtY2hlY2tlZCBhdCBtZXJnZSB0aW1lLlxuICpcbiAqIFdoYXQgc3dhbXAgaXRzZWxmIHdvdWxkIGdlbmVyYXRlIChleHRlbnNpb24gZG9jcyBwdWxsZWQgdmlhXG4gKiBgc3dhbXAgZXh0ZW5zaW9uIHB1bGxgLCBgLnN3YW1wLnlhbWxgLCB0aGUgdmF1bHQsIGFuZCB0aGUgXCJzd2FtcCBtYW5hZ2VkXG4gKiBzZWN0aW9uXCIgaW4gQ0xBVURFLm1kKSBpcyBkZWxpYmVyYXRlbHkgTk9UIGhhbmQtdGVtcGxhdGVkIGhlcmUg4oCUIHRob3NlIGFyZVxuICogcHJvZHVjZWQgYnkgdGhlIHJlYWwgYHN3YW1wYCBDTEkuIGBzd2FtcCBpbml0YCBpcyBpZGVtcG90ZW50IChhIG5vLW9wIGlmXG4gKiB0aGUgcmVwbyBpcyBhbHJlYWR5IGluaXRpYWxpemVkKSwgc28gaXQncyB3aXJlZCBpbnRvIHRoZSBwcm9qZWN0J3NcbiAqIGBpbnN0YWxsYC9gaW5zdGFsbDpjaWAgdGFza3MgYW5kIHJ1bnMgYXV0b21hdGljYWxseSBvbiBldmVyeSBpbnN0YWxsLFxuICogZ3VhcmRlZCBzbyBpdCdzIGEgc2lsZW50IG5vLW9wIG9uIGEgbWFjaGluZSB3aXRob3V0IGBzd2FtcGAgb24gUEFUSCAoZS5nLlxuICogQ0kpLiBUaGUgZXh0ZW5zaW9uIHB1bGxzIChhdCB0aGUgdmVyc2lvbnMgcGlubmVkIGluIHRoZSByZXBvJ3NcbiAqIGBleHRlbnNpb25zL21vZGVscy91cHN0cmVhbV9leHRlbnNpb25zLmpzb25gKSBhbmQgdmF1bHQgY3JlYXRpb24gYXJlIG9uZS10aW1lLCBub3QgaWRlbXBvdGVudFxuICogaW4gYSB3YXkgdGhhdCdzIHNhZmUgdG8gcmVwZWF0IG9uIGV2ZXJ5IGluc3RhbGwsIHNvIHRoZXkgc3RheSBpbiB0aGVcbiAqIGBzd2FtcDpib290c3RyYXBgIHRhc2sgdGhpcyBjb25zdHJ1Y3QgYWRkcy4gT25seSBleG1hbidzIG93biBhdXRob3JlZFxuICogY29uZmlnICh0aGUgZmFjdG9yeSdzIHN0YXRlIG1hY2hpbmUsIHRoZSBhcmNoaXRlY3R1cmUtcnVsZSBlbmdpbmUsIHRoZVxuICogYXR0ZXN0YXRpb24gbWVjaGFuaXNtLCB0aGUgT3BlblNwZWMgdGFzay1jb21wbGV0aW9uIGdhdGUsIHRoZSBsb2NrZmlsZS1kcml2ZW5cbiAqIGV4dGVuc2lvbiBwdWxsLCBhbmQgdGhlIDMgc3dhbXBcbiAqIHdvcmtmbG93cyB0aGF0IHdpcmUgdGhlbSB0b2dldGhlcikgaXMgdGVtcGxhdGVkLlxuICovXG5leHBvcnQgY2xhc3MgU29mdHdhcmVGYWN0b3J5RmlsZXMge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBOb2RlUHJvamVjdCwgb3B0aW9uczogU29mdHdhcmVGYWN0b3J5RmlsZXNPcHRpb25zKSB7XG4gICAgY29uc3QgeyByZXBvTmFtZSwgYWN0aW9uVmVyc2lvbnMsIGF0dGVzdGF0aW9uRmlsZXMgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZ2l0aHViT3duZXIgPSBvcHRpb25zLmdpdGh1Yk93bmVyIHx8IERFRkFVTFRfR0lUSFVCX09XTkVSO1xuICAgIGNvbnN0IGJhc2VCcmFuY2ggPSBvcHRpb25zLmJhc2VCcmFuY2ggfHwgJ21haW4nO1xuICAgIGNvbnN0IHNlY3JldHNWYXVsdCA9IGAke3JlcG9OYW1lfS1zZWNyZXRzYDtcbiAgICAvLyBBIHNpbmdsZSByZWRpcmVjdCBvbmx5OiBwcm9qZW4ncyBidWlsdC1pbiBjcm9zcy1wbGF0Zm9ybSB0YXNrIHNoZWxsXG4gICAgLy8gKGRheCkgcmVqZWN0cyBhIGNvbW1hbmQgd2l0aCBtb3JlIHRoYW4gb25lIHJlZGlyZWN0IChlLmcuIGNvbWJpbmluZ1xuICAgIC8vIGA+L2Rldi9udWxsYCB3aXRoIGAyPiYxYCkgd2l0aCBcIk11bHRpcGxlIHJlZGlyZWN0cyBhcmUgY3VycmVudGx5IG5vdFxuICAgIC8vIHN1cHBvcnRlZFwiIOKAlCBjb25maXJtZWQgYnkgZG9nZm9vZGluZyB0aGlzIGNvbnN0cnVjdCBvbiB0aGlzIHZlcnkgcmVwby5cbiAgICBjb25zdCBzd2FtcEluaXRTdGVwID0gJ2NvbW1hbmQgLXYgc3dhbXAgPi9kZXYvbnVsbCAmJiBzd2FtcCBpbml0IC0tdG9vbCBjbGF1ZGUgfHwgdHJ1ZSc7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5TW9kZWxzKHByb2plY3QsIHtcbiAgICAgIHJlcG9OYW1lLFxuICAgICAgZ2l0aHViT3duZXIsXG4gICAgICBiYXNlQnJhbmNoLFxuICAgIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeVdvcmtJdGVtU291cmNlcyhwcm9qZWN0LCB7IHJlcG9OYW1lLCBnaXRodWJPd25lciB9KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyhwcm9qZWN0KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbihwcm9qZWN0LCB7IHJlcG9OYW1lLCBhdHRlc3RhdGlvbkZpbGVzIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5V29ya2Zsb3dzKHByb2plY3QsIHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcChwcm9qZWN0KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygndmFsaWRhdGU6YXJjaGl0ZWN0dXJlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGFyY2hpdGVjdHVyZSBydWxlIHJlZ2lzdHJ5IChhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbikgYWdhaW5zdCB0aGUgcmVwbycsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXJjaGl0ZWN0dXJlLXJ1bGVzL3RzY29uZmlnLmpzb24gYXJjaGl0ZWN0dXJlLXJ1bGVzL2NoZWNrLnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnb3BlbnNwZWM6Y2hlY2stdGFza3MtY29tcGxldGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZhaWwgdW5sZXNzIGV2ZXJ5IHRhc2sgaW4gdGhlIG5hbWVkIE9wZW5TcGVjIGNoYW5nZSBpcyBjb21wbGV0ZSAodXNhZ2U6IC0tIDxjaGFuZ2Utc2x1Zz4pJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBvcGVuc3BlYy1nYXRlcy90c2NvbmZpZy5qc29uIG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjptYW5pZmVzdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgZmlsZXMgYSBQUiBhdHRlc3RhdGlvbiBpcyB2ZXJpZmllZCBhZ2FpbnN0IChzZWUgYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMpJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhdHRlc3RhdGlvbi90c2NvbmZpZy5qc29uIGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnYXR0ZXN0YXRpb246dmVyaWZ5Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdWZXJpZnkgYSBQUlxcJ3MgZW1iZWRkZWQgYXR0ZXN0YXRpb24tbWFuaWZlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBjaGVja291dCAodXNhZ2U6IC0tIC0tYm9keS1maWxlIDxwYXRoPiAtLWNvbW1pdCA8c2hhPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vdmVyaWZ5LnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdzd2FtcDpib290c3RyYXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ09uZS10aW1lIHNldHVwOiBwdWxsIHRoZSBzd2FtcCBleHRlbnNpb25zIGF0IHRoZSB2ZXJzaW9ucyBwaW5uZWQgaW4gZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uIGFuZCBjcmVhdGUgdGhlIHNlY3JldHMgdmF1bHQgKHN3YW1wIGluaXQgaXRzZWxmIGFscmVhZHkgcnVucyBvbiBldmVyeSBpbnN0YWxsKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBzd2FtcC1ib290c3RyYXAvdHNjb25maWcuanNvbiBzd2FtcC1ib290c3RyYXAvcHVsbC1leHRlbnNpb25zLnRzJyB9LFxuICAgICAgICB7IGV4ZWM6IGBzd2FtcCB2YXVsdCBjcmVhdGUgbG9jYWxfZW5jcnlwdGlvbiAke3NlY3JldHNWYXVsdH1gIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiBgZWNobyBcIk5leHQ6IHN3YW1wIHZhdWx0IHB1dCAke3NlY3JldHNWYXVsdH0gR0lUSFVCX1RPS0VOIC0tcmVmcmVzaC1mcm9tICdnaCBhdXRoIHRva2VuJ1wiYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBgc3dhbXAgaW5pdGAgaXMgc2FmZSB0byByZS1ydW4gKGlkZW1wb3RlbnQgd2hlbiBhbHJlYWR5IGluaXRpYWxpemVkKSxcbiAgICAvLyBzbyBldmVyeSBpbnN0YWxsIGtlZXBzIHRoZSByZXBvIGluaXRpYWxpemVkIHdpdGhvdXQgYSBzZXBhcmF0ZSBtYW51YWxcbiAgICAvLyBzdGVwIOKAlCBpbmNsdWRpbmcgb24gYSBmcmVzaCBjbG9uZSB0aGF0IGhhc24ndCBydW4gc3dhbXA6Ym9vdHN0cmFwIHlldC5cbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbFRhc2suZXhlYyhzd2FtcEluaXRTdGVwKTtcbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbENpVGFzay5leGVjKHN3YW1wSW5pdFN0ZXApO1xuXG4gICAgLy8gTWlycm9ycyB0aGUgcGF0dGVybnMgYHN3YW1wIGluaXRgIGl0c2VsZiB3b3VsZCBhcHBlbmQgdG8gLmdpdGlnbm9yZS5cbiAgICAvLyBwcm9qZW4ncyBJZ25vcmVGaWxlIGZ1bGx5IHJlZ2VuZXJhdGVzIC5naXRpZ25vcmUgZnJvbSBpdHMgb3duIHRyYWNrZWRcbiAgICAvLyBlbnRyaWVzIG9uIGV2ZXJ5IHN5bnRoLCBzbyBhbnl0aGluZyBgc3dhbXAgaW5pdGAgYXBwZW5kcyBvdXQtb2YtYmFuZFxuICAgIC8vIGdldHMgc2lsZW50bHkgd2lwZWQgYnkgdGhlIG5leHQgYG5weCBwcm9qZW5gIHJ1biAoY2F1Z2h0IGJ5IENJJ3NcbiAgICAvLyBzZWxmLW11dGF0aW9uIGNoZWNrKSB1bmxlc3MgaXQncyBhbHNvIGFkZGVkIGhlcmUuXG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5zd2FtcC8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLnN3YW1wLXNvdXJjZXMueWFtbCcpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3dvcmt0cmVlcy8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zZXR0aW5ncy5sb2NhbC5qc29uJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvc2NoZWR1bGVkX3Rhc2tzLmxvY2snKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zY2hlZHVsZWRfdGFza3MuanNvbicpO1xuICB9XG59XG4iXX0=
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5RmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU29mdHdhcmVGYWN0b3J5RmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLHlGQUFzRjtBQUN0Riw2RUFBMEU7QUFDMUUseUVBQXNFO0FBQ3RFLGlGQUFrRztBQUNsRyxtRUFBZ0U7QUFDaEUsaUZBQThFO0FBQzlFLHlFQUFzRTtBQUN0RSxxRkFBa0Y7QUFFbEYscURBQWtHO0FBRWxHLE1BQU0sb0JBQW9CLEdBQUcsc0JBQXNCLENBQUM7QUFrRHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILE1BQWEsb0JBQW9COztJQUMvQjs7T0FFRztJQUNJLE1BQU0sQ0FBVSx5QkFBeUIsR0FBMkIsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFFMUYsWUFBWSxPQUFvQixFQUFFLE9BQW9DO1FBQ3BFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQy9ELE1BQU0sZUFBZSxHQUFHLElBQUEsdUNBQXNCLEVBQUMsT0FBTyxDQUFDLGVBQWUsSUFBSSxvQkFBb0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzFILE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsK0JBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLG9CQUFvQixDQUFDO1FBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLEdBQUcsUUFBUSxVQUFVLENBQUM7UUFDM0Msc0VBQXNFO1FBQ3RFLHNFQUFzRTtRQUN0RSx1RUFBdUU7UUFDdkUseUVBQXlF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TyxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsWUFBWSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDdkQsQ0FBQzs7QUFsR0gsb0RBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVByb2plY3QgfSBmcm9tICdwcm9qZW4vbGliL2phdmFzY3JpcHQnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5QXJjaGl0ZWN0dXJlUnVsZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUFyY2hpdGVjdHVyZVJ1bGVzJztcbmltcG9ydCB7IFNvZnR3YXJlRmFjdG9yeUF0dGVzdGF0aW9uIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbic7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlCb290c3RyYXAgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcCc7XG5pbXBvcnQgeyBBQ0xJX0lOU1RBTExfR1VJREUsIFNvZnR3YXJlRmFjdG9yeUppcmFFeHRlbnNpb24gfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeUppcmFFeHRlbnNpb24nO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5TW9kZWxzIH0gZnJvbSAnLi9Tb2Z0d2FyZUZhY3RvcnlNb2RlbHMnO1xuaW1wb3J0IHsgU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyB9IGZyb20gJy4vU29mdHdhcmVGYWN0b3J5T3BlblNwZWNHYXRlcyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrZmxvd3MgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtmbG93cyc7XG5pbXBvcnQgeyBTb2Z0d2FyZUZhY3RvcnlXb3JrSXRlbVNvdXJjZXMgfSBmcm9tICcuL1NvZnR3YXJlRmFjdG9yeVdvcmtJdGVtU291cmNlcyc7XG5pbXBvcnQgeyBXb3JrZmxvd0FjdGlvblZlcnNpb25zIH0gZnJvbSAnLi9Xb3JrZmxvd0FjdGlvblZlcnNpb25zJztcbmltcG9ydCB7IHJlc29sdmVXb3JrSXRlbVNvdXJjZXMsIFdvcmtJdGVtU291cmNlLCBXb3JrSXRlbVNvdXJjZXNPcHRpb25zIH0gZnJvbSAnLi9Xb3JrSXRlbVNvdXJjZSc7XG5cbmNvbnN0IERFRkFVTFRfR0lUSFVCX09XTkVSID0gJ21hY2Vkb24tdGVjaG5vbG9naWVzJztcblxuZXhwb3J0IGludGVyZmFjZSBTb2Z0d2FyZUZhY3RvcnlGaWxlc09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJhcmUgcmVwbyBuYW1lIChlLmcuIGBleHBlbnNlLXRyYWNrZXJgKSwgdXNlZCB0byBkZXJpdmUgdGhlIGZhY3Rvcnknc1xuICAgKiBtb2RlbCBuYW1lcyAoYDxyZXBvTmFtZT4tZmFjdG9yeWAsIGA8cmVwb05hbWU+LWlzc3Vlc2AsIGA8cmVwb05hbWU+LXByYCxcbiAgICogYDxyZXBvTmFtZT4tc2hlbGwqYCkgYW5kIHZhdWx0IG5hbWUgKGA8cmVwb05hbWU+LXNlY3JldHNgKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBHaXRIdWIgb3JnL3VzZXIgdGhlIHJlcG8gbGl2ZXMgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYWNlZG9uLXRlY2hub2xvZ2llcydcbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1Yk93bmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYnJhbmNoIHRoZSBmYWN0b3J5IG9wZW5zIHB1bGwgcmVxdWVzdHMgYWdhaW5zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21haW4nXG4gICAqL1xuICByZWFkb25seSBiYXNlQnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPdmVycmlkZXMgZm9yIHRoZSBwaW5uZWQgYWN0aW9uIHZlcnNpb25zIHVzZWQgYnkgYHZlcmlmeS1hdHRlc3RhdGlvbi55bWxgLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uVmVyc2lvbnM/OiBXb3JrZmxvd0FjdGlvblZlcnNpb25zO1xuXG4gIC8qKlxuICAgKiBFeHRyYSBmaWxlcyB0aGF0IHRoZSBQUiBhdHRlc3RhdGlvbiBtYW5pZmVzdCBhbHNvIGhhc2hlcywgc3VjaCBhcyB0aGVcbiAgICogcHJvamVjdCdzIG93biB2ZXJpZmljYXRpb24gY2hlY2tzLiBFYWNoIGVudHJ5IGlzIGFuIGV4YWN0IGZpbGUgcGF0aFxuICAgKiByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LCBpbiBub3JtYWxpemVkIFBPU0lYIGZvcm0sIHVzaW5nIG9ubHlcbiAgICogbGV0dGVycywgZGlnaXRzIGFuZCBgLl9AKy1gLCB3aXRoIG5vIGAuYCBvciBgLi5gIHNlZ21lbnQ7IHN5bnRoIGZhaWxzXG4gICAqIG9uIGFueSBvdGhlciBlbnRyeS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBvbmx5IHRoZSBkZWZhdWx0IGZpbGVzXG4gICAqL1xuICByZWFkb25seSBhdHRlc3RhdGlvbkZpbGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFja2VycyB0aGUgZmFjdG9yeSdzIGludGFrZSByZXNvbHZlcyB3b3JrIGl0ZW1zIGZyb20uIE9ubHkgdGhlXG4gICAqIHNvdXJjZXMgZ2l2ZW4gYXJlIGVuYWJsZWQsIHNvIGB7IGppcmE6IHsuLi59IH1gIG1lYW5zIEppcmEgYWxvbmU7IGxlYXZlIGFcbiAgICogc291cmNlIG91dCB0byB0dXJuIGl0IG9mZi5cbiAgICpcbiAgICogQGRlZmF1bHQgeyBnaXRodWI6IHt9IH1cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtJdGVtU291cmNlcz86IFdvcmtJdGVtU291cmNlc09wdGlvbnM7XG59XG5cbi8qKlxuICogQmFja3BvcnRzIGV4bWFuJ3Mgc3dhbXAgXCJzb2Z0d2FyZSBmYWN0b3J5XCIgcGF0dGVyblxuICogKG1hY2Vkb24tdGVjaG5vbG9naWVzL2V4bWFuIzEzKSBhcyBnZW5lcmF0ZWQgc2NhZmZvbGRpbmc6IGFcbiAqIGBAc3dhbXAvc29mdHdhcmUtZmFjdG9yeWAgc3RhdGUgbWFjaGluZSB0aGF0IGRyaXZlcyBhIEdpdEh1YiBpc3N1ZSBmcm9tXG4gKiBpbnRha2UgdGhyb3VnaCBhbiBvcGVuZWQgUFIsIGVuZm9yY2luZyBPcGVuU3BlYyB1c2FnZSwgYW4gYXJjaGl0ZWN0dXJlXG4gKiBydWxlIHJlZ2lzdHJ5LCBhbmQgYSBwcmUtUFIgdmVyaWZpY2F0aW9uIGdhdGUgd2hvc2UgYXR0ZXN0YXRpb24gaXNcbiAqIHJlLWNoZWNrZWQgYXQgbWVyZ2UgdGltZS5cbiAqXG4gKiBXaGF0IHN3YW1wIGl0c2VsZiB3b3VsZCBnZW5lcmF0ZSAoZXh0ZW5zaW9uIGRvY3MgcHVsbGVkIHZpYVxuICogYHN3YW1wIGV4dGVuc2lvbiBwdWxsYCwgYC5zd2FtcC55YW1sYCwgdGhlIHZhdWx0LCBhbmQgdGhlIFwic3dhbXAgbWFuYWdlZFxuICogc2VjdGlvblwiIGluIENMQVVERS5tZCkgaXMgZGVsaWJlcmF0ZWx5IE5PVCBoYW5kLXRlbXBsYXRlZCBoZXJlIOKAlCB0aG9zZSBhcmVcbiAqIHByb2R1Y2VkIGJ5IHRoZSByZWFsIGBzd2FtcGAgQ0xJLiBgc3dhbXAgaW5pdGAgaXMgaWRlbXBvdGVudCAoYSBuby1vcCBpZlxuICogdGhlIHJlcG8gaXMgYWxyZWFkeSBpbml0aWFsaXplZCksIHNvIGl0J3Mgd2lyZWQgaW50byB0aGUgcHJvamVjdCdzXG4gKiBgaW5zdGFsbGAvYGluc3RhbGw6Y2lgIHRhc2tzIGFuZCBydW5zIGF1dG9tYXRpY2FsbHkgb24gZXZlcnkgaW5zdGFsbCxcbiAqIGd1YXJkZWQgc28gaXQncyBhIHNpbGVudCBuby1vcCBvbiBhIG1hY2hpbmUgd2l0aG91dCBgc3dhbXBgIG9uIFBBVEggKGUuZy5cbiAqIENJKS4gVGhlIGV4dGVuc2lvbiBwdWxscyAoYXQgdGhlIHZlcnNpb25zIHBpbm5lZCBpbiB0aGUgcmVwbydzXG4gKiBgZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uYCkgYW5kIHZhdWx0IGNyZWF0aW9uIGFyZSBvbmUtdGltZSwgbm90IGlkZW1wb3RlbnRcbiAqIGluIGEgd2F5IHRoYXQncyBzYWZlIHRvIHJlcGVhdCBvbiBldmVyeSBpbnN0YWxsLCBzbyB0aGV5IHN0YXkgaW4gdGhlXG4gKiBgc3dhbXA6Ym9vdHN0cmFwYCB0YXNrIHRoaXMgY29uc3RydWN0IGFkZHMuIE9ubHkgZXhtYW4ncyBvd24gYXV0aG9yZWRcbiAqIGNvbmZpZyAodGhlIGZhY3RvcnkncyBzdGF0ZSBtYWNoaW5lLCB0aGUgYXJjaGl0ZWN0dXJlLXJ1bGUgZW5naW5lLCB0aGVcbiAqIGF0dGVzdGF0aW9uIG1lY2hhbmlzbSwgdGhlIE9wZW5TcGVjIHRhc2stY29tcGxldGlvbiBnYXRlLCB0aGUgbG9ja2ZpbGUtZHJpdmVuXG4gKiBleHRlbnNpb24gcHVsbCwgYW5kIHRoZSAzIHN3YW1wXG4gKiB3b3JrZmxvd3MgdGhhdCB3aXJlIHRoZW0gdG9nZXRoZXIpIGlzIHRlbXBsYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvZnR3YXJlRmFjdG9yeUZpbGVzIHtcbiAgLyoqXG4gICAqIFRoZSB3b3JrLWl0ZW0gc291cmNlcyBhIHByb2plY3QgZ2V0cyB3aGVuIGl0IGRvZXNuJ3Qgc2V0IGB3b3JrSXRlbVNvdXJjZXNgLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1dPUktfSVRFTV9TT1VSQ0VTOiBXb3JrSXRlbVNvdXJjZXNPcHRpb25zID0geyBnaXRodWI6IHt9IH07XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogTm9kZVByb2plY3QsIG9wdGlvbnM6IFNvZnR3YXJlRmFjdG9yeUZpbGVzT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zLCBhdHRlc3RhdGlvbkZpbGVzIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IHdvcmtJdGVtU291cmNlcyA9IHJlc29sdmVXb3JrSXRlbVNvdXJjZXMob3B0aW9ucy53b3JrSXRlbVNvdXJjZXMgPz8gU29mdHdhcmVGYWN0b3J5RmlsZXMuREVGQVVMVF9XT1JLX0lURU1fU09VUkNFUyk7XG4gICAgY29uc3QgamlyYSA9IG9wdGlvbnMud29ya0l0ZW1Tb3VyY2VzPy5qaXJhO1xuICAgIGNvbnN0IGppcmFFbmFibGVkID0gd29ya0l0ZW1Tb3VyY2VzLmluY2x1ZGVzKFdvcmtJdGVtU291cmNlLkpJUkEpO1xuICAgIGNvbnN0IGdpdGh1Yk93bmVyID0gb3B0aW9ucy5naXRodWJPd25lciB8fCBERUZBVUxUX0dJVEhVQl9PV05FUjtcbiAgICBjb25zdCBiYXNlQnJhbmNoID0gb3B0aW9ucy5iYXNlQnJhbmNoIHx8ICdtYWluJztcbiAgICBjb25zdCBzZWNyZXRzVmF1bHQgPSBgJHtyZXBvTmFtZX0tc2VjcmV0c2A7XG4gICAgLy8gQSBzaW5nbGUgcmVkaXJlY3Qgb25seTogcHJvamVuJ3MgYnVpbHQtaW4gY3Jvc3MtcGxhdGZvcm0gdGFzayBzaGVsbFxuICAgIC8vIChkYXgpIHJlamVjdHMgYSBjb21tYW5kIHdpdGggbW9yZSB0aGFuIG9uZSByZWRpcmVjdCAoZS5nLiBjb21iaW5pbmdcbiAgICAvLyBgPi9kZXYvbnVsbGAgd2l0aCBgMj4mMWApIHdpdGggXCJNdWx0aXBsZSByZWRpcmVjdHMgYXJlIGN1cnJlbnRseSBub3RcbiAgICAvLyBzdXBwb3J0ZWRcIiDigJQgY29uZmlybWVkIGJ5IGRvZ2Zvb2RpbmcgdGhpcyBjb25zdHJ1Y3Qgb24gdGhpcyB2ZXJ5IHJlcG8uXG4gICAgY29uc3Qgc3dhbXBJbml0U3RlcCA9ICdjb21tYW5kIC12IHN3YW1wID4vZGV2L251bGwgJiYgc3dhbXAgaW5pdCAtLXRvb2wgY2xhdWRlIHx8IHRydWUnO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU1vZGVscyhwcm9qZWN0LCB7XG4gICAgICByZXBvTmFtZSxcbiAgICAgIGdpdGh1Yk93bmVyLFxuICAgICAgYmFzZUJyYW5jaCxcbiAgICAgIHdvcmtJdGVtU291cmNlcyxcbiAgICAgIGppcmEsXG4gICAgfSk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5V29ya0l0ZW1Tb3VyY2VzKHByb2plY3QsIHsgcmVwb05hbWUsIGdpdGh1Yk93bmVyLCBzb3VyY2VzOiB3b3JrSXRlbVNvdXJjZXMsIGppcmEgfSk7XG5cbiAgICBpZiAoamlyYUVuYWJsZWQpIHtcbiAgICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlKaXJhRXh0ZW5zaW9uKHByb2plY3QpO1xuICAgIH1cblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBcmNoaXRlY3R1cmVSdWxlcyhwcm9qZWN0KTtcblxuICAgIG5ldyBTb2Z0d2FyZUZhY3RvcnlBdHRlc3RhdGlvbihwcm9qZWN0LCB7IHJlcG9OYW1lLCBhdHRlc3RhdGlvbkZpbGVzIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeU9wZW5TcGVjR2F0ZXMocHJvamVjdCk7XG5cbiAgICBuZXcgU29mdHdhcmVGYWN0b3J5V29ya2Zsb3dzKHByb2plY3QsIHsgcmVwb05hbWUsIGFjdGlvblZlcnNpb25zIH0pO1xuXG4gICAgbmV3IFNvZnR3YXJlRmFjdG9yeUJvb3RzdHJhcChwcm9qZWN0LCB7IHdvcmtJdGVtU291cmNlcyB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygndmFsaWRhdGU6YXJjaGl0ZWN0dXJlJywge1xuICAgICAgZGVzY3JpcHRpb246ICdSdW4gdGhlIGFyY2hpdGVjdHVyZSBydWxlIHJlZ2lzdHJ5IChhcmNoaXRlY3R1cmUtcnVsZXMvcnVsZXMuanNvbikgYWdhaW5zdCB0aGUgcmVwbycsXG4gICAgICBleGVjOiAndHMtbm9kZSAtLXByb2plY3QgYXJjaGl0ZWN0dXJlLXJ1bGVzL3RzY29uZmlnLmpzb24gYXJjaGl0ZWN0dXJlLXJ1bGVzL2NoZWNrLnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnb3BlbnNwZWM6Y2hlY2stdGFza3MtY29tcGxldGUnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZhaWwgdW5sZXNzIGV2ZXJ5IHRhc2sgaW4gdGhlIG5hbWVkIE9wZW5TcGVjIGNoYW5nZSBpcyBjb21wbGV0ZSAodXNhZ2U6IC0tIDxjaGFuZ2Utc2x1Zz4pJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBvcGVuc3BlYy1nYXRlcy90c2NvbmZpZy5qc29uIG9wZW5zcGVjLWdhdGVzL2NoZWNrLXRhc2tzLWNvbXBsZXRlLnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdhdHRlc3RhdGlvbjptYW5pZmVzdCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHJpbnQgU0hBMjU2IGNoZWNrc3VtcyBvZiB0aGUgZmlsZXMgYSBQUiBhdHRlc3RhdGlvbiBpcyB2ZXJpZmllZCBhZ2FpbnN0IChzZWUgYXR0ZXN0YXRpb24vbWFuaWZlc3QudHMpJyxcbiAgICAgIGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBhdHRlc3RhdGlvbi90c2NvbmZpZy5qc29uIGF0dGVzdGF0aW9uL21hbmlmZXN0LnRzJyxcbiAgICB9KTtcblxuICAgIHByb2plY3QuYWRkVGFzaygnYXR0ZXN0YXRpb246dmVyaWZ5Jywge1xuICAgICAgZGVzY3JpcHRpb246ICdWZXJpZnkgYSBQUlxcJ3MgZW1iZWRkZWQgYXR0ZXN0YXRpb24tbWFuaWZlc3QgYWdhaW5zdCB0aGUgY3VycmVudCBjaGVja291dCAodXNhZ2U6IC0tIC0tYm9keS1maWxlIDxwYXRoPiAtLWNvbW1pdCA8c2hhPiknLFxuICAgICAgZXhlYzogJ3RzLW5vZGUgLS1wcm9qZWN0IGF0dGVzdGF0aW9uL3RzY29uZmlnLmpzb24gYXR0ZXN0YXRpb24vdmVyaWZ5LnRzJyxcbiAgICAgIHJlY2VpdmVBcmdzOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgcHJvamVjdC5hZGRUYXNrKCdzd2FtcDpib290c3RyYXAnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ09uZS10aW1lIHNldHVwOiBwdWxsIHRoZSBzd2FtcCBleHRlbnNpb25zIGF0IHRoZSB2ZXJzaW9ucyBwaW5uZWQgaW4gZXh0ZW5zaW9ucy9tb2RlbHMvdXBzdHJlYW1fZXh0ZW5zaW9ucy5qc29uIGFuZCBjcmVhdGUgdGhlIHNlY3JldHMgdmF1bHQgKHN3YW1wIGluaXQgaXRzZWxmIGFscmVhZHkgcnVucyBvbiBldmVyeSBpbnN0YWxsKScsXG4gICAgICBzdGVwczogW1xuICAgICAgICB7IGV4ZWM6ICd0cy1ub2RlIC0tcHJvamVjdCBzd2FtcC1ib290c3RyYXAvdHNjb25maWcuanNvbiBzd2FtcC1ib290c3RyYXAvcHVsbC1leHRlbnNpb25zLnRzJyB9LFxuICAgICAgICB7IGV4ZWM6IGBzd2FtcCB2YXVsdCBjcmVhdGUgbG9jYWxfZW5jcnlwdGlvbiAke3NlY3JldHNWYXVsdH1gIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBleGVjOiBgZWNobyBcIk5leHQ6IHN3YW1wIHZhdWx0IHB1dCAke3NlY3JldHNWYXVsdH0gR0lUSFVCX1RPS0VOIC0tcmVmcmVzaC1mcm9tICdnaCBhdXRoIHRva2VuJ1wiYCxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uKGppcmFFbmFibGVkICYmIGppcmEgPyBbXG4gICAgICAgICAgeyBleGVjOiBgZWNobyBcIlRoZW46IGluc3RhbGwgYWNsaSBmcm9tICR7QUNMSV9JTlNUQUxMX0dVSURFfSBhbmQgcnVuOiBhY2xpIGppcmEgYXV0aCBsb2dpbiAtLXdlYlwiYCB9LFxuICAgICAgICAgIHsgZXhlYzogYGVjaG8gXCJUaGVuOiBhY2xpIGppcmEgYXV0aCBzdGF0dXMgbXVzdCBzaG93IFNpdGU6ICR7amlyYS5zaXRlSG9zdH0uIElmIGl0IHNob3dzIGFub3RoZXIgc2l0ZSwgcnVuOiBhY2xpIGppcmEgYXV0aCBzd2l0Y2ggLS1zaXRlICR7amlyYS5zaXRlSG9zdH1cImAgfSxcbiAgICAgICAgXSA6IFtdKSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICAvLyBgc3dhbXAgaW5pdGAgaXMgc2FmZSB0byByZS1ydW4gKGlkZW1wb3RlbnQgd2hlbiBhbHJlYWR5IGluaXRpYWxpemVkKSxcbiAgICAvLyBzbyBldmVyeSBpbnN0YWxsIGtlZXBzIHRoZSByZXBvIGluaXRpYWxpemVkIHdpdGhvdXQgYSBzZXBhcmF0ZSBtYW51YWxcbiAgICAvLyBzdGVwIOKAlCBpbmNsdWRpbmcgb24gYSBmcmVzaCBjbG9uZSB0aGF0IGhhc24ndCBydW4gc3dhbXA6Ym9vdHN0cmFwIHlldC5cbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbFRhc2suZXhlYyhzd2FtcEluaXRTdGVwKTtcbiAgICBwcm9qZWN0LnBhY2thZ2UuaW5zdGFsbENpVGFzay5leGVjKHN3YW1wSW5pdFN0ZXApO1xuXG4gICAgLy8gTWlycm9ycyB0aGUgcGF0dGVybnMgYHN3YW1wIGluaXRgIGl0c2VsZiB3b3VsZCBhcHBlbmQgdG8gLmdpdGlnbm9yZS5cbiAgICAvLyBwcm9qZW4ncyBJZ25vcmVGaWxlIGZ1bGx5IHJlZ2VuZXJhdGVzIC5naXRpZ25vcmUgZnJvbSBpdHMgb3duIHRyYWNrZWRcbiAgICAvLyBlbnRyaWVzIG9uIGV2ZXJ5IHN5bnRoLCBzbyBhbnl0aGluZyBgc3dhbXAgaW5pdGAgYXBwZW5kcyBvdXQtb2YtYmFuZFxuICAgIC8vIGdldHMgc2lsZW50bHkgd2lwZWQgYnkgdGhlIG5leHQgYG5weCBwcm9qZW5gIHJ1biAoY2F1Z2h0IGJ5IENJJ3NcbiAgICAvLyBzZWxmLW11dGF0aW9uIGNoZWNrKSB1bmxlc3MgaXQncyBhbHNvIGFkZGVkIGhlcmUuXG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5zd2FtcC8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLnN3YW1wLXNvdXJjZXMueWFtbCcpO1xuICAgIHByb2plY3QuYWRkR2l0SWdub3JlKCcuY2xhdWRlL3dvcmt0cmVlcy8nKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zZXR0aW5ncy5sb2NhbC5qc29uJyk7XG4gICAgcHJvamVjdC5hZGRHaXRJZ25vcmUoJy5jbGF1ZGUvc2NoZWR1bGVkX3Rhc2tzLmxvY2snKTtcbiAgICBwcm9qZWN0LmFkZEdpdElnbm9yZSgnLmNsYXVkZS9zY2hlZHVsZWRfdGFza3MuanNvbicpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TextFile } from 'projen';
|
|
2
|
+
import { NodeProject } from 'projen/lib/javascript';
|
|
3
|
+
export declare const JIRA_EXTENSION_PATH = "extensions/models/jira.ts";
|
|
4
|
+
export declare const JIRA_EXTENSION_TYPE = "@batman/jira";
|
|
5
|
+
export declare const JIRA_EXTENSION_VERSION = "2026.11.09.1";
|
|
6
|
+
export declare const JIRA_TEMPLATE_DIR: string;
|
|
7
|
+
export declare const ACLI_INSTALL_GUIDE = "https://developer.atlassian.com/cloud/acli/guides/install-acli/";
|
|
8
|
+
/**
|
|
9
|
+
* The managed swamp extension the Jira work-item source fetches with: one
|
|
10
|
+
* read-only `fetch` method that reads a work item through Atlassian's acli.
|
|
11
|
+
*/
|
|
12
|
+
export declare class SoftwareFactoryJiraExtension extends TextFile {
|
|
13
|
+
constructor(project: NodeProject);
|
|
14
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SoftwareFactoryJiraExtension = exports.ACLI_INSTALL_GUIDE = exports.JIRA_TEMPLATE_DIR = exports.JIRA_EXTENSION_VERSION = exports.JIRA_EXTENSION_TYPE = exports.JIRA_EXTENSION_PATH = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
38
|
+
const projen_1 = require("projen");
|
|
39
|
+
const templates_1 = require("./templates");
|
|
40
|
+
exports.JIRA_EXTENSION_PATH = 'extensions/models/jira.ts';
|
|
41
|
+
exports.JIRA_EXTENSION_TYPE = '@batman/jira';
|
|
42
|
+
exports.JIRA_EXTENSION_VERSION = '2026.11.09.1';
|
|
43
|
+
exports.JIRA_TEMPLATE_DIR = path.join(__dirname, '..', 'templates', 'jira');
|
|
44
|
+
exports.ACLI_INSTALL_GUIDE = 'https://developer.atlassian.com/cloud/acli/guides/install-acli/';
|
|
45
|
+
/**
|
|
46
|
+
* The managed swamp extension the Jira work-item source fetches with: one
|
|
47
|
+
* read-only `fetch` method that reads a work item through Atlassian's acli.
|
|
48
|
+
*/
|
|
49
|
+
class SoftwareFactoryJiraExtension extends projen_1.TextFile {
|
|
50
|
+
constructor(project) {
|
|
51
|
+
super(project, exports.JIRA_EXTENSION_PATH, {
|
|
52
|
+
lines: (0, templates_1.templateLines)(project, exports.JIRA_EXTENSION_PATH, exports.JIRA_TEMPLATE_DIR),
|
|
53
|
+
marker: true,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.SoftwareFactoryJiraExtension = SoftwareFactoryJiraExtension;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU29mdHdhcmVGYWN0b3J5SmlyYUV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Tb2Z0d2FyZUZhY3RvcnlKaXJhRXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixtQ0FBa0M7QUFFbEMsMkNBQTRDO0FBRS9CLFFBQUEsbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7QUFDbEQsUUFBQSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFDckMsUUFBQSxzQkFBc0IsR0FBRyxjQUFjLENBQUM7QUFDeEMsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BFLFFBQUEsa0JBQWtCLEdBQUcsaUVBQWlFLENBQUM7QUFFcEc7OztHQUdHO0FBQ0gsTUFBYSw0QkFBNkIsU0FBUSxpQkFBUTtJQUN4RCxZQUFZLE9BQW9CO1FBQzlCLEtBQUssQ0FBQyxPQUFPLEVBQUUsMkJBQW1CLEVBQUU7WUFDbEMsS0FBSyxFQUFFLElBQUEseUJBQWEsRUFBQyxPQUFPLEVBQUUsMkJBQW1CLEVBQUUseUJBQWlCLENBQUM7WUFDckUsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxvRUFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBUZXh0RmlsZSB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBOb2RlUHJvamVjdCB9IGZyb20gJ3Byb2plbi9saWIvamF2YXNjcmlwdCc7XG5pbXBvcnQgeyB0ZW1wbGF0ZUxpbmVzIH0gZnJvbSAnLi90ZW1wbGF0ZXMnO1xuXG5leHBvcnQgY29uc3QgSklSQV9FWFRFTlNJT05fUEFUSCA9ICdleHRlbnNpb25zL21vZGVscy9qaXJhLnRzJztcbmV4cG9ydCBjb25zdCBKSVJBX0VYVEVOU0lPTl9UWVBFID0gJ0BiYXRtYW4vamlyYSc7XG5leHBvcnQgY29uc3QgSklSQV9FWFRFTlNJT05fVkVSU0lPTiA9ICcyMDI2LjExLjA5LjEnO1xuZXhwb3J0IGNvbnN0IEpJUkFfVEVNUExBVEVfRElSID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3RlbXBsYXRlcycsICdqaXJhJyk7XG5leHBvcnQgY29uc3QgQUNMSV9JTlNUQUxMX0dVSURFID0gJ2h0dHBzOi8vZGV2ZWxvcGVyLmF0bGFzc2lhbi5jb20vY2xvdWQvYWNsaS9ndWlkZXMvaW5zdGFsbC1hY2xpLyc7XG5cbi8qKlxuICogVGhlIG1hbmFnZWQgc3dhbXAgZXh0ZW5zaW9uIHRoZSBKaXJhIHdvcmstaXRlbSBzb3VyY2UgZmV0Y2hlcyB3aXRoOiBvbmVcbiAqIHJlYWQtb25seSBgZmV0Y2hgIG1ldGhvZCB0aGF0IHJlYWRzIGEgd29yayBpdGVtIHRocm91Z2ggQXRsYXNzaWFuJ3MgYWNsaS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvZnR3YXJlRmFjdG9yeUppcmFFeHRlbnNpb24gZXh0ZW5kcyBUZXh0RmlsZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IE5vZGVQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCwgSklSQV9FWFRFTlNJT05fUEFUSCwge1xuICAgICAgbGluZXM6IHRlbXBsYXRlTGluZXMocHJvamVjdCwgSklSQV9FWFRFTlNJT05fUEFUSCwgSklSQV9URU1QTEFURV9ESVIpLFxuICAgICAgbWFya2VyOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NodeProject } from 'projen/lib/javascript';
|
|
2
|
+
import { JiraWorkItemSourceOptions, WorkItemSource } from './WorkItemSource';
|
|
2
3
|
export interface SoftwareFactoryModelsOptions {
|
|
3
4
|
/**
|
|
4
5
|
* The bare repo name (e.g. `expense-tracker`), used to derive model names
|
|
@@ -13,6 +14,15 @@ export interface SoftwareFactoryModelsOptions {
|
|
|
13
14
|
* The branch the factory opens pull requests against.
|
|
14
15
|
*/
|
|
15
16
|
readonly baseBranch: string;
|
|
17
|
+
/**
|
|
18
|
+
* The enabled work-item sources. Each source's seed model is generated only
|
|
19
|
+
* when that source is enabled.
|
|
20
|
+
*/
|
|
21
|
+
readonly workItemSources: WorkItemSource[];
|
|
22
|
+
/**
|
|
23
|
+
* Settings for the Jira source, required when it is enabled.
|
|
24
|
+
*/
|
|
25
|
+
readonly jira?: JiraWorkItemSourceOptions;
|
|
16
26
|
}
|
|
17
27
|
/**
|
|
18
28
|
* Seed swamp model instances wiring the `@swamp/software-factory` state
|