@kenkaiiii/gg-core 5.93.0 → 5.95.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 +11 -11
- package/dist/{chunk-2X5L6U4Z.js → chunk-GXOFTHM5.js} +4 -2
- package/dist/chunk-GXOFTHM5.js.map +1 -0
- package/dist/{chunk-SDUIKPGO.js → chunk-J7W5HS6X.js} +1191 -1189
- package/dist/chunk-J7W5HS6X.js.map +1 -0
- package/dist/index.cjs +1472 -1368
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +338 -187
- package/dist/index.d.ts +338 -187
- package/dist/index.js +319 -213
- package/dist/index.js.map +1 -1
- package/dist/model-registry.cjs +96 -77
- package/dist/model-registry.cjs.map +1 -1
- package/dist/model-registry.d.cts +11 -15
- package/dist/model-registry.d.ts +11 -15
- package/dist/model-registry.js +2 -2
- package/dist/paths.cjs +3 -1
- package/dist/paths.cjs.map +1 -1
- package/dist/paths.d.cts +4 -0
- package/dist/paths.d.ts +4 -0
- package/dist/paths.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-2X5L6U4Z.js.map +0 -1
- package/dist/chunk-SDUIKPGO.js.map +0 -1
|
@@ -6,10 +6,7 @@ import { Provider, ThinkingLevel } from '@kenkaiiii/gg-ai';
|
|
|
6
6
|
* transports and stored credentials stay in place, so un-hiding is a one-line
|
|
7
7
|
* change here (plus `HIDDEN_PROVIDERS` in gg-app/src-tauri/src/auth.rs).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* 2026-06-18, and Antigravity OAuth is off-limits to third-party clients
|
|
11
|
-
* (Google suspends accounts for it). Hidden until there is a sign-in path that
|
|
12
|
-
* works for most users.
|
|
9
|
+
* None are hidden today: Gemini came back with an AI Studio API key.
|
|
13
10
|
*
|
|
14
11
|
* Hiding works through `AuthStorage.hasProviderAuth()`, which reports a hidden
|
|
15
12
|
* provider as not connected: every picker and the startup resolver filter on
|
|
@@ -25,9 +22,9 @@ interface ModelInfo {
|
|
|
25
22
|
provider: Provider;
|
|
26
23
|
contextWindow: number;
|
|
27
24
|
/**
|
|
28
|
-
* ChatGPT
|
|
29
|
-
* the public API model window.
|
|
30
|
-
*
|
|
25
|
+
* The ChatGPT plan route uses product-specific windows that can differ from
|
|
26
|
+
* the public API model window. ChatGPT plan requests carry an accountId;
|
|
27
|
+
* API-key requests do not.
|
|
31
28
|
*/
|
|
32
29
|
codexContextWindow?: number;
|
|
33
30
|
maxOutputTokens: number;
|
|
@@ -80,8 +77,7 @@ interface ModelInfo {
|
|
|
80
77
|
/**
|
|
81
78
|
* Ordered preference of auth-storage keys this model resolves credentials
|
|
82
79
|
* from, for providers that split auth across multiple distinct
|
|
83
|
-
* endpoints/keys (
|
|
84
|
-
* API Credits endpoint). The first key with stored credentials wins, so a
|
|
80
|
+
* endpoints/keys (a plan key vs. a pay-per-token key). The first key with stored credentials wins, so a
|
|
85
81
|
* model can both prefer one endpoint AND fall back to another the user has
|
|
86
82
|
* configured instead:
|
|
87
83
|
* - `mimo-v2.6-pro` / `mimo-v2.6-flash`: `["xiaomi", XIAOMI_CREDITS_KEY]` —
|
|
@@ -89,9 +85,9 @@ interface ModelInfo {
|
|
|
89
85
|
* every MiMo model, so a Credits-only user still reaches these).
|
|
90
86
|
* - `mimo-v2.6-pro-ultraspeed`: `[XIAOMI_CREDITS_KEY]` only — not served
|
|
91
87
|
* over the Token Plan endpoint, so there's no fallback to it.
|
|
92
|
-
* -
|
|
93
|
-
*
|
|
94
|
-
*
|
|
88
|
+
* - Kimi: `[KIMI_CODE_KEY, "moonshot"]` — the Kimi Code plan key first;
|
|
89
|
+
* K2.8 Preview is `[KIMI_CODE_KEY]` only (the plan endpoint serves it).
|
|
90
|
+
* - every Gemini model: `[GEMINI_API_KEY]` — the AI Studio key.
|
|
95
91
|
* Falls back to `[provider]` — the normal single-credential case — when
|
|
96
92
|
* unset. Read via `getAuthStorageKeys()` / `getAuthStorageKey()`.
|
|
97
93
|
*/
|
|
@@ -201,9 +197,9 @@ declare function getMaxThinkingLevel(modelId: string): ThinkingLevel;
|
|
|
201
197
|
/**
|
|
202
198
|
* The thinking level a fresh session starts at. Identical to
|
|
203
199
|
* {@link getMaxThinkingLevel} except where the provider declares a lower
|
|
204
|
-
* default effort server-side — Kimi K3's Kimi
|
|
205
|
-
*
|
|
206
|
-
*
|
|
200
|
+
* default effort server-side — Kimi K3's Kimi Code plan endpoint declares
|
|
201
|
+
* `default_effort: "high"` in its /models think_efforts (the public Moonshot
|
|
202
|
+
* API declares "max").
|
|
207
203
|
* Pass the active credential's baseUrl so the endpoint-aware default resolves;
|
|
208
204
|
* matching it keeps plan-usage burn identical to the official CLI (users can
|
|
209
205
|
* still toggle up to max).
|
package/dist/model-registry.d.ts
CHANGED
|
@@ -6,10 +6,7 @@ import { Provider, ThinkingLevel } from '@kenkaiiii/gg-ai';
|
|
|
6
6
|
* transports and stored credentials stay in place, so un-hiding is a one-line
|
|
7
7
|
* change here (plus `HIDDEN_PROVIDERS` in gg-app/src-tauri/src/auth.rs).
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* 2026-06-18, and Antigravity OAuth is off-limits to third-party clients
|
|
11
|
-
* (Google suspends accounts for it). Hidden until there is a sign-in path that
|
|
12
|
-
* works for most users.
|
|
9
|
+
* None are hidden today: Gemini came back with an AI Studio API key.
|
|
13
10
|
*
|
|
14
11
|
* Hiding works through `AuthStorage.hasProviderAuth()`, which reports a hidden
|
|
15
12
|
* provider as not connected: every picker and the startup resolver filter on
|
|
@@ -25,9 +22,9 @@ interface ModelInfo {
|
|
|
25
22
|
provider: Provider;
|
|
26
23
|
contextWindow: number;
|
|
27
24
|
/**
|
|
28
|
-
* ChatGPT
|
|
29
|
-
* the public API model window.
|
|
30
|
-
*
|
|
25
|
+
* The ChatGPT plan route uses product-specific windows that can differ from
|
|
26
|
+
* the public API model window. ChatGPT plan requests carry an accountId;
|
|
27
|
+
* API-key requests do not.
|
|
31
28
|
*/
|
|
32
29
|
codexContextWindow?: number;
|
|
33
30
|
maxOutputTokens: number;
|
|
@@ -80,8 +77,7 @@ interface ModelInfo {
|
|
|
80
77
|
/**
|
|
81
78
|
* Ordered preference of auth-storage keys this model resolves credentials
|
|
82
79
|
* from, for providers that split auth across multiple distinct
|
|
83
|
-
* endpoints/keys (
|
|
84
|
-
* API Credits endpoint). The first key with stored credentials wins, so a
|
|
80
|
+
* endpoints/keys (a plan key vs. a pay-per-token key). The first key with stored credentials wins, so a
|
|
85
81
|
* model can both prefer one endpoint AND fall back to another the user has
|
|
86
82
|
* configured instead:
|
|
87
83
|
* - `mimo-v2.6-pro` / `mimo-v2.6-flash`: `["xiaomi", XIAOMI_CREDITS_KEY]` —
|
|
@@ -89,9 +85,9 @@ interface ModelInfo {
|
|
|
89
85
|
* every MiMo model, so a Credits-only user still reaches these).
|
|
90
86
|
* - `mimo-v2.6-pro-ultraspeed`: `[XIAOMI_CREDITS_KEY]` only — not served
|
|
91
87
|
* over the Token Plan endpoint, so there's no fallback to it.
|
|
92
|
-
* -
|
|
93
|
-
*
|
|
94
|
-
*
|
|
88
|
+
* - Kimi: `[KIMI_CODE_KEY, "moonshot"]` — the Kimi Code plan key first;
|
|
89
|
+
* K2.8 Preview is `[KIMI_CODE_KEY]` only (the plan endpoint serves it).
|
|
90
|
+
* - every Gemini model: `[GEMINI_API_KEY]` — the AI Studio key.
|
|
95
91
|
* Falls back to `[provider]` — the normal single-credential case — when
|
|
96
92
|
* unset. Read via `getAuthStorageKeys()` / `getAuthStorageKey()`.
|
|
97
93
|
*/
|
|
@@ -201,9 +197,9 @@ declare function getMaxThinkingLevel(modelId: string): ThinkingLevel;
|
|
|
201
197
|
/**
|
|
202
198
|
* The thinking level a fresh session starts at. Identical to
|
|
203
199
|
* {@link getMaxThinkingLevel} except where the provider declares a lower
|
|
204
|
-
* default effort server-side — Kimi K3's Kimi
|
|
205
|
-
*
|
|
206
|
-
*
|
|
200
|
+
* default effort server-side — Kimi K3's Kimi Code plan endpoint declares
|
|
201
|
+
* `default_effort: "high"` in its /models think_efforts (the public Moonshot
|
|
202
|
+
* API declares "max").
|
|
207
203
|
* Pass the active credential's baseUrl so the endpoint-aware default resolves;
|
|
208
204
|
* matching it keeps plan-usage burn identical to the official CLI (users can
|
|
209
205
|
* still toggle up to max).
|
package/dist/model-registry.js
CHANGED
|
@@ -23,8 +23,8 @@ import {
|
|
|
23
23
|
setProviderCatalog,
|
|
24
24
|
usesOpenAICodexTransport,
|
|
25
25
|
withoutPaidTier
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-J7W5HS6X.js";
|
|
27
|
+
import "./chunk-GXOFTHM5.js";
|
|
28
28
|
export {
|
|
29
29
|
DEFAULT_MAX_VIDEO_BYTES,
|
|
30
30
|
HIDDEN_PROVIDERS,
|
package/dist/paths.cjs
CHANGED
|
@@ -55,7 +55,9 @@ function getAppPaths() {
|
|
|
55
55
|
agentsDir: import_node_path.default.join(agentDir, "agents"),
|
|
56
56
|
progressFile: import_node_path.default.join(agentDir, "progress.json"),
|
|
57
57
|
progressBackupFile: import_node_path.default.join(agentDir, "progress.backup.json"),
|
|
58
|
-
trophiesFile: import_node_path.default.join(agentDir, "trophies.json")
|
|
58
|
+
trophiesFile: import_node_path.default.join(agentDir, "trophies.json"),
|
|
59
|
+
claudeCodeDir: import_node_path.default.join(agentDir, "claude-code"),
|
|
60
|
+
claudeCodeConfigDir: import_node_path.default.join(agentDir, "claude-code", "config")
|
|
59
61
|
};
|
|
60
62
|
}
|
|
61
63
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/paths.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"node:path\";\nimport os from \"node:os\";\n\nexport interface AppPaths {\n agentDir: string;\n sessionsDir: string;\n subagentSessionsDir: string;\n subagentsDir: string;\n settingsFile: string;\n authFile: string;\n telegramFile: string;\n agentHomeFile: string;\n mcpFile: string;\n mcpAuthFile: string;\n /** Cached MCP tool catalog, so a cold start can answer tool_search honestly. */\n mcpCatalogFile: string;\n logFile: string;\n skillsDir: string;\n extensionsDir: string;\n agentsDir: string;\n progressFile: string;\n progressBackupFile: string;\n /** Earned trophies and the counters that unlock them. */\n trophiesFile: string;\n}\n\nexport function getAppPaths(): AppPaths {\n const agentDir = path.join(os.homedir(), \".gg\");\n return {\n agentDir,\n sessionsDir: path.join(agentDir, \"sessions\"),\n subagentSessionsDir: path.join(agentDir, \"subagent-sessions\"),\n subagentsDir: path.join(agentDir, \"subagents\"),\n settingsFile: path.join(agentDir, \"settings.json\"),\n authFile: path.join(agentDir, \"auth.json\"),\n telegramFile: path.join(agentDir, \"telegram.json\"),\n agentHomeFile: path.join(agentDir, \"agent-home.json\"),\n mcpFile: path.join(agentDir, \"mcp.json\"),\n mcpAuthFile: path.join(agentDir, \"mcp-auth.json\"),\n mcpCatalogFile: path.join(agentDir, \"mcp-catalog.json\"),\n logFile: path.join(agentDir, \"debug.log\"),\n skillsDir: path.join(agentDir, \"skills\"),\n extensionsDir: path.join(agentDir, \"extensions\"),\n agentsDir: path.join(agentDir, \"agents\"),\n progressFile: path.join(agentDir, \"progress.json\"),\n progressBackupFile: path.join(agentDir, \"progress.backup.json\"),\n trophiesFile: path.join(agentDir, \"trophies.json\"),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiB;AACjB,qBAAe;
|
|
1
|
+
{"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"node:path\";\nimport os from \"node:os\";\n\nexport interface AppPaths {\n agentDir: string;\n sessionsDir: string;\n subagentSessionsDir: string;\n subagentsDir: string;\n settingsFile: string;\n authFile: string;\n telegramFile: string;\n agentHomeFile: string;\n mcpFile: string;\n mcpAuthFile: string;\n /** Cached MCP tool catalog, so a cold start can answer tool_search honestly. */\n mcpCatalogFile: string;\n logFile: string;\n skillsDir: string;\n extensionsDir: string;\n agentsDir: string;\n progressFile: string;\n progressBackupFile: string;\n /** Earned trophies and the counters that unlock them. */\n trophiesFile: string;\n /** On-demand Claude Code binaries for \"Sign in with Claude\", one dir per version. */\n claudeCodeDir: string;\n /** GG Coder's own Claude Code login (CLAUDE_CONFIG_DIR), separate from the user's. */\n claudeCodeConfigDir: string;\n}\n\nexport function getAppPaths(): AppPaths {\n const agentDir = path.join(os.homedir(), \".gg\");\n return {\n agentDir,\n sessionsDir: path.join(agentDir, \"sessions\"),\n subagentSessionsDir: path.join(agentDir, \"subagent-sessions\"),\n subagentsDir: path.join(agentDir, \"subagents\"),\n settingsFile: path.join(agentDir, \"settings.json\"),\n authFile: path.join(agentDir, \"auth.json\"),\n telegramFile: path.join(agentDir, \"telegram.json\"),\n agentHomeFile: path.join(agentDir, \"agent-home.json\"),\n mcpFile: path.join(agentDir, \"mcp.json\"),\n mcpAuthFile: path.join(agentDir, \"mcp-auth.json\"),\n mcpCatalogFile: path.join(agentDir, \"mcp-catalog.json\"),\n logFile: path.join(agentDir, \"debug.log\"),\n skillsDir: path.join(agentDir, \"skills\"),\n extensionsDir: path.join(agentDir, \"extensions\"),\n agentsDir: path.join(agentDir, \"agents\"),\n progressFile: path.join(agentDir, \"progress.json\"),\n progressBackupFile: path.join(agentDir, \"progress.backup.json\"),\n trophiesFile: path.join(agentDir, \"trophies.json\"),\n claudeCodeDir: path.join(agentDir, \"claude-code\"),\n claudeCodeConfigDir: path.join(agentDir, \"claude-code\", \"config\"),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAiB;AACjB,qBAAe;AA6BR,SAAS,cAAwB;AACtC,QAAM,WAAW,iBAAAA,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,KAAK;AAC9C,SAAO;AAAA,IACL;AAAA,IACA,aAAa,iBAAAD,QAAK,KAAK,UAAU,UAAU;AAAA,IAC3C,qBAAqB,iBAAAA,QAAK,KAAK,UAAU,mBAAmB;AAAA,IAC5D,cAAc,iBAAAA,QAAK,KAAK,UAAU,WAAW;AAAA,IAC7C,cAAc,iBAAAA,QAAK,KAAK,UAAU,eAAe;AAAA,IACjD,UAAU,iBAAAA,QAAK,KAAK,UAAU,WAAW;AAAA,IACzC,cAAc,iBAAAA,QAAK,KAAK,UAAU,eAAe;AAAA,IACjD,eAAe,iBAAAA,QAAK,KAAK,UAAU,iBAAiB;AAAA,IACpD,SAAS,iBAAAA,QAAK,KAAK,UAAU,UAAU;AAAA,IACvC,aAAa,iBAAAA,QAAK,KAAK,UAAU,eAAe;AAAA,IAChD,gBAAgB,iBAAAA,QAAK,KAAK,UAAU,kBAAkB;AAAA,IACtD,SAAS,iBAAAA,QAAK,KAAK,UAAU,WAAW;AAAA,IACxC,WAAW,iBAAAA,QAAK,KAAK,UAAU,QAAQ;AAAA,IACvC,eAAe,iBAAAA,QAAK,KAAK,UAAU,YAAY;AAAA,IAC/C,WAAW,iBAAAA,QAAK,KAAK,UAAU,QAAQ;AAAA,IACvC,cAAc,iBAAAA,QAAK,KAAK,UAAU,eAAe;AAAA,IACjD,oBAAoB,iBAAAA,QAAK,KAAK,UAAU,sBAAsB;AAAA,IAC9D,cAAc,iBAAAA,QAAK,KAAK,UAAU,eAAe;AAAA,IACjD,eAAe,iBAAAA,QAAK,KAAK,UAAU,aAAa;AAAA,IAChD,qBAAqB,iBAAAA,QAAK,KAAK,UAAU,eAAe,QAAQ;AAAA,EAClE;AACF;","names":["path","os"]}
|
package/dist/paths.d.cts
CHANGED
|
@@ -19,6 +19,10 @@ interface AppPaths {
|
|
|
19
19
|
progressBackupFile: string;
|
|
20
20
|
/** Earned trophies and the counters that unlock them. */
|
|
21
21
|
trophiesFile: string;
|
|
22
|
+
/** On-demand Claude Code binaries for "Sign in with Claude", one dir per version. */
|
|
23
|
+
claudeCodeDir: string;
|
|
24
|
+
/** GG Coder's own Claude Code login (CLAUDE_CONFIG_DIR), separate from the user's. */
|
|
25
|
+
claudeCodeConfigDir: string;
|
|
22
26
|
}
|
|
23
27
|
declare function getAppPaths(): AppPaths;
|
|
24
28
|
|
package/dist/paths.d.ts
CHANGED
|
@@ -19,6 +19,10 @@ interface AppPaths {
|
|
|
19
19
|
progressBackupFile: string;
|
|
20
20
|
/** Earned trophies and the counters that unlock them. */
|
|
21
21
|
trophiesFile: string;
|
|
22
|
+
/** On-demand Claude Code binaries for "Sign in with Claude", one dir per version. */
|
|
23
|
+
claudeCodeDir: string;
|
|
24
|
+
/** GG Coder's own Claude Code login (CLAUDE_CONFIG_DIR), separate from the user's. */
|
|
25
|
+
claudeCodeConfigDir: string;
|
|
22
26
|
}
|
|
23
27
|
declare function getAppPaths(): AppPaths;
|
|
24
28
|
|
package/dist/paths.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kenkaiiii/gg-core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.95.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Model registry, sign-in and stored credentials, and local model discovery for apps built on gg-ai. No UI, no agent loop.",
|
|
6
6
|
"author": "Ken Kai",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"NOTICE"
|
|
51
51
|
],
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@kenkaiiii/gg-ai": "5.
|
|
53
|
+
"@kenkaiiii/gg-ai": "5.95.0"
|
|
54
54
|
},
|
|
55
55
|
"optionalDependencies": {
|
|
56
56
|
"@huggingface/transformers": "4.2.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/paths.ts"],"sourcesContent":["import path from \"node:path\";\nimport os from \"node:os\";\n\nexport interface AppPaths {\n agentDir: string;\n sessionsDir: string;\n subagentSessionsDir: string;\n subagentsDir: string;\n settingsFile: string;\n authFile: string;\n telegramFile: string;\n agentHomeFile: string;\n mcpFile: string;\n mcpAuthFile: string;\n /** Cached MCP tool catalog, so a cold start can answer tool_search honestly. */\n mcpCatalogFile: string;\n logFile: string;\n skillsDir: string;\n extensionsDir: string;\n agentsDir: string;\n progressFile: string;\n progressBackupFile: string;\n /** Earned trophies and the counters that unlock them. */\n trophiesFile: string;\n}\n\nexport function getAppPaths(): AppPaths {\n const agentDir = path.join(os.homedir(), \".gg\");\n return {\n agentDir,\n sessionsDir: path.join(agentDir, \"sessions\"),\n subagentSessionsDir: path.join(agentDir, \"subagent-sessions\"),\n subagentsDir: path.join(agentDir, \"subagents\"),\n settingsFile: path.join(agentDir, \"settings.json\"),\n authFile: path.join(agentDir, \"auth.json\"),\n telegramFile: path.join(agentDir, \"telegram.json\"),\n agentHomeFile: path.join(agentDir, \"agent-home.json\"),\n mcpFile: path.join(agentDir, \"mcp.json\"),\n mcpAuthFile: path.join(agentDir, \"mcp-auth.json\"),\n mcpCatalogFile: path.join(agentDir, \"mcp-catalog.json\"),\n logFile: path.join(agentDir, \"debug.log\"),\n skillsDir: path.join(agentDir, \"skills\"),\n extensionsDir: path.join(agentDir, \"extensions\"),\n agentsDir: path.join(agentDir, \"agents\"),\n progressFile: path.join(agentDir, \"progress.json\"),\n progressBackupFile: path.join(agentDir, \"progress.backup.json\"),\n trophiesFile: path.join(agentDir, \"trophies.json\"),\n };\n}\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,OAAO,QAAQ;AAyBR,SAAS,cAAwB;AACtC,QAAM,WAAW,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK;AAC9C,SAAO;AAAA,IACL;AAAA,IACA,aAAa,KAAK,KAAK,UAAU,UAAU;AAAA,IAC3C,qBAAqB,KAAK,KAAK,UAAU,mBAAmB;AAAA,IAC5D,cAAc,KAAK,KAAK,UAAU,WAAW;AAAA,IAC7C,cAAc,KAAK,KAAK,UAAU,eAAe;AAAA,IACjD,UAAU,KAAK,KAAK,UAAU,WAAW;AAAA,IACzC,cAAc,KAAK,KAAK,UAAU,eAAe;AAAA,IACjD,eAAe,KAAK,KAAK,UAAU,iBAAiB;AAAA,IACpD,SAAS,KAAK,KAAK,UAAU,UAAU;AAAA,IACvC,aAAa,KAAK,KAAK,UAAU,eAAe;AAAA,IAChD,gBAAgB,KAAK,KAAK,UAAU,kBAAkB;AAAA,IACtD,SAAS,KAAK,KAAK,UAAU,WAAW;AAAA,IACxC,WAAW,KAAK,KAAK,UAAU,QAAQ;AAAA,IACvC,eAAe,KAAK,KAAK,UAAU,YAAY;AAAA,IAC/C,WAAW,KAAK,KAAK,UAAU,QAAQ;AAAA,IACvC,cAAc,KAAK,KAAK,UAAU,eAAe;AAAA,IACjD,oBAAoB,KAAK,KAAK,UAAU,sBAAsB;AAAA,IAC9D,cAAc,KAAK,KAAK,UAAU,eAAe;AAAA,EACnD;AACF;","names":[]}
|