@zivis/cli 0.1.0-alpha.21 → 0.1.0-alpha.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/dist/commands/auth/login.js +4 -4
- package/dist/commands/auth/login.js.map +1 -1
- package/dist/commands/mcp/index.js +17 -13
- package/dist/commands/mcp/index.js.map +1 -1
- package/dist/internal/ide-setup.d.ts +12 -12
- package/dist/internal/ide-setup.js +59 -50
- package/dist/internal/ide-setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,20 +34,20 @@ export async function loginCommand(opts) {
|
|
|
34
34
|
console.log(`✓ JWT scoped to organization: ${organizationId}`);
|
|
35
35
|
}
|
|
36
36
|
try {
|
|
37
|
-
await setupCursorWorkspace(
|
|
37
|
+
await setupCursorWorkspace();
|
|
38
38
|
}
|
|
39
39
|
catch (err) {
|
|
40
40
|
console.log(` WARNING: Failed to update .cursor/mcp.json: ${err instanceof Error ? err.message : err}`);
|
|
41
41
|
}
|
|
42
42
|
try {
|
|
43
|
-
await setupVsCodeClaude(
|
|
44
|
-
await setupVsCodeCopilot(
|
|
43
|
+
await setupVsCodeClaude();
|
|
44
|
+
await setupVsCodeCopilot();
|
|
45
45
|
}
|
|
46
46
|
catch (err) {
|
|
47
47
|
console.log(` WARNING: Failed to update .vscode/mcp.json: ${err instanceof Error ? err.message : err}`);
|
|
48
48
|
}
|
|
49
49
|
try {
|
|
50
|
-
await setupClaudeCodeCli(
|
|
50
|
+
await setupClaudeCodeCli();
|
|
51
51
|
}
|
|
52
52
|
catch (err) {
|
|
53
53
|
console.log(` WARNING: Failed to update Claude Code CLI config: ${err instanceof Error ? err.message : err}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAUrC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAkB;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;IAE5E,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACrD,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC;QAC9C,OAAO,CAAC,GAAG,CACT,mCAAmC,cAAc,GAC/C,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAChE,EAAE,CACH,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;YAC1D,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO;YAClC,WAAW,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI;SAC/B,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,WAAW,GAAG,OAAO,IAAI,SAAS,CAAC;QACzC,MAAM,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAE3C,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,YAAY,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;QACtD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,iCAAiC,cAAc,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
1
2
|
import { startServer } from "@zivis/mcp/server";
|
|
2
3
|
import { DEFAULT_CONFIG } from "@zivis/mcp/types";
|
|
3
|
-
import {
|
|
4
|
+
import { setupCursorWorkspace, setupVsCodeCopilot, setupVsCodeClaude, setupClaudeCodeCli, setupCline, setupWindsurf, printClaudeCodeManual, } from "../../internal/ide-setup.js";
|
|
4
5
|
const KNOWN_CLIENTS = [
|
|
5
6
|
"cursor",
|
|
6
7
|
"claude-code",
|
|
@@ -15,17 +16,20 @@ export function registerMcpCommands(program) {
|
|
|
15
16
|
mcp
|
|
16
17
|
.command("serve")
|
|
17
18
|
.description("start the stdio MCP server (called by your IDE, not directly)")
|
|
18
|
-
.
|
|
19
|
-
|
|
19
|
+
.option("-w, --workspace <path>", "workspace root for project binding detection (auto-set by IDE config, do not pass manually)")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
const config = { ...DEFAULT_CONFIG };
|
|
22
|
+
if (opts.workspace) {
|
|
23
|
+
config.workspacePath = path.resolve(opts.workspace);
|
|
24
|
+
}
|
|
25
|
+
await startServer(config);
|
|
20
26
|
});
|
|
21
27
|
mcp
|
|
22
28
|
.command("install")
|
|
23
|
-
.description("write MCP config for a supported IDE client")
|
|
29
|
+
.description("write MCP config for a supported IDE client (run from your project root)")
|
|
24
30
|
.option("--client <name>", `target client (${KNOWN_CLIENTS.join(" | ")})`)
|
|
25
|
-
.option("-s, --session <name>", "include ZIVIS_SESSION env var")
|
|
26
31
|
.action(async (opts) => {
|
|
27
32
|
const client = opts.client?.toLowerCase();
|
|
28
|
-
const session = opts.session;
|
|
29
33
|
if (!client) {
|
|
30
34
|
console.error("Specify a client with --client <name>:");
|
|
31
35
|
for (const c of KNOWN_CLIENTS)
|
|
@@ -35,25 +39,25 @@ export function registerMcpCommands(program) {
|
|
|
35
39
|
try {
|
|
36
40
|
switch (client) {
|
|
37
41
|
case "cursor":
|
|
38
|
-
await
|
|
42
|
+
await setupCursorWorkspace();
|
|
39
43
|
break;
|
|
40
44
|
case "claude-code":
|
|
41
|
-
printClaudeCodeManual(
|
|
45
|
+
printClaudeCodeManual();
|
|
42
46
|
break;
|
|
43
47
|
case "claude-code-cli":
|
|
44
|
-
await setupClaudeCodeCli(
|
|
48
|
+
await setupClaudeCodeCli();
|
|
45
49
|
break;
|
|
46
50
|
case "cline":
|
|
47
|
-
await setupCline(
|
|
51
|
+
await setupCline();
|
|
48
52
|
break;
|
|
49
53
|
case "windsurf":
|
|
50
|
-
await setupWindsurf(
|
|
54
|
+
await setupWindsurf();
|
|
51
55
|
break;
|
|
52
56
|
case "vscode-copilot":
|
|
53
|
-
await setupVsCodeCopilot(
|
|
57
|
+
await setupVsCodeCopilot();
|
|
54
58
|
break;
|
|
55
59
|
case "vscode-claude":
|
|
56
|
-
await setupVsCodeClaude(
|
|
60
|
+
await setupVsCodeClaude();
|
|
57
61
|
break;
|
|
58
62
|
default:
|
|
59
63
|
console.error(`Unknown client: ${client}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export declare function setupCursor(
|
|
1
|
+
export declare function setupCursor(): Promise<void>;
|
|
2
2
|
/**
|
|
3
|
-
* Write a workspace-level .cursor/mcp.json
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* Write a workspace-level .cursor/mcp.json with `--workspace <cwd>` so Cursor
|
|
4
|
+
* starts an isolated MCP process bound to this specific repo.
|
|
5
|
+
* One process = one org = zero cross-tenant risk, regardless of what other
|
|
6
|
+
* repos are open in Cursor.
|
|
7
7
|
*/
|
|
8
|
-
export declare function setupCursorWorkspace(
|
|
9
|
-
export declare function setupVsCodeCopilot(
|
|
10
|
-
export declare function setupVsCodeClaude(
|
|
11
|
-
export declare function setupClaudeCodeCli(
|
|
12
|
-
export declare function setupCline(
|
|
13
|
-
export declare function setupWindsurf(
|
|
14
|
-
export declare function printClaudeCodeManual(
|
|
8
|
+
export declare function setupCursorWorkspace(): Promise<void>;
|
|
9
|
+
export declare function setupVsCodeCopilot(): Promise<void>;
|
|
10
|
+
export declare function setupVsCodeClaude(): Promise<void>;
|
|
11
|
+
export declare function setupClaudeCodeCli(): Promise<void>;
|
|
12
|
+
export declare function setupCline(): Promise<void>;
|
|
13
|
+
export declare function setupWindsurf(): Promise<void>;
|
|
14
|
+
export declare function printClaudeCodeManual(): void;
|
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
3
|
const SERVER_NAME = "zivis";
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Build the MCP server config for an IDE config file.
|
|
6
|
+
*
|
|
7
|
+
* When workspacePath is provided, we pass it as `--workspace <path>` so the
|
|
8
|
+
* MCP server process resolves its session from `.zivis/project.json` at that
|
|
9
|
+
* path — not from an env var that can drift or be accidentally reused across
|
|
10
|
+
* tenants. This gives us one-process-per-org isolation at the IDE level.
|
|
11
|
+
*
|
|
12
|
+
* ZIVIS_SESSION is intentionally NOT used here. The workspace path is the
|
|
13
|
+
* canonical, immutable tenant binding for an MCP process.
|
|
14
|
+
*/
|
|
15
|
+
function buildServerConfig(workspacePath, extra) {
|
|
16
|
+
const args = ["mcp", "serve"];
|
|
17
|
+
if (workspacePath) {
|
|
18
|
+
args.push("--workspace", workspacePath);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
6
21
|
...extra,
|
|
7
22
|
command: "zivis",
|
|
8
|
-
args
|
|
23
|
+
args,
|
|
9
24
|
};
|
|
10
|
-
if (session) {
|
|
11
|
-
config.env = { ZIVIS_SESSION: session };
|
|
12
|
-
}
|
|
13
|
-
return config;
|
|
14
25
|
}
|
|
15
26
|
async function updateMcpConfig(configPath, serverName, serverConfig, rootKey) {
|
|
16
27
|
const configDir = path.dirname(configPath);
|
|
@@ -33,55 +44,54 @@ async function updateMcpConfig(configPath, serverName, serverConfig, rootKey) {
|
|
|
33
44
|
servers[serverName] = serverConfig;
|
|
34
45
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
35
46
|
}
|
|
36
|
-
export async function setupCursor(
|
|
47
|
+
export async function setupCursor() {
|
|
37
48
|
const homeDir = process.env.HOME || "";
|
|
38
49
|
const configPath = path.join(homeDir, ".cursor", "mcp.json");
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(` Session: ${session}`);
|
|
50
|
+
// Global config has no workspace path — serves repos without .zivis/project.json
|
|
51
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(), "mcpServers");
|
|
52
|
+
console.log(`✓ Cursor global MCP config updated: ${configPath}`);
|
|
43
53
|
console.log(" Restart Cursor for changes to take effect");
|
|
44
54
|
}
|
|
45
55
|
/**
|
|
46
|
-
* Write a workspace-level .cursor/mcp.json
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
56
|
+
* Write a workspace-level .cursor/mcp.json with `--workspace <cwd>` so Cursor
|
|
57
|
+
* starts an isolated MCP process bound to this specific repo.
|
|
58
|
+
* One process = one org = zero cross-tenant risk, regardless of what other
|
|
59
|
+
* repos are open in Cursor.
|
|
50
60
|
*/
|
|
51
|
-
export async function setupCursorWorkspace(
|
|
52
|
-
const
|
|
53
|
-
|
|
61
|
+
export async function setupCursorWorkspace() {
|
|
62
|
+
const workspacePath = process.cwd();
|
|
63
|
+
const configPath = path.join(workspacePath, ".cursor", "mcp.json");
|
|
64
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
54
65
|
console.log(`✓ Cursor workspace MCP config updated: ${configPath}`);
|
|
55
|
-
|
|
56
|
-
console.log(` Session: ${session}`);
|
|
66
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
57
67
|
console.log(" Reload Cursor for changes to take effect");
|
|
58
68
|
}
|
|
59
|
-
export async function setupVsCodeCopilot(
|
|
60
|
-
const
|
|
69
|
+
export async function setupVsCodeCopilot() {
|
|
70
|
+
const workspacePath = process.cwd();
|
|
71
|
+
const localConfigPath = path.join(workspacePath, ".vscode", "mcp.json");
|
|
61
72
|
const globalConfigPath = path.join(process.env.HOME || "", ".vscode", "mcp.json");
|
|
62
73
|
let configPath = localConfigPath;
|
|
63
74
|
const exists = fs.existsSync(localConfigPath);
|
|
64
75
|
if (!exists && fs.existsSync(globalConfigPath)) {
|
|
65
76
|
configPath = globalConfigPath;
|
|
66
77
|
}
|
|
67
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
78
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath, { type: "stdio" }), "servers");
|
|
68
79
|
console.log(`✓ VS Code (GitHub Copilot) MCP config updated: ${configPath}`);
|
|
69
|
-
|
|
70
|
-
console.log(` Session: ${session}`);
|
|
80
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
71
81
|
console.log(" Restart VS Code for changes to take effect");
|
|
72
82
|
}
|
|
73
|
-
export async function setupVsCodeClaude(
|
|
74
|
-
const
|
|
75
|
-
|
|
83
|
+
export async function setupVsCodeClaude() {
|
|
84
|
+
const workspacePath = process.cwd();
|
|
85
|
+
const configPath = path.join(workspacePath, ".vscode", "mcp.json");
|
|
86
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
76
87
|
console.log(`✓ VS Code (Claude Code) MCP config updated: ${configPath}`);
|
|
77
|
-
|
|
78
|
-
console.log(` Session: ${session}`);
|
|
88
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
79
89
|
console.log(" Restart VS Code for changes to take effect");
|
|
80
90
|
}
|
|
81
|
-
export async function setupClaudeCodeCli(
|
|
91
|
+
export async function setupClaudeCodeCli() {
|
|
82
92
|
const homeDir = process.env.HOME || "";
|
|
83
93
|
const configPath = path.join(homeDir, ".claude.json");
|
|
84
|
-
const
|
|
94
|
+
const workspacePath = process.cwd();
|
|
85
95
|
if (!fs.existsSync(configPath)) {
|
|
86
96
|
console.log(" Skipping Claude Code CLI (no ~/.claude.json found)");
|
|
87
97
|
return;
|
|
@@ -89,48 +99,47 @@ export async function setupClaudeCodeCli(session) {
|
|
|
89
99
|
try {
|
|
90
100
|
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
91
101
|
config.projects ??= {};
|
|
92
|
-
config.projects[
|
|
93
|
-
config.projects[
|
|
94
|
-
config.projects[
|
|
102
|
+
config.projects[workspacePath] ??= {};
|
|
103
|
+
config.projects[workspacePath].mcpServers ??= {};
|
|
104
|
+
config.projects[workspacePath].mcpServers[SERVER_NAME] = {
|
|
95
105
|
type: "stdio",
|
|
96
106
|
command: "zivis",
|
|
97
|
-
args: ["mcp", "serve"],
|
|
98
|
-
env: session ? { ZIVIS_SESSION: session } : {},
|
|
107
|
+
args: ["mcp", "serve", "--workspace", workspacePath],
|
|
99
108
|
};
|
|
100
109
|
fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
101
110
|
console.log("✓ Claude Code CLI MCP config updated: ~/.claude.json");
|
|
102
|
-
|
|
103
|
-
console.log(` Session: ${session}`);
|
|
111
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
104
112
|
console.log(" Restart Claude Code for changes to take effect");
|
|
105
113
|
}
|
|
106
114
|
catch (err) {
|
|
107
115
|
console.log(` WARNING: Failed to update ~/.claude.json: ${err instanceof Error ? err.message : err}`);
|
|
108
116
|
}
|
|
109
117
|
}
|
|
110
|
-
export async function setupCline(
|
|
118
|
+
export async function setupCline() {
|
|
119
|
+
const workspacePath = process.cwd();
|
|
111
120
|
const homeDir = process.env.HOME || "";
|
|
112
121
|
const configPath = process.platform === "darwin"
|
|
113
122
|
? path.join(homeDir, "Library", "Application Support", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json")
|
|
114
123
|
: path.join(homeDir, ".config", "Code", "User", "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json");
|
|
115
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
124
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
116
125
|
console.log(`✓ Cline MCP config updated: ${configPath}`);
|
|
117
|
-
|
|
118
|
-
console.log(` Session: ${session}`);
|
|
126
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
119
127
|
console.log(" Restart VS Code for changes to take effect");
|
|
120
128
|
}
|
|
121
|
-
export async function setupWindsurf(
|
|
129
|
+
export async function setupWindsurf() {
|
|
130
|
+
const workspacePath = process.cwd();
|
|
122
131
|
const homeDir = process.env.HOME || "";
|
|
123
132
|
const configPath = path.join(homeDir, ".codeium", "windsurf", "mcp_config.json");
|
|
124
|
-
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(
|
|
133
|
+
await updateMcpConfig(configPath, SERVER_NAME, buildServerConfig(workspacePath), "mcpServers");
|
|
125
134
|
console.log(`✓ Windsurf MCP config updated: ${configPath}`);
|
|
126
|
-
|
|
127
|
-
console.log(` Session: ${session}`);
|
|
135
|
+
console.log(` Workspace: ${workspacePath}`);
|
|
128
136
|
console.log(" Restart Windsurf for changes to take effect");
|
|
129
137
|
}
|
|
130
|
-
export function printClaudeCodeManual(
|
|
138
|
+
export function printClaudeCodeManual() {
|
|
139
|
+
const workspacePath = process.cwd();
|
|
131
140
|
const serverConfig = {
|
|
132
141
|
mcpServers: {
|
|
133
|
-
[SERVER_NAME]: buildServerConfig(
|
|
142
|
+
[SERVER_NAME]: buildServerConfig(workspacePath),
|
|
134
143
|
},
|
|
135
144
|
};
|
|
136
145
|
console.log("");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ide-setup.js","sourceRoot":"","sources":["../../src/internal/ide-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,SAAS,iBAAiB,CACxB,
|
|
1
|
+
{"version":3,"file":"ide-setup.js","sourceRoot":"","sources":["../../src/internal/ide-setup.ts"],"names":[],"mappings":"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"}
|