@theihtisham/agent-shadow-brain 3.0.0 → 4.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/README.md +443 -602
- package/dist/brain/adversarial-defense.d.ts +57 -0
- package/dist/brain/adversarial-defense.d.ts.map +1 -0
- package/dist/brain/adversarial-defense.js +303 -0
- package/dist/brain/adversarial-defense.js.map +1 -0
- package/dist/brain/cognitive-load.d.ts +27 -0
- package/dist/brain/cognitive-load.d.ts.map +1 -0
- package/dist/brain/cognitive-load.js +304 -0
- package/dist/brain/cognitive-load.js.map +1 -0
- package/dist/brain/cross-agent-protocol.d.ts +48 -0
- package/dist/brain/cross-agent-protocol.d.ts.map +1 -0
- package/dist/brain/cross-agent-protocol.js +306 -0
- package/dist/brain/cross-agent-protocol.js.map +1 -0
- package/dist/brain/influence-map.d.ts +31 -0
- package/dist/brain/influence-map.d.ts.map +1 -0
- package/dist/brain/influence-map.js +375 -0
- package/dist/brain/influence-map.js.map +1 -0
- package/dist/brain/knowledge-graph.d.ts +56 -0
- package/dist/brain/knowledge-graph.d.ts.map +1 -0
- package/dist/brain/knowledge-graph.js +427 -0
- package/dist/brain/knowledge-graph.js.map +1 -0
- package/dist/brain/learning-engine.d.ts +11 -0
- package/dist/brain/learning-engine.d.ts.map +1 -1
- package/dist/brain/learning-engine.js +44 -1
- package/dist/brain/learning-engine.js.map +1 -1
- package/dist/brain/neural-mesh.d.ts +9 -1
- package/dist/brain/neural-mesh.d.ts.map +1 -1
- package/dist/brain/neural-mesh.js +75 -16
- package/dist/brain/neural-mesh.js.map +1 -1
- package/dist/brain/orchestrator.d.ts +24 -2
- package/dist/brain/orchestrator.d.ts.map +1 -1
- package/dist/brain/orchestrator.js +208 -4
- package/dist/brain/orchestrator.js.map +1 -1
- package/dist/brain/pattern-memory.d.ts +8 -3
- package/dist/brain/pattern-memory.d.ts.map +1 -1
- package/dist/brain/pattern-memory.js +71 -3
- package/dist/brain/pattern-memory.js.map +1 -1
- package/dist/brain/predictive-engine.d.ts +45 -0
- package/dist/brain/predictive-engine.d.ts.map +1 -0
- package/dist/brain/predictive-engine.js +238 -0
- package/dist/brain/predictive-engine.js.map +1 -0
- package/dist/brain/security-audit.d.ts +20 -0
- package/dist/brain/security-audit.d.ts.map +1 -0
- package/dist/brain/security-audit.js +340 -0
- package/dist/brain/security-audit.js.map +1 -0
- package/dist/brain/self-evolution.d.ts +53 -0
- package/dist/brain/self-evolution.d.ts.map +1 -0
- package/dist/brain/self-evolution.js +278 -0
- package/dist/brain/self-evolution.js.map +1 -0
- package/dist/brain/sssp-router.d.ts +58 -0
- package/dist/brain/sssp-router.d.ts.map +1 -0
- package/dist/brain/sssp-router.js +295 -0
- package/dist/brain/sssp-router.js.map +1 -0
- package/dist/brain/swarm-intelligence.d.ts +48 -0
- package/dist/brain/swarm-intelligence.d.ts.map +1 -0
- package/dist/brain/swarm-intelligence.js +215 -0
- package/dist/brain/swarm-intelligence.js.map +1 -0
- package/dist/brain/turbo-memory.d.ts +56 -0
- package/dist/brain/turbo-memory.d.ts.map +1 -0
- package/dist/brain/turbo-memory.js +388 -0
- package/dist/brain/turbo-memory.js.map +1 -0
- package/dist/cli.js +339 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +272 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/dashboard.d.ts.map +1 -1
- package/dist/ui/dashboard.js +20 -3
- package/dist/ui/dashboard.js.map +1 -1
- package/package.json +16 -7
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
// src/brain/cross-agent-protocol.ts — Cross-Agent Intelligence Protocol (CAIP)
|
|
2
|
+
// Enables Kilo Code, Cline, OpenCode, Claude Code, Roo Code, Aider, Cursor to
|
|
3
|
+
// communicate, share insights, and boost each other's intelligence.
|
|
4
|
+
// v4.0.0 — Hyper-Intelligence Edition
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as crypto from 'crypto';
|
|
8
|
+
import { WebSocket, WebSocketServer } from 'ws';
|
|
9
|
+
const CAIP_PORT = 7344;
|
|
10
|
+
const CAIP_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '~', '.shadow-brain-caip');
|
|
11
|
+
const MAX_PENDING = 1000;
|
|
12
|
+
const MESSAGE_TTL_MS = 300000; // 5 minutes
|
|
13
|
+
/**
|
|
14
|
+
* Cross-Agent Intelligence Protocol — the hub that makes all coding agents talk to each other.
|
|
15
|
+
*
|
|
16
|
+
* Transport:
|
|
17
|
+
* Primary: WebSocket on port 7344 (CAIP bus)
|
|
18
|
+
* Fallback: Shared filesystem at ~/.shadow-brain-caip/ (polling every 2s)
|
|
19
|
+
*
|
|
20
|
+
* Protocol:
|
|
21
|
+
* 1. Handshake — each agent sends identity, version, capabilities
|
|
22
|
+
* 2. Channels — broadcast (all), pair (two agents), team (subset)
|
|
23
|
+
* 3. Boost Packet — high-value insight shared to all connected agents
|
|
24
|
+
* 4. Deduplication — message hash ring prevents infinite loops
|
|
25
|
+
*/
|
|
26
|
+
export class CrossAgentProtocol {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.wss = null;
|
|
29
|
+
this.clients = new Map();
|
|
30
|
+
this.messageHashes = new Set();
|
|
31
|
+
this.boostHandlers = new Map();
|
|
32
|
+
this.filePollTimer = null;
|
|
33
|
+
this.running = false;
|
|
34
|
+
this.bus = {
|
|
35
|
+
channels: [],
|
|
36
|
+
pendingMessages: [],
|
|
37
|
+
connectedAgents: new Map(),
|
|
38
|
+
totalExchanged: 0,
|
|
39
|
+
uptime: 0,
|
|
40
|
+
};
|
|
41
|
+
// Ensure broadcast channel exists
|
|
42
|
+
this.bus.channels.push({
|
|
43
|
+
id: 'broadcast',
|
|
44
|
+
participants: [],
|
|
45
|
+
created: new Date(),
|
|
46
|
+
messageCount: 0,
|
|
47
|
+
lastActivity: new Date(),
|
|
48
|
+
type: 'broadcast',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// ── Connection Management ───────────────────────────────────────────────────
|
|
52
|
+
/** Start the CAIP WebSocket server + filesystem fallback */
|
|
53
|
+
async start() {
|
|
54
|
+
if (this.running)
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
// Start WebSocket server
|
|
58
|
+
this.wss = new WebSocketServer({ port: CAIP_PORT });
|
|
59
|
+
this.running = true;
|
|
60
|
+
this.wss.on('connection', (ws, req) => {
|
|
61
|
+
ws.on('message', (data) => {
|
|
62
|
+
try {
|
|
63
|
+
const message = JSON.parse(data.toString());
|
|
64
|
+
this.handleMessage(message, ws);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Invalid message format — ignore
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
ws.on('close', () => {
|
|
71
|
+
// Remove disconnected agent
|
|
72
|
+
for (const [agent, socket] of this.clients) {
|
|
73
|
+
if (socket === ws) {
|
|
74
|
+
this.clients.delete(agent);
|
|
75
|
+
this.bus.connectedAgents.delete(agent);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
// Start filesystem fallback
|
|
82
|
+
this.startFilePolling();
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// WebSocket failed — rely on filesystem only
|
|
86
|
+
this.running = true;
|
|
87
|
+
this.startFilePolling();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** Stop the CAIP server */
|
|
91
|
+
async stop() {
|
|
92
|
+
this.running = false;
|
|
93
|
+
if (this.wss) {
|
|
94
|
+
this.wss.close();
|
|
95
|
+
this.wss = null;
|
|
96
|
+
}
|
|
97
|
+
if (this.filePollTimer) {
|
|
98
|
+
clearInterval(this.filePollTimer);
|
|
99
|
+
this.filePollTimer = null;
|
|
100
|
+
}
|
|
101
|
+
this.clients.clear();
|
|
102
|
+
}
|
|
103
|
+
/** Register an agent via handshake */
|
|
104
|
+
async connect(handshake) {
|
|
105
|
+
this.bus.connectedAgents.set(handshake.agentTool, handshake);
|
|
106
|
+
// Add to broadcast channel
|
|
107
|
+
const broadcastChannel = this.bus.channels[0];
|
|
108
|
+
if (broadcastChannel && !broadcastChannel.participants.includes(handshake.agentTool)) {
|
|
109
|
+
broadcastChannel.participants.push(handshake.agentTool);
|
|
110
|
+
}
|
|
111
|
+
// Create inbox directory for filesystem fallback
|
|
112
|
+
const inboxDir = path.join(CAIP_DIR, 'in', handshake.agentTool);
|
|
113
|
+
if (!fs.existsSync(inboxDir)) {
|
|
114
|
+
fs.mkdirSync(inboxDir, { recursive: true });
|
|
115
|
+
}
|
|
116
|
+
// Create outbox directory
|
|
117
|
+
const outboxDir = path.join(CAIP_DIR, 'out', handshake.agentTool);
|
|
118
|
+
if (!fs.existsSync(outboxDir)) {
|
|
119
|
+
fs.mkdirSync(outboxDir, { recursive: true });
|
|
120
|
+
}
|
|
121
|
+
const channel = {
|
|
122
|
+
id: `${handshake.agentTool}-connected`,
|
|
123
|
+
participants: [handshake.agentTool],
|
|
124
|
+
created: new Date(),
|
|
125
|
+
messageCount: 0,
|
|
126
|
+
lastActivity: new Date(),
|
|
127
|
+
type: 'pair',
|
|
128
|
+
};
|
|
129
|
+
return channel;
|
|
130
|
+
}
|
|
131
|
+
// ── Message Delivery ────────────────────────────────────────────────────────
|
|
132
|
+
/** Broadcast a message to all connected agents */
|
|
133
|
+
async broadcast(from, payload, priority = 'medium') {
|
|
134
|
+
const message = {
|
|
135
|
+
id: crypto.randomUUID(),
|
|
136
|
+
from,
|
|
137
|
+
to: 'broadcast',
|
|
138
|
+
type: 'insight',
|
|
139
|
+
payload,
|
|
140
|
+
timestamp: new Date(),
|
|
141
|
+
priority,
|
|
142
|
+
};
|
|
143
|
+
this.deliverMessage(message);
|
|
144
|
+
}
|
|
145
|
+
/** Send a boost packet — high-value insights shared across agents */
|
|
146
|
+
async sendBoostPacket(packet) {
|
|
147
|
+
const message = {
|
|
148
|
+
id: crypto.randomUUID(),
|
|
149
|
+
from: packet.fromAgent,
|
|
150
|
+
to: 'broadcast',
|
|
151
|
+
type: 'boost',
|
|
152
|
+
payload: packet,
|
|
153
|
+
timestamp: new Date(),
|
|
154
|
+
priority: 'high',
|
|
155
|
+
};
|
|
156
|
+
this.deliverMessage(message);
|
|
157
|
+
// Notify boost handlers
|
|
158
|
+
const handlers = this.boostHandlers.get(packet.fromAgent) || [];
|
|
159
|
+
for (const handler of handlers) {
|
|
160
|
+
try {
|
|
161
|
+
handler(packet);
|
|
162
|
+
}
|
|
163
|
+
catch { /* handler error */ }
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Send targeted message to specific agent */
|
|
167
|
+
async sendDirect(from, to, payload) {
|
|
168
|
+
const message = {
|
|
169
|
+
id: crypto.randomUUID(),
|
|
170
|
+
from,
|
|
171
|
+
to,
|
|
172
|
+
type: 'insight',
|
|
173
|
+
payload,
|
|
174
|
+
timestamp: new Date(),
|
|
175
|
+
priority: 'medium',
|
|
176
|
+
};
|
|
177
|
+
this.deliverMessage(message);
|
|
178
|
+
}
|
|
179
|
+
/** Subscribe to boost packets from a specific agent */
|
|
180
|
+
subscribeToBoosts(agent, handler) {
|
|
181
|
+
if (!this.boostHandlers.has(agent)) {
|
|
182
|
+
this.boostHandlers.set(agent, []);
|
|
183
|
+
}
|
|
184
|
+
this.boostHandlers.get(agent).push(handler);
|
|
185
|
+
}
|
|
186
|
+
/** Get all connected agents */
|
|
187
|
+
getConnectedAgents() {
|
|
188
|
+
return Array.from(this.bus.connectedAgents.keys());
|
|
189
|
+
}
|
|
190
|
+
/** Get bus statistics */
|
|
191
|
+
getBusStats() {
|
|
192
|
+
return { ...this.bus, connectedAgents: new Map(this.bus.connectedAgents) };
|
|
193
|
+
}
|
|
194
|
+
// ── Internal ────────────────────────────────────────────────────────────────
|
|
195
|
+
handleMessage(message, ws) {
|
|
196
|
+
// Deduplication
|
|
197
|
+
const hash = this.hashMessage(message);
|
|
198
|
+
if (this.messageHashes.has(hash))
|
|
199
|
+
return;
|
|
200
|
+
this.messageHashes.add(hash);
|
|
201
|
+
// Prune old hashes
|
|
202
|
+
if (this.messageHashes.size > 10000) {
|
|
203
|
+
const entries = Array.from(this.messageHashes);
|
|
204
|
+
this.messageHashes = new Set(entries.slice(-5000));
|
|
205
|
+
}
|
|
206
|
+
// Handle handshake
|
|
207
|
+
if (message.type === 'handshake' && ws) {
|
|
208
|
+
const handshake = message.payload;
|
|
209
|
+
this.clients.set(handshake.agentTool, ws);
|
|
210
|
+
this.bus.connectedAgents.set(handshake.agentTool, handshake);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
// Deliver
|
|
214
|
+
this.deliverMessage(message);
|
|
215
|
+
}
|
|
216
|
+
deliverMessage(message) {
|
|
217
|
+
this.bus.totalExchanged++;
|
|
218
|
+
this.bus.pendingMessages.push(message);
|
|
219
|
+
// Cap pending
|
|
220
|
+
if (this.bus.pendingMessages.length > MAX_PENDING) {
|
|
221
|
+
this.bus.pendingMessages = this.bus.pendingMessages.slice(-MAX_PENDING / 2);
|
|
222
|
+
}
|
|
223
|
+
// WebSocket delivery
|
|
224
|
+
if (message.to === 'broadcast') {
|
|
225
|
+
for (const [agent, ws] of this.clients) {
|
|
226
|
+
if (agent !== message.from && ws.readyState === WebSocket.OPEN) {
|
|
227
|
+
try {
|
|
228
|
+
ws.send(JSON.stringify(message));
|
|
229
|
+
}
|
|
230
|
+
catch { /* send failed */ }
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
const targetWs = this.clients.get(message.to);
|
|
236
|
+
if (targetWs?.readyState === WebSocket.OPEN) {
|
|
237
|
+
try {
|
|
238
|
+
targetWs.send(JSON.stringify(message));
|
|
239
|
+
}
|
|
240
|
+
catch { /* send failed */ }
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Filesystem fallback delivery
|
|
244
|
+
this.writeFileMessage(message);
|
|
245
|
+
}
|
|
246
|
+
writeFileMessage(message) {
|
|
247
|
+
try {
|
|
248
|
+
const targets = message.to === 'broadcast'
|
|
249
|
+
? Array.from(this.bus.connectedAgents.keys()).filter(a => a !== message.from)
|
|
250
|
+
: [message.to];
|
|
251
|
+
for (const target of targets) {
|
|
252
|
+
const inboxDir = path.join(CAIP_DIR, 'in', target);
|
|
253
|
+
if (!fs.existsSync(inboxDir)) {
|
|
254
|
+
fs.mkdirSync(inboxDir, { recursive: true });
|
|
255
|
+
}
|
|
256
|
+
const filePath = path.join(inboxDir, `${Date.now()}-${message.id}.json`);
|
|
257
|
+
fs.writeFileSync(filePath, JSON.stringify(message));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// Filesystem delivery failed — non-critical
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
startFilePolling() {
|
|
265
|
+
// Poll outbox directories for messages from agents
|
|
266
|
+
this.filePollTimer = setInterval(() => {
|
|
267
|
+
try {
|
|
268
|
+
const outDir = path.join(CAIP_DIR, 'out');
|
|
269
|
+
if (!fs.existsSync(outDir))
|
|
270
|
+
return;
|
|
271
|
+
const agentDirs = fs.readdirSync(outDir);
|
|
272
|
+
for (const agent of agentDirs) {
|
|
273
|
+
const agentOutDir = path.join(outDir, agent);
|
|
274
|
+
if (!fs.statSync(agentOutDir).isDirectory())
|
|
275
|
+
continue;
|
|
276
|
+
const files = fs.readdirSync(agentOutDir).sort();
|
|
277
|
+
for (const file of files) {
|
|
278
|
+
if (!file.endsWith('.json'))
|
|
279
|
+
continue;
|
|
280
|
+
const filePath = path.join(agentOutDir, file);
|
|
281
|
+
try {
|
|
282
|
+
const data = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
|
|
283
|
+
this.handleMessage(data);
|
|
284
|
+
fs.unlinkSync(filePath); // Processed — remove
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Corrupt file — remove
|
|
288
|
+
try {
|
|
289
|
+
fs.unlinkSync(filePath);
|
|
290
|
+
}
|
|
291
|
+
catch { /* ignore */ }
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
// Polling error — non-critical
|
|
298
|
+
}
|
|
299
|
+
}, 2000);
|
|
300
|
+
}
|
|
301
|
+
hashMessage(message) {
|
|
302
|
+
const content = `${message.from}:${message.to}:${message.type}:${JSON.stringify(message.payload)}`;
|
|
303
|
+
return crypto.createHash('sha256').update(content).digest('hex').slice(0, 16);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=cross-agent-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cross-agent-protocol.js","sourceRoot":"","sources":["../../src/brain/cross-agent-protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BrainInsight } from '../types.js';
|
|
2
|
+
export interface InfluenceResult {
|
|
3
|
+
changedFiles: string[];
|
|
4
|
+
affectedFiles: Array<{
|
|
5
|
+
file: string;
|
|
6
|
+
score: number;
|
|
7
|
+
reasons: string[];
|
|
8
|
+
}>;
|
|
9
|
+
totalReachable: number;
|
|
10
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
11
|
+
}
|
|
12
|
+
export declare class InfluenceMapper {
|
|
13
|
+
private projectDir;
|
|
14
|
+
private graph;
|
|
15
|
+
constructor(projectDir: string);
|
|
16
|
+
analyzeProject(maxFiles?: number): Promise<BrainInsight[]>;
|
|
17
|
+
analyzeInfluence(changedFiles: string[]): InfluenceResult;
|
|
18
|
+
private buildGraph;
|
|
19
|
+
private extractImports;
|
|
20
|
+
private resolveImport;
|
|
21
|
+
private resolvePythonImport;
|
|
22
|
+
private getReverseDependencies;
|
|
23
|
+
private getTransitiveReverseDependencies;
|
|
24
|
+
private inferTestFile;
|
|
25
|
+
private findTestCorrelation;
|
|
26
|
+
private findSourceForTest;
|
|
27
|
+
private calculateInfluenceScores;
|
|
28
|
+
private toRelative;
|
|
29
|
+
private collectFiles;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=influence-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"influence-map.d.ts","sourceRoot":"","sources":["../../src/brain/influence-map.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,KAAK,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAcD,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAoC;gBAErC,UAAU,EAAE,MAAM;IAIxB,cAAc,CAAC,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAkErE,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,eAAe;IA0EzD,OAAO,CAAC,UAAU;IAgClB,OAAO,CAAC,cAAc;IAsDtB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,gCAAgC;IA0BxC,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,YAAY;CAqBrB"}
|