agentlaunch-cli 1.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 +359 -0
- package/dist/__tests__/config.test.d.ts +20 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +155 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +56 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +22 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +493 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deploy.d.ts +18 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +220 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/list.d.ts +10 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +131 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/scaffold.d.ts +13 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +633 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +116 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tokenize.d.ts +16 -0
- package/dist/commands/tokenize.d.ts.map +1 -0
- package/dist/commands/tokenize.js +139 -0
- package/dist/commands/tokenize.js.map +1 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +68 -0
- package/dist/config.js.map +1 -0
- package/dist/http.d.ts +20 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +69 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-003: deploy command
|
|
3
|
+
*
|
|
4
|
+
* agentlaunch deploy [--file agent.py] [--name "My Agent"]
|
|
5
|
+
*
|
|
6
|
+
* Deploys an agent.py file to Agentverse:
|
|
7
|
+
* 1. Creates agent record
|
|
8
|
+
* 2. Uploads code (double-encoded as Agentverse expects)
|
|
9
|
+
* 3. Sets AGENTVERSE_API_KEY and AGENTLAUNCH_API_KEY secrets
|
|
10
|
+
* 4. Starts the agent
|
|
11
|
+
* 5. Polls until compiled (up to 60 s)
|
|
12
|
+
*
|
|
13
|
+
* Reads the API key from ~/.agentlaunch/config.json (set with `config set-key`).
|
|
14
|
+
* The same key is used for both the Agentverse auth header and the two secrets.
|
|
15
|
+
*/
|
|
16
|
+
import fs from "node:fs";
|
|
17
|
+
import path from "node:path";
|
|
18
|
+
import { agentverseRequest } from "../http.js";
|
|
19
|
+
import { requireApiKey } from "../config.js";
|
|
20
|
+
const AGENTVERSE_API = "https://agentverse.ai/v1";
|
|
21
|
+
const POLL_INTERVAL_MS = 5_000;
|
|
22
|
+
const MAX_POLLS = 12; // 60 seconds total
|
|
23
|
+
export function registerDeployCommand(program) {
|
|
24
|
+
program
|
|
25
|
+
.command("deploy")
|
|
26
|
+
.description("Deploy agent.py to Agentverse")
|
|
27
|
+
.option("--file <path>", "Path to the agent Python file (default: ./agent.py)", "agent.py")
|
|
28
|
+
.option("--name <name>", "Display name for the agent on Agentverse", "AgentLaunch Agent")
|
|
29
|
+
.option("--json", "Output only JSON (machine-readable)")
|
|
30
|
+
.action(async (options) => {
|
|
31
|
+
const isJson = options.json === true;
|
|
32
|
+
const apiKey = (() => {
|
|
33
|
+
try {
|
|
34
|
+
return requireApiKey();
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
if (isJson) {
|
|
38
|
+
console.log(JSON.stringify({ error: err.message }));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.error(err.message);
|
|
42
|
+
}
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
})();
|
|
46
|
+
const filePath = path.resolve(process.cwd(), options.file);
|
|
47
|
+
if (!fs.existsSync(filePath)) {
|
|
48
|
+
if (isJson) {
|
|
49
|
+
console.log(JSON.stringify({
|
|
50
|
+
error: `Agent file not found: ${filePath}. Run agentlaunch scaffold <name> first.`,
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.error(`Error: Agent file not found: ${filePath}`);
|
|
55
|
+
console.error("Run 'agentlaunch scaffold <name>' first to generate an agent.");
|
|
56
|
+
}
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const agentName = options.name.slice(0, 64).trim();
|
|
60
|
+
const agentCode = fs.readFileSync(filePath, "utf8");
|
|
61
|
+
if (!isJson) {
|
|
62
|
+
console.log(`Deploying: ${filePath}`);
|
|
63
|
+
console.log(`Agent name: ${agentName}`);
|
|
64
|
+
}
|
|
65
|
+
let agentAddress;
|
|
66
|
+
// Step 1: Create agent
|
|
67
|
+
if (!isJson)
|
|
68
|
+
console.log("\n[1/5] Creating agent on Agentverse...");
|
|
69
|
+
try {
|
|
70
|
+
const created = await agentverseRequest("POST", `${AGENTVERSE_API}/hosting/agents`, apiKey, { name: agentName });
|
|
71
|
+
agentAddress = created.address;
|
|
72
|
+
if (!isJson)
|
|
73
|
+
console.log(` Address: ${agentAddress}`);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (isJson) {
|
|
77
|
+
console.log(JSON.stringify({ error: err.message }));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.error(`Error: ${err.message}`);
|
|
81
|
+
}
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
// Step 2: Upload code
|
|
85
|
+
// Agentverse expects code as a JSON string containing an array of file objects
|
|
86
|
+
if (!isJson)
|
|
87
|
+
console.log("[2/5] Uploading code...");
|
|
88
|
+
try {
|
|
89
|
+
const codeArray = [
|
|
90
|
+
{ language: "python", name: "agent.py", value: agentCode },
|
|
91
|
+
];
|
|
92
|
+
const uploaded = await agentverseRequest("PUT", `${AGENTVERSE_API}/hosting/agents/${agentAddress}/code`, apiKey, { code: JSON.stringify(codeArray) });
|
|
93
|
+
if (!isJson) {
|
|
94
|
+
const digest = uploaded.digest ?? "unknown";
|
|
95
|
+
console.log(` Digest: ${digest.slice(0, 16)}...`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
if (isJson) {
|
|
100
|
+
console.log(JSON.stringify({ error: `Upload failed: ${err.message}` }));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
console.error(`Error uploading code: ${err.message}`);
|
|
104
|
+
}
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
// Step 3: Set secrets
|
|
108
|
+
if (!isJson)
|
|
109
|
+
console.log("[3/5] Setting secrets...");
|
|
110
|
+
const secrets = [
|
|
111
|
+
{ name: "AGENTVERSE_API_KEY", secret: apiKey },
|
|
112
|
+
{ name: "AGENTLAUNCH_API_KEY", secret: apiKey },
|
|
113
|
+
];
|
|
114
|
+
for (const s of secrets) {
|
|
115
|
+
try {
|
|
116
|
+
await agentverseRequest("POST", `${AGENTVERSE_API}/hosting/secrets`, apiKey, { address: agentAddress, name: s.name, secret: s.secret });
|
|
117
|
+
if (!isJson)
|
|
118
|
+
console.log(` Set: ${s.name}`);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
if (!isJson) {
|
|
122
|
+
console.error(` Warning: Could not set ${s.name}: ${err.message}`);
|
|
123
|
+
}
|
|
124
|
+
// Non-fatal — continue
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Step 4: Start agent
|
|
128
|
+
if (!isJson)
|
|
129
|
+
console.log("[4/5] Starting agent...");
|
|
130
|
+
try {
|
|
131
|
+
await agentverseRequest("POST", `${AGENTVERSE_API}/hosting/agents/${agentAddress}/start`, apiKey);
|
|
132
|
+
if (!isJson)
|
|
133
|
+
console.log(" Started.");
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
if (isJson) {
|
|
137
|
+
console.log(JSON.stringify({ error: `Start failed: ${err.message}` }));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
console.error(`Error starting agent: ${err.message}`);
|
|
141
|
+
}
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
// Step 5: Poll for compilation
|
|
145
|
+
if (!isJson)
|
|
146
|
+
console.log("[5/5] Waiting for compilation...");
|
|
147
|
+
let compiled = false;
|
|
148
|
+
let walletAddress;
|
|
149
|
+
for (let i = 0; i < MAX_POLLS; i++) {
|
|
150
|
+
await sleep(POLL_INTERVAL_MS);
|
|
151
|
+
try {
|
|
152
|
+
const response = await fetch(`${AGENTVERSE_API}/hosting/agents/${agentAddress}`, {
|
|
153
|
+
headers: { Authorization: `bearer ${apiKey}` },
|
|
154
|
+
});
|
|
155
|
+
if (response.ok) {
|
|
156
|
+
const status = (await response.json());
|
|
157
|
+
if (status.compiled) {
|
|
158
|
+
compiled = true;
|
|
159
|
+
walletAddress = status.wallet_address;
|
|
160
|
+
if (!isJson)
|
|
161
|
+
console.log(" Compiled.");
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Transient network error — keep polling
|
|
168
|
+
}
|
|
169
|
+
if (!isJson) {
|
|
170
|
+
const elapsed = ((i + 1) * POLL_INTERVAL_MS) / 1000;
|
|
171
|
+
console.log(` Waiting... (${elapsed}s)`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (compiled) {
|
|
175
|
+
if (isJson) {
|
|
176
|
+
console.log(JSON.stringify({
|
|
177
|
+
agentAddress,
|
|
178
|
+
walletAddress,
|
|
179
|
+
status: "compiled",
|
|
180
|
+
agentverseUrl: `https://agentverse.ai/agents`,
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
console.log("\n" + "=".repeat(50));
|
|
185
|
+
console.log("DEPLOYMENT SUCCESSFUL");
|
|
186
|
+
console.log("=".repeat(50));
|
|
187
|
+
console.log(`Agent Address: ${agentAddress}`);
|
|
188
|
+
if (walletAddress) {
|
|
189
|
+
console.log(`Wallet: ${walletAddress}`);
|
|
190
|
+
}
|
|
191
|
+
console.log(`Status: Running & Compiled`);
|
|
192
|
+
console.log(`\nView at: https://agentverse.ai/agents`);
|
|
193
|
+
console.log(`\nNext — tokenize your agent:`);
|
|
194
|
+
console.log(` agentlaunch tokenize --agent ${agentAddress} --name "${agentName}" --symbol ABCD`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
if (isJson) {
|
|
199
|
+
console.log(JSON.stringify({
|
|
200
|
+
error: "Compilation timeout — agent created but did not compile within 60 seconds.",
|
|
201
|
+
agentAddress,
|
|
202
|
+
agentverseUrl: "https://agentverse.ai/agents",
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
console.error("\n" + "=".repeat(50));
|
|
207
|
+
console.error("COMPILATION TIMEOUT");
|
|
208
|
+
console.error("=".repeat(50));
|
|
209
|
+
console.error("Agent was created but did not compile within 60 seconds.");
|
|
210
|
+
console.error(`Agent address: ${agentAddress}`);
|
|
211
|
+
console.error("Check logs at: https://agentverse.ai/agents");
|
|
212
|
+
}
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function sleep(ms) {
|
|
218
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-003: list command
|
|
3
|
+
*
|
|
4
|
+
* agentlaunch list [--limit 10] [--sort trending|latest|market_cap] [--json]
|
|
5
|
+
*
|
|
6
|
+
* Fetches tokens from GET /api/agents/tokens and prints a table.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "commander";
|
|
9
|
+
export declare function registerListCommand(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4BpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6H1D"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-003: list command
|
|
3
|
+
*
|
|
4
|
+
* agentlaunch list [--limit 10] [--sort trending|latest|market_cap] [--json]
|
|
5
|
+
*
|
|
6
|
+
* Fetches tokens from GET /api/agents/tokens and prints a table.
|
|
7
|
+
*/
|
|
8
|
+
import { apiGet } from "../http.js";
|
|
9
|
+
export function registerListCommand(program) {
|
|
10
|
+
program
|
|
11
|
+
.command("list")
|
|
12
|
+
.description("List tokens on AgentLaunch with pagination")
|
|
13
|
+
.option("--limit <n>", "Number of tokens to show (default: 10)", "10")
|
|
14
|
+
.option("--sort <by>", "Sort order: trending, latest, market_cap (default: latest)", "latest")
|
|
15
|
+
.option("--json", "Output raw JSON (machine-readable)")
|
|
16
|
+
.action(async (options) => {
|
|
17
|
+
const limit = parseInt(options.limit, 10);
|
|
18
|
+
if (isNaN(limit) || limit < 1 || limit > 100) {
|
|
19
|
+
if (!options.json) {
|
|
20
|
+
console.error("Error: --limit must be a number between 1 and 100");
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
console.log(JSON.stringify({ error: "--limit must be a number between 1 and 100" }));
|
|
24
|
+
}
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const validSorts = ["trending", "latest", "market_cap"];
|
|
28
|
+
const sort = options.sort;
|
|
29
|
+
if (!validSorts.includes(sort)) {
|
|
30
|
+
if (!options.json) {
|
|
31
|
+
console.error(`Error: --sort must be one of: ${validSorts.join(", ")}`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
console.log(JSON.stringify({
|
|
35
|
+
error: `--sort must be one of: ${validSorts.join(", ")}`,
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
let response;
|
|
41
|
+
try {
|
|
42
|
+
const query = new URLSearchParams({
|
|
43
|
+
limit: String(limit),
|
|
44
|
+
sort,
|
|
45
|
+
page: "1",
|
|
46
|
+
});
|
|
47
|
+
response = await apiGet(`/agents/tokens?${query}`);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (options.json) {
|
|
51
|
+
console.log(JSON.stringify({ error: err.message }));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.error(`Error: ${err.message}`);
|
|
55
|
+
}
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
// Normalize different response shapes
|
|
59
|
+
const tokens = response.data ?? response.tokens ?? response.items ?? [];
|
|
60
|
+
if (options.json) {
|
|
61
|
+
console.log(JSON.stringify({ tokens, total: response.total ?? tokens.length }));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (tokens.length === 0) {
|
|
65
|
+
console.log("No tokens found.");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Pretty-print table
|
|
69
|
+
const col = {
|
|
70
|
+
name: 22,
|
|
71
|
+
symbol: 8,
|
|
72
|
+
price: 14,
|
|
73
|
+
progress: 10,
|
|
74
|
+
status: 10,
|
|
75
|
+
};
|
|
76
|
+
const hr = "─".repeat(col.name + col.symbol + col.price + col.progress + col.status + 14);
|
|
77
|
+
console.log(`\nAgentLaunch Tokens (sort: ${sort}, limit: ${limit})\n`);
|
|
78
|
+
console.log(hr);
|
|
79
|
+
console.log(pad("Name", col.name) +
|
|
80
|
+
pad("Symbol", col.symbol) +
|
|
81
|
+
pad("Price (FET)", col.price) +
|
|
82
|
+
pad("Progress", col.progress) +
|
|
83
|
+
"Status");
|
|
84
|
+
console.log(hr);
|
|
85
|
+
for (const t of tokens) {
|
|
86
|
+
const name = truncate(t.name ?? "-", col.name - 2);
|
|
87
|
+
const symbol = truncate(t.symbol ?? "-", col.symbol - 2);
|
|
88
|
+
const priceRaw = t.price ?? 0;
|
|
89
|
+
const price = formatPrice(priceRaw);
|
|
90
|
+
const progressRaw = t.progress ?? 0;
|
|
91
|
+
const progress = formatProgress(progressRaw);
|
|
92
|
+
const status = t.listed === true || t.status === "listed"
|
|
93
|
+
? "Listed"
|
|
94
|
+
: t.status ?? "Active";
|
|
95
|
+
console.log(pad(name, col.name) +
|
|
96
|
+
pad(symbol, col.symbol) +
|
|
97
|
+
pad(price, col.price) +
|
|
98
|
+
pad(progress, col.progress) +
|
|
99
|
+
status);
|
|
100
|
+
}
|
|
101
|
+
console.log(hr);
|
|
102
|
+
console.log(`\nShowing ${tokens.length} token(s). Use --limit to see more.\n`);
|
|
103
|
+
console.log(`View on platform: https://agent-launch.ai`);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// --- helpers ---
|
|
107
|
+
function pad(s, width) {
|
|
108
|
+
return s.length >= width ? s.slice(0, width) : s + " ".repeat(width - s.length);
|
|
109
|
+
}
|
|
110
|
+
function truncate(s, maxLen) {
|
|
111
|
+
return s.length > maxLen ? s.slice(0, maxLen - 1) + "…" : s;
|
|
112
|
+
}
|
|
113
|
+
function formatPrice(raw) {
|
|
114
|
+
const n = typeof raw === "string" ? parseFloat(raw) : raw;
|
|
115
|
+
if (isNaN(n))
|
|
116
|
+
return "-";
|
|
117
|
+
if (n === 0)
|
|
118
|
+
return "0 FET";
|
|
119
|
+
if (n < 0.000001)
|
|
120
|
+
return `${n.toExponential(2)} FET`;
|
|
121
|
+
if (n < 1)
|
|
122
|
+
return `${n.toFixed(6)} FET`;
|
|
123
|
+
return `${n.toFixed(4)} FET`;
|
|
124
|
+
}
|
|
125
|
+
function formatProgress(raw) {
|
|
126
|
+
const n = typeof raw === "string" ? parseFloat(raw) : raw;
|
|
127
|
+
if (isNaN(n))
|
|
128
|
+
return "-";
|
|
129
|
+
return `${Math.min(100, Math.max(0, n)).toFixed(1)}%`;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-002: scaffold command
|
|
3
|
+
*
|
|
4
|
+
* agentlaunch scaffold <name> [--type faucet|research|trading|data]
|
|
5
|
+
*
|
|
6
|
+
* Generates an agent project directory with:
|
|
7
|
+
* agent.py - Ready-to-edit agent code based on agent-business-template.py
|
|
8
|
+
* README.md - Quickstart instructions
|
|
9
|
+
* .env.example - Required environment variables
|
|
10
|
+
*/
|
|
11
|
+
import { Command } from "commander";
|
|
12
|
+
export declare function registerScaffoldCommand(program: Command): void;
|
|
13
|
+
//# sourceMappingURL=scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+iBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+E9D"}
|