@code-pushup/create-cli 0.117.0 → 0.118.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/package.json +4 -3
- package/src/index.js +6 -1
- package/src/index.js.map +1 -1
- package/src/lib/setup/ci.d.ts +3 -0
- package/src/lib/setup/ci.js +128 -0
- package/src/lib/setup/ci.js.map +1 -0
- package/src/lib/setup/types.d.ts +3 -0
- package/src/lib/setup/types.js +1 -0
- package/src/lib/setup/types.js.map +1 -1
- package/src/lib/setup/wizard.js +11 -9
- package/src/lib/setup/wizard.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-pushup/create-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.118.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bin": "index.js",
|
|
6
6
|
"homepage": "https://github.com/code-pushup/cli/tree/main/packages/create-cli#readme",
|
|
@@ -26,9 +26,10 @@
|
|
|
26
26
|
},
|
|
27
27
|
"type": "module",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@code-pushup/models": "0.
|
|
30
|
-
"@code-pushup/utils": "0.
|
|
29
|
+
"@code-pushup/models": "0.118.0",
|
|
30
|
+
"@code-pushup/utils": "0.118.0",
|
|
31
31
|
"@inquirer/prompts": "^8.0.0",
|
|
32
|
+
"yaml": "^2.5.1",
|
|
32
33
|
"yargs": "^17.7.2"
|
|
33
34
|
},
|
|
34
35
|
"files": [
|
package/src/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import yargs from 'yargs';
|
|
3
3
|
import { hideBin } from 'yargs/helpers';
|
|
4
4
|
import { parsePluginSlugs, validatePluginSlugs } from './lib/setup/plugins.js';
|
|
5
|
-
import { CONFIG_FILE_FORMATS, SETUP_MODES, } from './lib/setup/types.js';
|
|
5
|
+
import { CI_PROVIDERS, CONFIG_FILE_FORMATS, SETUP_MODES, } from './lib/setup/types.js';
|
|
6
6
|
import { runSetupWizard } from './lib/setup/wizard.js';
|
|
7
7
|
// TODO: create, import and pass plugin bindings (eslint, coverage, lighthouse, typescript, js-packages, jsdocs, axe)
|
|
8
8
|
const bindings = [];
|
|
@@ -32,6 +32,11 @@ const argv = await yargs(hideBin(process.argv))
|
|
|
32
32
|
type: 'string',
|
|
33
33
|
choices: SETUP_MODES,
|
|
34
34
|
describe: 'Setup mode (default: auto-detected from project)',
|
|
35
|
+
})
|
|
36
|
+
.option('ci', {
|
|
37
|
+
type: 'string',
|
|
38
|
+
choices: CI_PROVIDERS,
|
|
39
|
+
describe: 'CI/CD integration (github, gitlab, or none)',
|
|
35
40
|
})
|
|
36
41
|
.check(parsed => {
|
|
37
42
|
validatePluginSlugs(bindings, parsed.plugins);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,mBAAmB,EAEnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,qHAAqH;AACrH,MAAM,QAAQ,GAAyB,EAAE,CAAC;AAE1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,uCAAuC;CAClD,CAAC;KACD,MAAM,CAAC,KAAK,EAAE;IACb,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,+BAA+B;CAC1C,CAAC;KACD,MAAM,CAAC,eAAe,EAAE;IACvB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,0DAA0D;CACrE,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,gEAAgE;IAC1E,MAAM,EAAE,gBAAgB;CACzB,CAAC;KACD,MAAM,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,kDAAkD;CAC7D,CAAC;KACD,KAAK,CAAC,MAAM,CAAC,EAAE;IACd,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,YAAY,EACZ,mBAAmB,EAEnB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,qHAAqH;AACrH,MAAM,QAAQ,GAAyB,EAAE,CAAC;AAE1C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,uCAAuC;CAClD,CAAC;KACD,MAAM,CAAC,KAAK,EAAE;IACb,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,+BAA+B;CAC1C,CAAC;KACD,MAAM,CAAC,eAAe,EAAE;IACvB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,0DAA0D;CACrE,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACjB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,gEAAgE;IAC1E,MAAM,EAAE,gBAAgB;CACzB,CAAC;KACD,MAAM,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,kDAAkD;CAC7D,CAAC;KACD,MAAM,CAAC,IAAI,EAAE;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,6CAA6C;CACxD,CAAC;KACD,KAAK,CAAC,MAAM,CAAC,EAAE;IACd,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type CiProvider, type CliArgs, type ConfigContext, type Tree } from './types.js';
|
|
2
|
+
export declare function promptCiProvider(cliArgs: CliArgs): Promise<CiProvider>;
|
|
3
|
+
export declare function resolveCi(tree: Tree, provider: CiProvider, context: ConfigContext): Promise<void>;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { select } from '@inquirer/prompts';
|
|
2
|
+
import * as YAML from 'yaml';
|
|
3
|
+
import { getGitDefaultBranch, logger } from '@code-pushup/utils';
|
|
4
|
+
import { CI_PROVIDERS, } from './types.js';
|
|
5
|
+
const GITHUB_WORKFLOW_PATH = '.github/workflows/code-pushup.yml';
|
|
6
|
+
const GITLAB_CONFIG_PATH = '.gitlab-ci.yml';
|
|
7
|
+
const GITLAB_CONFIG_SEPARATE_PATH = '.gitlab/ci/code-pushup.gitlab-ci.yml';
|
|
8
|
+
export async function promptCiProvider(cliArgs) {
|
|
9
|
+
if (isCiProvider(cliArgs.ci)) {
|
|
10
|
+
return cliArgs.ci;
|
|
11
|
+
}
|
|
12
|
+
if (cliArgs.yes) {
|
|
13
|
+
return 'none';
|
|
14
|
+
}
|
|
15
|
+
return select({
|
|
16
|
+
message: 'CI/CD integration:',
|
|
17
|
+
choices: [
|
|
18
|
+
{ name: 'GitHub Actions', value: 'github' },
|
|
19
|
+
{ name: 'GitLab CI/CD', value: 'gitlab' },
|
|
20
|
+
{ name: 'none', value: 'none' },
|
|
21
|
+
],
|
|
22
|
+
default: 'none',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export async function resolveCi(tree, provider, context) {
|
|
26
|
+
switch (provider) {
|
|
27
|
+
case 'github':
|
|
28
|
+
await writeGitHubWorkflow(tree, context);
|
|
29
|
+
break;
|
|
30
|
+
case 'gitlab':
|
|
31
|
+
await writeGitLabConfig(tree);
|
|
32
|
+
break;
|
|
33
|
+
case 'none':
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function writeGitHubWorkflow(tree, context) {
|
|
38
|
+
await tree.write(GITHUB_WORKFLOW_PATH, await generateGitHubYaml(context));
|
|
39
|
+
}
|
|
40
|
+
async function generateGitHubYaml({ mode, tool, }) {
|
|
41
|
+
const branch = await getGitDefaultBranch();
|
|
42
|
+
const lines = [
|
|
43
|
+
'name: Code PushUp',
|
|
44
|
+
'',
|
|
45
|
+
'on:',
|
|
46
|
+
' push:',
|
|
47
|
+
` branches: [${branch}]`,
|
|
48
|
+
' pull_request:',
|
|
49
|
+
` branches: [${branch}]`,
|
|
50
|
+
'',
|
|
51
|
+
'permissions:',
|
|
52
|
+
' contents: read',
|
|
53
|
+
' actions: read',
|
|
54
|
+
' pull-requests: write',
|
|
55
|
+
'',
|
|
56
|
+
'jobs:',
|
|
57
|
+
' code-pushup:',
|
|
58
|
+
' runs-on: ubuntu-latest',
|
|
59
|
+
' name: Code PushUp',
|
|
60
|
+
' steps:',
|
|
61
|
+
' - name: Clone repository',
|
|
62
|
+
' uses: actions/checkout@v5',
|
|
63
|
+
' - name: Set up Node.js',
|
|
64
|
+
' uses: actions/setup-node@v6',
|
|
65
|
+
' - name: Install dependencies',
|
|
66
|
+
' run: npm ci',
|
|
67
|
+
' - name: Code PushUp',
|
|
68
|
+
' uses: code-pushup/github-action@v0',
|
|
69
|
+
...(mode === 'monorepo' && tool != null
|
|
70
|
+
? [' with:', ` monorepo: ${tool}`]
|
|
71
|
+
: []),
|
|
72
|
+
];
|
|
73
|
+
return `${lines.join('\n')}\n`;
|
|
74
|
+
}
|
|
75
|
+
async function writeGitLabConfig(tree) {
|
|
76
|
+
const filePath = await resolveGitLabFilePath(tree);
|
|
77
|
+
await tree.write(filePath, generateGitLabYaml());
|
|
78
|
+
if (filePath === GITLAB_CONFIG_SEPARATE_PATH) {
|
|
79
|
+
await patchRootGitLabConfig(tree);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function generateGitLabYaml() {
|
|
83
|
+
const lines = [
|
|
84
|
+
'workflow:',
|
|
85
|
+
' rules:',
|
|
86
|
+
' - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH',
|
|
87
|
+
" - if: $CI_PIPELINE_SOURCE == 'merge_request_event'",
|
|
88
|
+
'',
|
|
89
|
+
'include:',
|
|
90
|
+
' - https://gitlab.com/code-pushup/gitlab-pipelines-template/-/raw/latest/code-pushup.yml',
|
|
91
|
+
];
|
|
92
|
+
return `${lines.join('\n')}\n`;
|
|
93
|
+
}
|
|
94
|
+
async function patchRootGitLabConfig(tree) {
|
|
95
|
+
const content = await tree.read(GITLAB_CONFIG_PATH);
|
|
96
|
+
if (content == null) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const doc = YAML.parseDocument(content);
|
|
100
|
+
if (!YAML.isMap(doc.contents)) {
|
|
101
|
+
logger.warn(`Could not update ${GITLAB_CONFIG_PATH}. Add an include entry for ${GITLAB_CONFIG_SEPARATE_PATH} to your config.`);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const entry = { local: GITLAB_CONFIG_SEPARATE_PATH };
|
|
105
|
+
const include = doc.get('include', true);
|
|
106
|
+
if (include == null) {
|
|
107
|
+
doc.set('include', doc.createNode([entry]));
|
|
108
|
+
}
|
|
109
|
+
else if (YAML.isSeq(include)) {
|
|
110
|
+
include.add(doc.createNode(entry));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const existing = doc.get('include');
|
|
114
|
+
doc.set('include', doc.createNode([existing, entry]));
|
|
115
|
+
}
|
|
116
|
+
await tree.write(GITLAB_CONFIG_PATH, doc.toString());
|
|
117
|
+
}
|
|
118
|
+
async function resolveGitLabFilePath(tree) {
|
|
119
|
+
if (await tree.exists(GITLAB_CONFIG_PATH)) {
|
|
120
|
+
return GITLAB_CONFIG_SEPARATE_PATH;
|
|
121
|
+
}
|
|
122
|
+
return GITLAB_CONFIG_PATH;
|
|
123
|
+
}
|
|
124
|
+
function isCiProvider(value) {
|
|
125
|
+
const validValues = CI_PROVIDERS;
|
|
126
|
+
return value != null && validValues.includes(value);
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../../../src/lib/setup/ci.ts"],"names":[],"mappings":"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"}
|
package/src/lib/setup/types.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { PluginMeta } from '@code-pushup/models';
|
|
2
2
|
import type { MonorepoTool } from '@code-pushup/utils';
|
|
3
|
+
export declare const CI_PROVIDERS: readonly ["github", "gitlab", "none"];
|
|
4
|
+
export type CiProvider = (typeof CI_PROVIDERS)[number];
|
|
3
5
|
export declare const CONFIG_FILE_FORMATS: readonly ["ts", "js", "mjs"];
|
|
4
6
|
export type ConfigFileFormat = (typeof CONFIG_FILE_FORMATS)[number];
|
|
5
7
|
export declare const SETUP_MODES: readonly ["standalone", "monorepo"];
|
|
@@ -12,6 +14,7 @@ export type CliArgs = {
|
|
|
12
14
|
'config-format'?: string;
|
|
13
15
|
mode?: SetupMode;
|
|
14
16
|
plugins?: string[];
|
|
17
|
+
ci?: string;
|
|
15
18
|
'target-dir'?: string;
|
|
16
19
|
[key: string]: unknown;
|
|
17
20
|
};
|
package/src/lib/setup/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAGhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,UAAU,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/setup/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGlE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAU,CAAC;AAGhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,UAAU,CAAU,CAAC;AAG/D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC"}
|
package/src/lib/setup/wizard.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { asyncSequential, formatAsciiTable, getGitRoot, logger, toUnixPath, } from '@code-pushup/utils';
|
|
3
|
+
import { promptCiProvider, resolveCi } from './ci.js';
|
|
3
4
|
import { computeRelativePresetImport, generateConfigSource, generatePresetSource, generateProjectSource, } from './codegen.js';
|
|
4
5
|
import { promptConfigFormat, readPackageJson, resolveFilename, } from './config-format.js';
|
|
5
6
|
import { resolveGitignore } from './gitignore.js';
|
|
@@ -14,23 +15,24 @@ import { createTree } from './virtual-fs.js';
|
|
|
14
15
|
*/
|
|
15
16
|
export async function runSetupWizard(bindings, cliArgs) {
|
|
16
17
|
const targetDir = cliArgs['target-dir'] ?? process.cwd();
|
|
17
|
-
const
|
|
18
|
+
const context = await promptSetupMode(targetDir, cliArgs);
|
|
18
19
|
const selectedBindings = await promptPluginSelection(bindings, targetDir, cliArgs);
|
|
19
20
|
const format = await promptConfigFormat(targetDir, cliArgs);
|
|
20
|
-
const
|
|
21
|
-
const isEsm = packageJson.type === 'module';
|
|
22
|
-
const configFilename = resolveFilename('code-pushup.config', format, isEsm);
|
|
21
|
+
const ciProvider = await promptCiProvider(cliArgs);
|
|
23
22
|
const resolved = await asyncSequential(selectedBindings, async (binding) => ({
|
|
24
23
|
scope: binding.scope ?? 'project',
|
|
25
|
-
result: await resolveBinding(binding, cliArgs,
|
|
24
|
+
result: await resolveBinding(binding, cliArgs, context),
|
|
26
25
|
}));
|
|
27
|
-
const
|
|
28
|
-
const
|
|
26
|
+
const packageJson = await readPackageJson(targetDir);
|
|
27
|
+
const isEsm = packageJson.type === 'module';
|
|
28
|
+
const configFilename = resolveFilename('code-pushup.config', format, isEsm);
|
|
29
|
+
const tree = createTree(await getGitRoot());
|
|
29
30
|
const writeContext = { tree, format, configFilename, isEsm };
|
|
30
|
-
await (mode === 'monorepo' && tool != null
|
|
31
|
-
? writeMonorepoConfigs(writeContext, resolved, targetDir, tool)
|
|
31
|
+
await (context.mode === 'monorepo' && context.tool != null
|
|
32
|
+
? writeMonorepoConfigs(writeContext, resolved, targetDir, context.tool)
|
|
32
33
|
: writeStandaloneConfig(writeContext, resolved.map(r => r.result)));
|
|
33
34
|
await resolveGitignore(tree);
|
|
35
|
+
await resolveCi(tree, ciProvider, context);
|
|
34
36
|
logChanges(tree.listChanges());
|
|
35
37
|
if (cliArgs['dry-run']) {
|
|
36
38
|
logger.info('Dry run — no files written.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAU1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAA8B,EAC9B,OAAgB;IAEhB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzD,MAAM,
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../../../src/lib/setup/wizard.ts"],"names":[],"mappings":"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"}
|