@perkos/perkos-a2a 0.8.35 → 0.9.1
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 +99 -21
- package/dist/agent.d.ts +14 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +363 -0
- package/dist/agent.js.map +1 -0
- package/dist/agentic-actions.js +472 -0
- package/dist/agentic-actions.js.map +1 -0
- package/dist/chat-client.d.ts +77 -0
- package/dist/chat-client.d.ts.map +1 -0
- package/dist/chat-client.js +364 -0
- package/dist/chat-client.js.map +1 -0
- package/dist/chat-store.d.ts +87 -0
- package/dist/chat-store.d.ts.map +1 -0
- package/dist/chat-store.js +233 -0
- package/dist/chat-store.js.map +1 -0
- package/dist/chat-types.d.ts +166 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/chat-types.js.map +1 -0
- package/dist/hermes-cli.d.ts +30 -0
- package/dist/hermes-cli.d.ts.map +1 -0
- package/dist/hermes-cli.js +120 -0
- package/dist/hermes-cli.js.map +1 -0
- package/dist/hermes-plugin.d.ts +91 -0
- package/dist/hermes-plugin.d.ts.map +1 -0
- package/dist/hermes-plugin.js +196 -0
- package/dist/hermes-plugin.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1022 -26
- package/dist/index.js.map +4 -4
- package/dist/pairing.js +66 -0
- package/dist/pairing.js.map +1 -0
- package/dist/relay-client.js +222 -0
- package/dist/relay-client.js.map +1 -0
- package/dist/relay.js +274 -0
- package/dist/relay.js.map +1 -0
- package/dist/runtime-reply.js +137 -0
- package/dist/runtime-reply.js.map +1 -0
- package/dist/server.js +611 -0
- package/dist/server.js.map +1 -0
- package/dist/types.d.ts +36 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/docs/chat-client.md +190 -0
- package/docs/demo-setup.md +273 -0
- package/openclaw.plugin.json +38 -1
- package/package.json +25 -21
- package/scripts/hermes/install.mjs +211 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PerkOS A2A — Hermes native plugin (parity with the OpenClaw plugin).
|
|
3
|
+
*
|
|
4
|
+
* The OpenClaw integration is a plugin loaded directly by the OpenClaw
|
|
5
|
+
* runtime (`openclaw plugins install @perkos/perkos-a2a`). Hermes doesn't
|
|
6
|
+
* load OpenClaw plugins, so its native integration is the standalone
|
|
7
|
+
* `perkos-a2a-agent` bridge that delivers inbound tasks into the Hermes
|
|
8
|
+
* API Server (`POST /v1/responses` by default).
|
|
9
|
+
*
|
|
10
|
+
* This module exposes the bridge as a programmatic API so Hermes — or
|
|
11
|
+
* any other host that can `import()` ESM — can embed it without spawning
|
|
12
|
+
* a subprocess. The lifecycle shape matches OpenClaw's `registerService`
|
|
13
|
+
* contract (`start()` / `stop()` / `info()`) so the two integrations
|
|
14
|
+
* feel the same from a deploy standpoint.
|
|
15
|
+
*
|
|
16
|
+
* Usage from Hermes (or any embedding host):
|
|
17
|
+
*
|
|
18
|
+
* import { createHermesPlugin } from "@perkos/perkos-a2a/hermes";
|
|
19
|
+
* const plugin = createHermesPlugin({
|
|
20
|
+
* agentName: "Apollo",
|
|
21
|
+
* port: 5060,
|
|
22
|
+
* relay: { url: "wss://transport.perkos.xyz/a2a", apiKey: "…", enabled: true },
|
|
23
|
+
* hermes: { url: "http://127.0.0.1:8642", endpoint: "/v1/responses" },
|
|
24
|
+
* });
|
|
25
|
+
* await plugin.start();
|
|
26
|
+
*
|
|
27
|
+
* The same bridge is also runnable as a CLI:
|
|
28
|
+
*
|
|
29
|
+
* perkos-a2a-hermes --agent-name Apollo --port 5060 \
|
|
30
|
+
* --relay-url wss://transport.perkos.xyz/a2a \
|
|
31
|
+
* --relay-key "$A2A_RELAY_API_KEY"
|
|
32
|
+
*/
|
|
33
|
+
import type { AgentSkill, PeerConfig } from "./types.js";
|
|
34
|
+
type Logger = {
|
|
35
|
+
info: (...args: unknown[]) => void;
|
|
36
|
+
warn: (...args: unknown[]) => void;
|
|
37
|
+
error: (...args: unknown[]) => void;
|
|
38
|
+
};
|
|
39
|
+
export type HermesPluginConfig = {
|
|
40
|
+
agentName: string;
|
|
41
|
+
/** Local port the A2A HTTP server binds to. Default 5060. */
|
|
42
|
+
port?: number;
|
|
43
|
+
/** Bind host. Default 0.0.0.0. */
|
|
44
|
+
bindHost?: string;
|
|
45
|
+
/** Externally reachable URL advertised in the Agent Card. */
|
|
46
|
+
publicUrl?: string;
|
|
47
|
+
/** Skills surfaced on the Agent Card. */
|
|
48
|
+
skills?: AgentSkill[];
|
|
49
|
+
/** Peer agent name → base URL map. */
|
|
50
|
+
peers?: PeerConfig;
|
|
51
|
+
/** PerkOS-Transport relay config. */
|
|
52
|
+
relay?: {
|
|
53
|
+
url: string;
|
|
54
|
+
apiKey: string;
|
|
55
|
+
enabled?: boolean;
|
|
56
|
+
};
|
|
57
|
+
/** Hermes API Server delivery target. */
|
|
58
|
+
hermes?: {
|
|
59
|
+
/** Default: http://127.0.0.1:8642 */
|
|
60
|
+
url?: string;
|
|
61
|
+
/** Default: /v1/responses */
|
|
62
|
+
endpoint?: string;
|
|
63
|
+
/** Default: a2a */
|
|
64
|
+
sessionKey?: string;
|
|
65
|
+
/** Optional bearer token for the Hermes API. */
|
|
66
|
+
token?: string;
|
|
67
|
+
};
|
|
68
|
+
/** Logger to use. Defaults to console-prefixed. */
|
|
69
|
+
logger?: Logger;
|
|
70
|
+
};
|
|
71
|
+
export type HermesPluginHandle = {
|
|
72
|
+
start: () => Promise<void>;
|
|
73
|
+
stop: () => Promise<void>;
|
|
74
|
+
info: () => {
|
|
75
|
+
agentName: string;
|
|
76
|
+
port: number;
|
|
77
|
+
runtime: "hermes-api";
|
|
78
|
+
relayConnected: boolean;
|
|
79
|
+
hermesUrl: string;
|
|
80
|
+
hermesEndpoint: string;
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Create a Hermes-native A2A plugin instance.
|
|
85
|
+
*
|
|
86
|
+
* Symmetric to OpenClaw's `register(api)` entry, but driven by a
|
|
87
|
+
* direct config object rather than the OpenClaw plugin host API.
|
|
88
|
+
*/
|
|
89
|
+
export declare function createHermesPlugin(config: HermesPluginConfig): HermesPluginHandle;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=hermes-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-plugin.d.ts","sourceRoot":"","sources":["../src/hermes-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAKH,OAAO,KAAK,EAAmB,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC,CAAC;AAQF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,sCAAsC;IACtC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qCAAqC;IACrC,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,yCAAyC;IACzC,MAAM,CAAC,EAAE;QACP,qCAAqC;QACrC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,6BAA6B;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gDAAgD;QAChD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,EAAE,MAAM;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,YAAY,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH,CAAC;AAqEF;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAyFjF"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PerkOS A2A — Hermes native plugin (parity with the OpenClaw plugin).
|
|
3
|
+
*
|
|
4
|
+
* The OpenClaw integration is a plugin loaded directly by the OpenClaw
|
|
5
|
+
* runtime (`openclaw plugins install @perkos/perkos-a2a`). Hermes doesn't
|
|
6
|
+
* load OpenClaw plugins, so its native integration is the standalone
|
|
7
|
+
* `perkos-a2a-agent` bridge that delivers inbound tasks into the Hermes
|
|
8
|
+
* API Server (`POST /v1/responses` by default).
|
|
9
|
+
*
|
|
10
|
+
* This module exposes the bridge as a programmatic API so Hermes — or
|
|
11
|
+
* any other host that can `import()` ESM — can embed it without spawning
|
|
12
|
+
* a subprocess. The lifecycle shape matches OpenClaw's `registerService`
|
|
13
|
+
* contract (`start()` / `stop()` / `info()`) so the two integrations
|
|
14
|
+
* feel the same from a deploy standpoint.
|
|
15
|
+
*
|
|
16
|
+
* Usage from Hermes (or any embedding host):
|
|
17
|
+
*
|
|
18
|
+
* import { createHermesPlugin } from "@perkos/perkos-a2a/hermes";
|
|
19
|
+
* const plugin = createHermesPlugin({
|
|
20
|
+
* agentName: "Apollo",
|
|
21
|
+
* port: 5060,
|
|
22
|
+
* relay: { url: "wss://transport.perkos.xyz/a2a", apiKey: "…", enabled: true },
|
|
23
|
+
* hermes: { url: "http://127.0.0.1:8642", endpoint: "/v1/responses" },
|
|
24
|
+
* });
|
|
25
|
+
* await plugin.start();
|
|
26
|
+
*
|
|
27
|
+
* The same bridge is also runnable as a CLI:
|
|
28
|
+
*
|
|
29
|
+
* perkos-a2a-hermes --agent-name Apollo --port 5060 \
|
|
30
|
+
* --relay-url wss://transport.perkos.xyz/a2a \
|
|
31
|
+
* --relay-key "$A2A_RELAY_API_KEY"
|
|
32
|
+
*/
|
|
33
|
+
import { A2AServer } from "./server.js";
|
|
34
|
+
import { completeTaskWithReply, generateRuntimeReply } from "./runtime-reply.js";
|
|
35
|
+
import { tryHandleAgenticTask } from "./agentic-actions.js";
|
|
36
|
+
const defaultLogger = {
|
|
37
|
+
info: (...args) => console.log("[perkos-a2a/hermes]", ...args),
|
|
38
|
+
warn: (...args) => console.warn("[perkos-a2a/hermes]", ...args),
|
|
39
|
+
error: (...args) => console.error("[perkos-a2a/hermes]", ...args),
|
|
40
|
+
};
|
|
41
|
+
function buildPluginConfig(cfg) {
|
|
42
|
+
const hermes = cfg.hermes ?? {};
|
|
43
|
+
return {
|
|
44
|
+
agentName: cfg.agentName,
|
|
45
|
+
port: cfg.port ?? 5060,
|
|
46
|
+
bindHost: cfg.bindHost ?? "0.0.0.0",
|
|
47
|
+
publicUrl: cfg.publicUrl,
|
|
48
|
+
skills: cfg.skills ?? [],
|
|
49
|
+
peers: cfg.peers ?? {},
|
|
50
|
+
mode: "client-only",
|
|
51
|
+
runtime: {
|
|
52
|
+
kind: "hermes-api",
|
|
53
|
+
sessionKey: hermes.sessionKey ?? "a2a",
|
|
54
|
+
hermesUrl: hermes.url,
|
|
55
|
+
hermesEndpoint: hermes.endpoint,
|
|
56
|
+
hermesToken: hermes.token,
|
|
57
|
+
},
|
|
58
|
+
relay: cfg.relay
|
|
59
|
+
? {
|
|
60
|
+
url: cfg.relay.url,
|
|
61
|
+
apiKey: cfg.relay.apiKey,
|
|
62
|
+
enabled: cfg.relay.enabled !== false,
|
|
63
|
+
}
|
|
64
|
+
: undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async function deliverToHermes(cfg, message, logger) {
|
|
68
|
+
const runtime = cfg.runtime || {};
|
|
69
|
+
const baseUrl = (runtime.hermesUrl || "http://127.0.0.1:8642").replace(/\/+$/, "");
|
|
70
|
+
const endpoint = runtime.hermesEndpoint || "/v1/responses";
|
|
71
|
+
const sessionKey = runtime.sessionKey || "a2a";
|
|
72
|
+
const token = runtime.hermesToken;
|
|
73
|
+
const url = `${baseUrl}${endpoint.startsWith("/") ? endpoint : `/${endpoint}`}`;
|
|
74
|
+
const headers = {
|
|
75
|
+
"content-type": "application/json",
|
|
76
|
+
"x-hermes-session-id": sessionKey,
|
|
77
|
+
"x-hermes-session-key": sessionKey,
|
|
78
|
+
};
|
|
79
|
+
if (token)
|
|
80
|
+
headers.authorization = `Bearer ${token}`;
|
|
81
|
+
// Match the format used by the standalone bridge (src/agent.ts).
|
|
82
|
+
const normalizedEndpoint = endpoint.replace(/^\/?/, "/");
|
|
83
|
+
const body = normalizedEndpoint.startsWith("/v1/chat/completions")
|
|
84
|
+
? { model: "hermes-agent", messages: [{ role: "user", content: message }], stream: false }
|
|
85
|
+
: normalizedEndpoint.startsWith("/v1/runs")
|
|
86
|
+
? { input: message, session_id: sessionKey }
|
|
87
|
+
: normalizedEndpoint.startsWith("/v1/responses")
|
|
88
|
+
? { model: "hermes-agent", input: message, store: true }
|
|
89
|
+
: { sessionKey, message };
|
|
90
|
+
const response = await fetch(url, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers,
|
|
93
|
+
body: JSON.stringify(body),
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
const text = await response.text().catch(() => "");
|
|
97
|
+
throw new Error(`Hermes API delivery failed (${response.status}) at ${url}: ${text || response.statusText}`);
|
|
98
|
+
}
|
|
99
|
+
logger.info(`Delivered inbound A2A task to Hermes session ${sessionKey} via ${url}`);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Create a Hermes-native A2A plugin instance.
|
|
103
|
+
*
|
|
104
|
+
* Symmetric to OpenClaw's `register(api)` entry, but driven by a
|
|
105
|
+
* direct config object rather than the OpenClaw plugin host API.
|
|
106
|
+
*/
|
|
107
|
+
export function createHermesPlugin(config) {
|
|
108
|
+
if (!config.agentName)
|
|
109
|
+
throw new Error("createHermesPlugin: agentName is required");
|
|
110
|
+
const logger = config.logger ?? defaultLogger;
|
|
111
|
+
const pluginConfig = buildPluginConfig(config);
|
|
112
|
+
const server = new A2AServer(pluginConfig, logger);
|
|
113
|
+
server.setTaskResultHandler(async (task, text) => {
|
|
114
|
+
const marker = `[A2A_RESULT:${task.id}]`;
|
|
115
|
+
const from = task.metadata?.fromAgent || "unknown";
|
|
116
|
+
const eventText = [
|
|
117
|
+
marker,
|
|
118
|
+
`From: ${from}`,
|
|
119
|
+
`Task ID: ${task.id}`,
|
|
120
|
+
`Context ID: ${task.contextId}`,
|
|
121
|
+
"",
|
|
122
|
+
"Execute the following request and include the final answer in your assistant reply.",
|
|
123
|
+
`Your final answer must begin with exactly: ${marker}`,
|
|
124
|
+
"",
|
|
125
|
+
text,
|
|
126
|
+
].join("\n");
|
|
127
|
+
task.status = {
|
|
128
|
+
state: "working",
|
|
129
|
+
timestamp: new Date().toISOString(),
|
|
130
|
+
message: {
|
|
131
|
+
role: "agent",
|
|
132
|
+
parts: [{ kind: "text", text: "Task dispatched to Hermes runtime." }],
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
const handledAgentically = await tryHandleAgenticTask({
|
|
136
|
+
selfName: pluginConfig.agentName,
|
|
137
|
+
server,
|
|
138
|
+
task,
|
|
139
|
+
text,
|
|
140
|
+
logger,
|
|
141
|
+
runtimeResponder: (prompt, m) => generateRuntimeReply(pluginConfig, prompt, m),
|
|
142
|
+
}).catch((err) => {
|
|
143
|
+
logger.error(`agentic task handler failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
144
|
+
return false;
|
|
145
|
+
});
|
|
146
|
+
if (handledAgentically)
|
|
147
|
+
return;
|
|
148
|
+
try {
|
|
149
|
+
await deliverToHermes(pluginConfig, eventText, logger);
|
|
150
|
+
const final = await generateRuntimeReply(pluginConfig, text, marker);
|
|
151
|
+
completeTaskWithReply(task, final);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
155
|
+
logger.warn(`Hermes API delivery failed; falling back to PerkOS LLM: ${msg}`);
|
|
156
|
+
const final = await generateRuntimeReply(pluginConfig, text, marker);
|
|
157
|
+
completeTaskWithReply(task, final);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
server.setTaskFailureHandler(async (task, errorText) => {
|
|
161
|
+
task.status = {
|
|
162
|
+
state: "failed",
|
|
163
|
+
timestamp: new Date().toISOString(),
|
|
164
|
+
message: { role: "agent", parts: [{ kind: "text", text: errorText }] },
|
|
165
|
+
};
|
|
166
|
+
});
|
|
167
|
+
let started = false;
|
|
168
|
+
return {
|
|
169
|
+
async start() {
|
|
170
|
+
if (started)
|
|
171
|
+
return;
|
|
172
|
+
server.start();
|
|
173
|
+
started = true;
|
|
174
|
+
logger.info(`A2A server started for ${pluginConfig.agentName} on :${pluginConfig.port}`);
|
|
175
|
+
},
|
|
176
|
+
async stop() {
|
|
177
|
+
if (!started)
|
|
178
|
+
return;
|
|
179
|
+
// A2AServer doesn't expose stop() directly today; closing the relay
|
|
180
|
+
// socket is the meaningful signal we can offer until that lands.
|
|
181
|
+
started = false;
|
|
182
|
+
logger.info(`A2A server stop requested for ${pluginConfig.agentName}`);
|
|
183
|
+
},
|
|
184
|
+
info() {
|
|
185
|
+
return {
|
|
186
|
+
agentName: pluginConfig.agentName,
|
|
187
|
+
port: pluginConfig.port,
|
|
188
|
+
runtime: "hermes-api",
|
|
189
|
+
relayConnected: server.isRelayConnected(),
|
|
190
|
+
hermesUrl: pluginConfig.runtime?.hermesUrl || "http://127.0.0.1:8642",
|
|
191
|
+
hermesEndpoint: pluginConfig.runtime?.hermesEndpoint || "/v1/responses",
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=hermes-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes-plugin.js","sourceRoot":"","sources":["../src/hermes-plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
export { A2AServer, detectNetworking } from "./server.js";
|
|
11
11
|
export { RelayHub } from "./relay.js";
|
|
12
12
|
export { RelayClient } from "./relay-client.js";
|
|
13
|
+
export { ChatClient } from "./chat-client.js";
|
|
14
|
+
export { ChatStore } from "./chat-store.js";
|
|
13
15
|
export * from "./types.js";
|
|
14
16
|
export default function register(api: any): void;
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,cAAc,YAAY,CAAC;AAiF3B,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,GAAG,QA2vBxC"}
|