memory-journal-mcp 3.0.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/.dockerignore +88 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +76 -0
- package/.github/ISSUE_TEMPLATE/config.yml +11 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +89 -0
- package/.github/ISSUE_TEMPLATE/question.md +63 -0
- package/.github/dependabot.yml +110 -0
- package/.github/pull_request_template.md +110 -0
- package/.github/workflows/DOCKER_DEPLOYMENT_SETUP.md +346 -0
- package/.github/workflows/codeql.yml +45 -0
- package/.github/workflows/dependabot-auto-merge.yml +42 -0
- package/.github/workflows/docker-publish.yml +277 -0
- package/.github/workflows/lint-and-test.yml +58 -0
- package/.github/workflows/publish-npm.yml +75 -0
- package/.github/workflows/secrets-scanning.yml +32 -0
- package/.github/workflows/security-update.yml +99 -0
- package/.memory-journal-team.db +0 -0
- package/.trivyignore +18 -0
- package/CHANGELOG.md +19 -0
- package/CODE_OF_CONDUCT.md +128 -0
- package/CONTRIBUTING.md +209 -0
- package/DOCKER_README.md +377 -0
- package/Dockerfile +64 -0
- package/LICENSE +21 -0
- package/README.md +461 -0
- package/SECURITY.md +200 -0
- package/VERSION +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +42 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +8 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +26 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/database/SqliteAdapter.d.ts +198 -0
- package/dist/database/SqliteAdapter.d.ts.map +1 -0
- package/dist/database/SqliteAdapter.js +736 -0
- package/dist/database/SqliteAdapter.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +63 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +242 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/github/GitHubIntegration.d.ts +91 -0
- package/dist/github/GitHubIntegration.d.ts.map +1 -0
- package/dist/github/GitHubIntegration.js +317 -0
- package/dist/github/GitHubIntegration.js.map +1 -0
- package/dist/handlers/prompts/index.d.ts +28 -0
- package/dist/handlers/prompts/index.d.ts.map +1 -0
- package/dist/handlers/prompts/index.js +366 -0
- package/dist/handlers/prompts/index.js.map +1 -0
- package/dist/handlers/resources/index.d.ts +27 -0
- package/dist/handlers/resources/index.d.ts.map +1 -0
- package/dist/handlers/resources/index.js +453 -0
- package/dist/handlers/resources/index.js.map +1 -0
- package/dist/handlers/tools/index.d.ts +26 -0
- package/dist/handlers/tools/index.d.ts.map +1 -0
- package/dist/handlers/tools/index.js +982 -0
- package/dist/handlers/tools/index.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/server/McpServer.d.ts +18 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +171 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/types/index.d.ts +300 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/McpLogger.d.ts +61 -0
- package/dist/utils/McpLogger.d.ts.map +1 -0
- package/dist/utils/McpLogger.js +113 -0
- package/dist/utils/McpLogger.js.map +1 -0
- package/dist/utils/logger.d.ts +30 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +70 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/vector/VectorSearchManager.d.ts +63 -0
- package/dist/vector/VectorSearchManager.d.ts.map +1 -0
- package/dist/vector/VectorSearchManager.js +235 -0
- package/dist/vector/VectorSearchManager.js.map +1 -0
- package/docker-compose.yml +37 -0
- package/eslint.config.js +86 -0
- package/mcp-config-example.json +21 -0
- package/package.json +71 -0
- package/releases/release-notes-v2.2.0.md +165 -0
- package/releases/release-notes.md +214 -0
- package/releases/v3.0.0.md +236 -0
- package/server.json +42 -0
- package/src/cli.ts +52 -0
- package/src/constants/ServerInstructions.ts +25 -0
- package/src/database/SqliteAdapter.ts +952 -0
- package/src/filtering/ToolFilter.ts +271 -0
- package/src/github/GitHubIntegration.ts +409 -0
- package/src/handlers/prompts/index.ts +420 -0
- package/src/handlers/resources/index.ts +529 -0
- package/src/handlers/tools/index.ts +1081 -0
- package/src/index.ts +53 -0
- package/src/server/McpServer.ts +230 -0
- package/src/types/index.ts +435 -0
- package/src/types/sql.js.d.ts +34 -0
- package/src/utils/McpLogger.ts +155 -0
- package/src/utils/logger.ts +98 -0
- package/src/vector/VectorSearchManager.ts +277 -0
- package/tools.json +300 -0
- package/tsconfig.json +51 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Journal MCP Server - CLI Entry Point
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { createServer } from './server/McpServer.js';
|
|
6
|
+
import { logger } from './utils/logger.js';
|
|
7
|
+
const program = new Command();
|
|
8
|
+
program
|
|
9
|
+
.name('memory-journal-mcp')
|
|
10
|
+
.description('Project context management for AI-assisted development')
|
|
11
|
+
.version('3.0.0-alpha.1')
|
|
12
|
+
.option('--transport <type>', 'Transport type: stdio or http', 'stdio')
|
|
13
|
+
.option('--port <number>', 'HTTP port (for http transport)', '3000')
|
|
14
|
+
.option('--db <path>', 'Database path', './memory_journal.db')
|
|
15
|
+
.option('--tool-filter <filter>', 'Tool filter string (e.g., "starter", "core,search")')
|
|
16
|
+
.option('--log-level <level>', 'Log level: debug, info, warning, error', 'info')
|
|
17
|
+
.action(async (options) => {
|
|
18
|
+
// Set log level
|
|
19
|
+
logger.setLevel(options.logLevel);
|
|
20
|
+
logger.info('Starting Memory Journal MCP Server', {
|
|
21
|
+
module: 'CLI',
|
|
22
|
+
transport: options.transport,
|
|
23
|
+
db: options.db,
|
|
24
|
+
});
|
|
25
|
+
try {
|
|
26
|
+
await createServer({
|
|
27
|
+
transport: options.transport,
|
|
28
|
+
port: parseInt(options.port, 10),
|
|
29
|
+
dbPath: options.db,
|
|
30
|
+
toolFilter: options.toolFilter,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.error('Failed to start server', {
|
|
35
|
+
module: 'CLI',
|
|
36
|
+
error: error instanceof Error ? error.message : String(error),
|
|
37
|
+
});
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
program.parse();
|
|
42
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACF,IAAI,CAAC,oBAAoB,CAAC;KAC1B,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,eAAe,CAAC;KACxB,MAAM,CAAC,oBAAoB,EAAE,+BAA+B,EAAE,OAAO,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,MAAM,CAAC;KACnE,MAAM,CAAC,aAAa,EAAE,eAAe,EAAE,qBAAqB,CAAC;KAC7D,MAAM,CAAC,wBAAwB,EAAE,qDAAqD,CAAC;KACvF,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,EAAE,MAAM,CAAC;KAC/E,MAAM,CAAC,KAAK,EAAE,OAMd,EAAE,EAAE;IACD,gBAAgB;IAChB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAkD,CAAC,CAAC;IAE5E,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;QAC9C,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;KACjB,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,YAAY,CAAC;YACf,SAAS,EAAE,OAAO,CAAC,SAA6B;YAChD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,EAAE;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;SACjC,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACnC,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAChE,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server instructions for Memory Journal MCP.
|
|
3
|
+
*
|
|
4
|
+
* These instructions are automatically sent to MCP clients during initialization,
|
|
5
|
+
* providing guidance for AI agents on tool usage.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SERVER_INSTRUCTIONS = "# memory-journal-mcp\n\nMemory Journal MCP Server - Persistent project context management for AI-assisted development.\n\n## GitHub Tools\n\nGitHub tools auto-detect repository from the configured GITHUB_REPO_PATH.\n- If owner/repo are detected, they appear in `detectedOwner`/`detectedRepo` in responses\n- If not detected (null), specify `owner` and `repo` parameters explicitly\n\n## Tool Groups\n\n| Group | Tools |\n|-------|-------|\n| journal | create_entry, create_entry_minimal, update_entry, delete_entry |\n| search | search_entries, semantic_search, search_by_date_range |\n| github | get_github_issues, get_github_prs, get_github_issue, get_github_pr, get_github_context |\n| admin | backup_journal, list_backups, restore_backup, rebuild_vector_index |\n";
|
|
8
|
+
//# sourceMappingURL=ServerInstructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerInstructions.d.ts","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,owBAkB/B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server instructions for Memory Journal MCP.
|
|
3
|
+
*
|
|
4
|
+
* These instructions are automatically sent to MCP clients during initialization,
|
|
5
|
+
* providing guidance for AI agents on tool usage.
|
|
6
|
+
*/
|
|
7
|
+
export const SERVER_INSTRUCTIONS = `# memory-journal-mcp
|
|
8
|
+
|
|
9
|
+
Memory Journal MCP Server - Persistent project context management for AI-assisted development.
|
|
10
|
+
|
|
11
|
+
## GitHub Tools
|
|
12
|
+
|
|
13
|
+
GitHub tools auto-detect repository from the configured GITHUB_REPO_PATH.
|
|
14
|
+
- If owner/repo are detected, they appear in \`detectedOwner\`/\`detectedRepo\` in responses
|
|
15
|
+
- If not detected (null), specify \`owner\` and \`repo\` parameters explicitly
|
|
16
|
+
|
|
17
|
+
## Tool Groups
|
|
18
|
+
|
|
19
|
+
| Group | Tools |
|
|
20
|
+
|-------|-------|
|
|
21
|
+
| journal | create_entry, create_entry_minimal, update_entry, delete_entry |
|
|
22
|
+
| search | search_entries, semantic_search, search_by_date_range |
|
|
23
|
+
| github | get_github_issues, get_github_prs, get_github_issue, get_github_pr, get_github_context |
|
|
24
|
+
| admin | backup_journal, list_backups, restore_backup, rebuild_vector_index |
|
|
25
|
+
`;
|
|
26
|
+
//# sourceMappingURL=ServerInstructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerInstructions.js","sourceRoot":"","sources":["../../src/constants/ServerInstructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;CAkBlC,CAAC"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Journal MCP Server - SQLite Database Adapter
|
|
3
|
+
*
|
|
4
|
+
* Manages SQLite database with FTS5 full-text search using sql.js.
|
|
5
|
+
* Note: sql.js is pure JavaScript, no native compilation required.
|
|
6
|
+
*/
|
|
7
|
+
import { type Database } from 'sql.js';
|
|
8
|
+
import type { JournalEntry, Tag, Relationship, EntryType, SignificanceType, RelationshipType } from '../types/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Input for creating a new entry
|
|
11
|
+
*/
|
|
12
|
+
export interface CreateEntryInput {
|
|
13
|
+
content: string;
|
|
14
|
+
entryType?: EntryType;
|
|
15
|
+
tags?: string[];
|
|
16
|
+
isPersonal?: boolean;
|
|
17
|
+
significanceType?: SignificanceType;
|
|
18
|
+
autoContext?: string;
|
|
19
|
+
projectNumber?: number;
|
|
20
|
+
projectOwner?: string;
|
|
21
|
+
issueNumber?: number;
|
|
22
|
+
issueUrl?: string;
|
|
23
|
+
prNumber?: number;
|
|
24
|
+
prUrl?: string;
|
|
25
|
+
prStatus?: 'draft' | 'open' | 'merged' | 'closed';
|
|
26
|
+
workflowRunId?: number;
|
|
27
|
+
workflowName?: string;
|
|
28
|
+
workflowStatus?: 'queued' | 'in_progress' | 'completed';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* SQLite Database Adapter for Memory Journal using sql.js
|
|
32
|
+
*/
|
|
33
|
+
export declare class SqliteAdapter {
|
|
34
|
+
private db;
|
|
35
|
+
private readonly dbPath;
|
|
36
|
+
private initialized;
|
|
37
|
+
constructor(dbPath: string);
|
|
38
|
+
/**
|
|
39
|
+
* Initialize the database (must be called before using)
|
|
40
|
+
*/
|
|
41
|
+
initialize(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Save database to disk
|
|
44
|
+
*/
|
|
45
|
+
private save;
|
|
46
|
+
/**
|
|
47
|
+
* Close database connection
|
|
48
|
+
*/
|
|
49
|
+
close(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Ensure database is initialized
|
|
52
|
+
*/
|
|
53
|
+
private ensureDb;
|
|
54
|
+
/**
|
|
55
|
+
* Create a new journal entry
|
|
56
|
+
*/
|
|
57
|
+
createEntry(input: CreateEntryInput): JournalEntry;
|
|
58
|
+
/**
|
|
59
|
+
* Get entry by ID
|
|
60
|
+
*/
|
|
61
|
+
getEntryById(id: number): JournalEntry | null;
|
|
62
|
+
/**
|
|
63
|
+
* Get recent entries
|
|
64
|
+
*/
|
|
65
|
+
getRecentEntries(limit?: number, isPersonal?: boolean): JournalEntry[];
|
|
66
|
+
/**
|
|
67
|
+
* Update an entry
|
|
68
|
+
*/
|
|
69
|
+
updateEntry(id: number, updates: {
|
|
70
|
+
content?: string;
|
|
71
|
+
entryType?: EntryType;
|
|
72
|
+
tags?: string[];
|
|
73
|
+
isPersonal?: boolean;
|
|
74
|
+
}): JournalEntry | null;
|
|
75
|
+
/**
|
|
76
|
+
* Soft delete an entry
|
|
77
|
+
*/
|
|
78
|
+
deleteEntry(id: number, permanent?: boolean): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Full-text search entries (using LIKE for sql.js - FTS5 not supported)
|
|
81
|
+
*/
|
|
82
|
+
searchEntries(query: string, options?: {
|
|
83
|
+
limit?: number;
|
|
84
|
+
isPersonal?: boolean;
|
|
85
|
+
projectNumber?: number;
|
|
86
|
+
issueNumber?: number;
|
|
87
|
+
prNumber?: number;
|
|
88
|
+
}): JournalEntry[];
|
|
89
|
+
/**
|
|
90
|
+
* Search by date range
|
|
91
|
+
*/
|
|
92
|
+
searchByDateRange(startDate: string, endDate: string, options?: {
|
|
93
|
+
entryType?: EntryType;
|
|
94
|
+
tags?: string[];
|
|
95
|
+
isPersonal?: boolean;
|
|
96
|
+
projectNumber?: number;
|
|
97
|
+
}): JournalEntry[];
|
|
98
|
+
/**
|
|
99
|
+
* Get or create tags and link to entry
|
|
100
|
+
*/
|
|
101
|
+
private linkTagsToEntry;
|
|
102
|
+
/**
|
|
103
|
+
* Get tags for an entry
|
|
104
|
+
*/
|
|
105
|
+
getTagsForEntry(entryId: number): string[];
|
|
106
|
+
/**
|
|
107
|
+
* List all tags
|
|
108
|
+
*/
|
|
109
|
+
listTags(): Tag[];
|
|
110
|
+
/**
|
|
111
|
+
* Link two entries
|
|
112
|
+
*/
|
|
113
|
+
linkEntries(fromEntryId: number, toEntryId: number, relationshipType: RelationshipType, description?: string): Relationship;
|
|
114
|
+
/**
|
|
115
|
+
* Get relationships for an entry
|
|
116
|
+
*/
|
|
117
|
+
getRelationships(entryId: number): Relationship[];
|
|
118
|
+
/**
|
|
119
|
+
* Get entry statistics
|
|
120
|
+
*/
|
|
121
|
+
getStatistics(groupBy?: 'day' | 'week' | 'month'): {
|
|
122
|
+
totalEntries: number;
|
|
123
|
+
entriesByType: Record<string, number>;
|
|
124
|
+
entriesByPeriod: {
|
|
125
|
+
period: string;
|
|
126
|
+
count: number;
|
|
127
|
+
}[];
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Get the backups directory path (relative to database location)
|
|
131
|
+
*/
|
|
132
|
+
getBackupsDir(): string;
|
|
133
|
+
/**
|
|
134
|
+
* Export database to a backup file
|
|
135
|
+
* @param backupName Optional custom name (default: timestamp-based)
|
|
136
|
+
* @returns Backup file info
|
|
137
|
+
*/
|
|
138
|
+
exportToFile(backupName?: string): {
|
|
139
|
+
filename: string;
|
|
140
|
+
path: string;
|
|
141
|
+
sizeBytes: number;
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* List all available backup files
|
|
145
|
+
* @returns Array of backup file information
|
|
146
|
+
*/
|
|
147
|
+
listBackups(): {
|
|
148
|
+
filename: string;
|
|
149
|
+
path: string;
|
|
150
|
+
sizeBytes: number;
|
|
151
|
+
createdAt: string;
|
|
152
|
+
}[];
|
|
153
|
+
/**
|
|
154
|
+
* Restore database from a backup file
|
|
155
|
+
* @param filename Backup filename to restore from
|
|
156
|
+
* @returns Statistics about the restore operation
|
|
157
|
+
*/
|
|
158
|
+
restoreFromFile(filename: string): Promise<{
|
|
159
|
+
restoredFrom: string;
|
|
160
|
+
previousEntryCount: number;
|
|
161
|
+
newEntryCount: number;
|
|
162
|
+
}>;
|
|
163
|
+
/**
|
|
164
|
+
* Get database health status for diagnostics
|
|
165
|
+
*/
|
|
166
|
+
getHealthStatus(): {
|
|
167
|
+
database: {
|
|
168
|
+
path: string;
|
|
169
|
+
sizeBytes: number;
|
|
170
|
+
entryCount: number;
|
|
171
|
+
deletedEntryCount: number;
|
|
172
|
+
relationshipCount: number;
|
|
173
|
+
tagCount: number;
|
|
174
|
+
};
|
|
175
|
+
backups: {
|
|
176
|
+
directory: string;
|
|
177
|
+
count: number;
|
|
178
|
+
lastBackup: {
|
|
179
|
+
filename: string;
|
|
180
|
+
createdAt: string;
|
|
181
|
+
sizeBytes: number;
|
|
182
|
+
} | null;
|
|
183
|
+
};
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* Convert columns and values to object
|
|
187
|
+
*/
|
|
188
|
+
private rowToObject;
|
|
189
|
+
/**
|
|
190
|
+
* Convert database row to JournalEntry
|
|
191
|
+
*/
|
|
192
|
+
private rowToEntry;
|
|
193
|
+
/**
|
|
194
|
+
* Get raw database for advanced operations
|
|
195
|
+
*/
|
|
196
|
+
getRawDb(): Database;
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=SqliteAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqliteAdapter.d.ts","sourceRoot":"","sources":["../../src/database/SqliteAdapter.ts"],"names":[],"mappings":"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"}
|