@kaitranntt/ccs 5.20.0 → 6.0.0-dev.2

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.
Files changed (76) hide show
  1. package/README.md +39 -0
  2. package/VERSION +1 -1
  3. package/dist/ccs.js +9 -1
  4. package/dist/ccs.js.map +1 -1
  5. package/dist/cliproxy/account-manager.d.ts.map +1 -1
  6. package/dist/cliproxy/account-manager.js +3 -1
  7. package/dist/cliproxy/account-manager.js.map +1 -1
  8. package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -1
  9. package/dist/cliproxy/cliproxy-executor.js +145 -76
  10. package/dist/cliproxy/cliproxy-executor.js.map +1 -1
  11. package/dist/cliproxy/session-tracker.d.ts +54 -0
  12. package/dist/cliproxy/session-tracker.d.ts.map +1 -0
  13. package/dist/cliproxy/session-tracker.js +228 -0
  14. package/dist/cliproxy/session-tracker.js.map +1 -0
  15. package/dist/cliproxy/stats-fetcher.d.ts +19 -0
  16. package/dist/cliproxy/stats-fetcher.d.ts.map +1 -1
  17. package/dist/cliproxy/stats-fetcher.js +41 -3
  18. package/dist/cliproxy/stats-fetcher.js.map +1 -1
  19. package/dist/config/unified-config-loader.d.ts +33 -0
  20. package/dist/config/unified-config-loader.d.ts.map +1 -1
  21. package/dist/config/unified-config-loader.js +105 -3
  22. package/dist/config/unified-config-loader.js.map +1 -1
  23. package/dist/config/unified-config-types.d.ts +75 -1
  24. package/dist/config/unified-config-types.d.ts.map +1 -1
  25. package/dist/config/unified-config-types.js +21 -1
  26. package/dist/config/unified-config-types.js.map +1 -1
  27. package/dist/ui/assets/{accounts-achdtDUJ.js → accounts-BfRSUzvC.js} +1 -1
  28. package/dist/ui/assets/{analytics-BVlC8Y7-.js → analytics-ClDxRP9x.js} +34 -34
  29. package/dist/ui/assets/api-DyJHhCv0.js +1 -0
  30. package/dist/ui/assets/card-CrGAcUkx.js +1 -0
  31. package/dist/ui/assets/cliproxy-Zr4pFy6O.js +1 -0
  32. package/dist/ui/assets/cliproxy-control-panel-Cu7DgEPx.js +1 -0
  33. package/dist/ui/assets/code-editor-D0YjMRQO.js +2 -0
  34. package/dist/ui/assets/{form-utils-DKkU3nz7.js → form-utils-CKETQmt9.js} +1 -1
  35. package/dist/ui/assets/{health-Xbq8eUat.js → health-Rretog4H.js} +1 -1
  36. package/dist/ui/assets/icons-D6DaLbNh.js +1 -0
  37. package/dist/ui/assets/index-B2PFll-u.js +46 -0
  38. package/dist/ui/assets/index-DTVwRqgB.css +1 -0
  39. package/dist/ui/assets/providers/iflow.png +0 -0
  40. package/dist/ui/assets/{radix-ui-OFtPgiRV.js → radix-ui-Bhyw9pC9.js} +2 -2
  41. package/dist/ui/assets/{react-vendor-CjrBBxxX.js → react-vendor-DadlvKzT.js} +1 -1
  42. package/dist/ui/assets/settings-B7OFU9lZ.js +1 -0
  43. package/dist/ui/assets/shared-qGCa7mu2.js +1 -0
  44. package/dist/ui/assets/{tanstack-DMWkeNzM.js → tanstack-DZ3a6J0N.js} +1 -1
  45. package/dist/ui/index.html +7 -7
  46. package/dist/utils/shell-executor.d.ts.map +1 -1
  47. package/dist/utils/shell-executor.js +6 -1
  48. package/dist/utils/shell-executor.js.map +1 -1
  49. package/dist/utils/websearch-manager.d.ts +197 -0
  50. package/dist/utils/websearch-manager.d.ts.map +1 -0
  51. package/dist/utils/websearch-manager.js +685 -0
  52. package/dist/utils/websearch-manager.js.map +1 -0
  53. package/dist/web-server/health-service.d.ts.map +1 -1
  54. package/dist/web-server/health-service.js +50 -0
  55. package/dist/web-server/health-service.js.map +1 -1
  56. package/dist/web-server/routes.d.ts.map +1 -1
  57. package/dist/web-server/routes.js +169 -1
  58. package/dist/web-server/routes.js.map +1 -1
  59. package/dist/web-server/shutdown.d.ts +4 -4
  60. package/dist/web-server/shutdown.d.ts.map +1 -1
  61. package/dist/web-server/shutdown.js +9 -17
  62. package/dist/web-server/shutdown.js.map +1 -1
  63. package/lib/hooks/block-websearch.cjs +75 -0
  64. package/lib/hooks/websearch-transformer.cjs +600 -0
  65. package/package.json +2 -1
  66. package/scripts/dev-install.sh +57 -5
  67. package/scripts/preinstall.js +59 -0
  68. package/dist/ui/assets/api-BwWsFLoC.js +0 -1
  69. package/dist/ui/assets/cliproxy-DuaxYcVk.js +0 -1
  70. package/dist/ui/assets/cliproxy-control-panel-DTiBzA5u.js +0 -1
  71. package/dist/ui/assets/code-editor-D7CYoILm.js +0 -36
  72. package/dist/ui/assets/icons-Alnq4BWm.js +0 -1
  73. package/dist/ui/assets/index-B1gvMo-b.css +0 -1
  74. package/dist/ui/assets/index-C2RMogI8.js +0 -12
  75. package/dist/ui/assets/settings-95g3F5Gk.js +0 -1
  76. package/dist/ui/assets/shared-Cg5XjdQM.js +0 -1
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.execClaude = exports.escapeShellArg = void 0;
9
9
  const child_process_1 = require("child_process");
10
10
  const error_manager_1 = require("./error-manager");
11
+ const websearch_manager_1 = require("./websearch-manager");
11
12
  /**
12
13
  * Escape arguments for shell execution (Windows compatibility)
13
14
  */
@@ -21,8 +22,12 @@ exports.escapeShellArg = escapeShellArg;
21
22
  function execClaude(claudeCli, args, envVars = null) {
22
23
  const isWindows = process.platform === 'win32';
23
24
  const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(claudeCli);
25
+ // Get WebSearch hook config env vars
26
+ const webSearchEnv = (0, websearch_manager_1.getWebSearchHookEnv)();
24
27
  // Prepare environment (merge with process.env if envVars provided)
25
- const env = envVars ? { ...process.env, ...envVars } : process.env;
28
+ const env = envVars
29
+ ? { ...process.env, ...envVars, ...webSearchEnv }
30
+ : { ...process.env, ...webSearchEnv };
26
31
  let child;
27
32
  if (needsShell) {
28
33
  // When shell needed: concatenate into string to avoid DEP0190 warning
@@ -1 +1 @@
1
- {"version":3,"file":"shell-executor.js","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAoD;AACpD,mDAA+C;AAE/C;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC;AAFD,wCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,SAAiB,EACjB,IAAc,EACd,UAAoC,IAAI;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpE,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAEnE,IAAI,KAAmB,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YACvB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAwB,CAAC,CAAC;;YAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,4BAAY,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAvCD,gCAuCC"}
1
+ {"version":3,"file":"shell-executor.js","sourceRoot":"","sources":["../../src/utils/shell-executor.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iDAAoD;AACpD,mDAA+C;AAC/C,2DAA0D;AAE1D;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AACrD,CAAC;AAFD,wCAEC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,SAAiB,EACjB,IAAc,EACd,UAAoC,IAAI;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,UAAU,GAAG,SAAS,IAAI,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpE,qCAAqC;IACrC,MAAM,YAAY,GAAG,IAAA,uCAAmB,GAAE,CAAC;IAE3C,mEAAmE;IACnE,MAAM,GAAG,GAAG,OAAO;QACjB,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE;QACjD,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAExC,IAAI,KAAmB,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE;YACvB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,KAAK,GAAG,IAAA,qBAAK,EAAC,SAAS,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,IAAI;YACjB,GAAG;SACJ,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAwB,CAAC,CAAC;;YAC3D,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,4BAAY,CAAC,kBAAkB,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AA5CD,gCA4CC"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * WebSearch Manager - Manages WebSearch hook for CCS
3
+ *
4
+ * WebSearch is a server-side tool executed by Anthropic's API.
5
+ * Third-party providers (gemini, agy, codex, qwen) don't have access.
6
+ * This manager installs a hook that uses CLI tools (Gemini CLI) as fallback.
7
+ *
8
+ * Simplified Architecture:
9
+ * - No MCP complexity
10
+ * - Uses CLI tools (currently Gemini CLI)
11
+ * - Easy to extend for future CLI tools (opencode, etc.)
12
+ *
13
+ * @module utils/websearch-manager
14
+ */
15
+ /**
16
+ * Gemini CLI installation status
17
+ */
18
+ export interface GeminiCliStatus {
19
+ installed: boolean;
20
+ path: string | null;
21
+ version: string | null;
22
+ }
23
+ /**
24
+ * Check if Gemini CLI is installed globally
25
+ *
26
+ * Requires global install: `npm install -g @google/gemini-cli`
27
+ * No npx fallback - must be in PATH
28
+ *
29
+ * @returns Gemini CLI status with path and version
30
+ */
31
+ export declare function getGeminiCliStatus(): GeminiCliStatus;
32
+ /**
33
+ * Check if Gemini CLI is available (quick boolean check)
34
+ */
35
+ export declare function hasGeminiCli(): boolean;
36
+ /**
37
+ * Clear Gemini CLI cache (for testing or after installation)
38
+ */
39
+ export declare function clearGeminiCliCache(): void;
40
+ /**
41
+ * Grok CLI installation status
42
+ */
43
+ export interface GrokCliStatus {
44
+ installed: boolean;
45
+ path: string | null;
46
+ version: string | null;
47
+ }
48
+ /**
49
+ * Check if Grok CLI is installed globally
50
+ *
51
+ * Grok CLI (grok-4-cli by lalomorales22) provides web search + X search.
52
+ * Requires: `npm install -g grok-cli` and XAI_API_KEY env var.
53
+ *
54
+ * @returns Grok CLI status with path and version
55
+ */
56
+ export declare function getGrokCliStatus(): GrokCliStatus;
57
+ /**
58
+ * Check if Grok CLI is available (quick boolean check)
59
+ */
60
+ export declare function hasGrokCli(): boolean;
61
+ /**
62
+ * Clear Grok CLI cache (for testing or after installation)
63
+ */
64
+ export declare function clearGrokCliCache(): void;
65
+ /**
66
+ * OpenCode CLI installation status
67
+ */
68
+ export interface OpenCodeCliStatus {
69
+ installed: boolean;
70
+ path: string | null;
71
+ version: string | null;
72
+ }
73
+ /**
74
+ * Check if OpenCode CLI is installed globally
75
+ *
76
+ * OpenCode provides built-in web search via opencode/grok-code model.
77
+ * Install: curl -fsSL https://opencode.ai/install | bash
78
+ *
79
+ * @returns OpenCode CLI status with path and version
80
+ */
81
+ export declare function getOpenCodeCliStatus(): OpenCodeCliStatus;
82
+ /**
83
+ * Check if OpenCode CLI is available (quick boolean check)
84
+ */
85
+ export declare function hasOpenCodeCli(): boolean;
86
+ /**
87
+ * Clear OpenCode CLI cache (for testing or after installation)
88
+ */
89
+ export declare function clearOpenCodeCliCache(): void;
90
+ /**
91
+ * Clear all CLI caches
92
+ */
93
+ export declare function clearAllCliCaches(): void;
94
+ /**
95
+ * WebSearch CLI provider information for health checks and UI
96
+ */
97
+ export interface WebSearchCliInfo {
98
+ /** Provider ID */
99
+ id: 'gemini' | 'grok' | 'opencode';
100
+ /** Display name */
101
+ name: string;
102
+ /** CLI command name */
103
+ command: string;
104
+ /** Whether CLI is installed */
105
+ installed: boolean;
106
+ /** CLI version if installed */
107
+ version: string | null;
108
+ /** Install command */
109
+ installCommand: string;
110
+ /** Docs URL */
111
+ docsUrl: string;
112
+ /** Whether this provider requires an API key */
113
+ requiresApiKey: boolean;
114
+ /** API key environment variable name */
115
+ apiKeyEnvVar?: string;
116
+ /** Brief description */
117
+ description: string;
118
+ /** Free tier available? */
119
+ freeTier: boolean;
120
+ }
121
+ /**
122
+ * Get all WebSearch CLI providers with their status
123
+ */
124
+ export declare function getWebSearchCliProviders(): WebSearchCliInfo[];
125
+ /**
126
+ * Check if any WebSearch CLI is available
127
+ */
128
+ export declare function hasAnyWebSearchCli(): boolean;
129
+ /**
130
+ * Get install hints for CLI-only users when no WebSearch CLI is installed
131
+ */
132
+ export declare function getCliInstallHints(): string[];
133
+ /**
134
+ * Install WebSearch hook to ~/.ccs/hooks/
135
+ *
136
+ * This hook intercepts WebSearch and executes via Gemini CLI.
137
+ *
138
+ * @returns true if hook installed successfully
139
+ */
140
+ export declare function installWebSearchHook(): boolean;
141
+ /**
142
+ * Check if WebSearch hook is installed
143
+ */
144
+ export declare function hasWebSearchHook(): boolean;
145
+ /**
146
+ * Get WebSearch hook configuration for settings.json
147
+ * Timeout is computed from max provider timeout in config.yaml + buffer
148
+ */
149
+ export declare function getWebSearchHookConfig(): Record<string, unknown>;
150
+ /**
151
+ * Get environment variables for WebSearch hook configuration.
152
+ *
153
+ * Simple env vars - hook reads these to control behavior.
154
+ *
155
+ * @returns Record of environment variables to set before spawning Claude
156
+ */
157
+ export declare function getWebSearchHookEnv(): Record<string, string>;
158
+ /**
159
+ * WebSearch availability status for third-party profiles
160
+ */
161
+ export type WebSearchReadiness = 'ready' | 'unavailable';
162
+ /**
163
+ * WebSearch status for display
164
+ */
165
+ export interface WebSearchStatus {
166
+ readiness: WebSearchReadiness;
167
+ geminiCli: boolean;
168
+ grokCli: boolean;
169
+ opencodeCli: boolean;
170
+ message: string;
171
+ }
172
+ /**
173
+ * Get WebSearch readiness status for display
174
+ *
175
+ * Called on third-party profile startup to inform user.
176
+ */
177
+ export declare function getWebSearchReadiness(): WebSearchStatus;
178
+ /**
179
+ * Display WebSearch status (single line, equilibrium UX)
180
+ *
181
+ * Only call for third-party profiles.
182
+ * Shows detailed install hints when no CLI is installed.
183
+ */
184
+ export declare function displayWebSearchStatus(): void;
185
+ /**
186
+ * @deprecated Use installWebSearchHook instead - MCP is no longer used
187
+ */
188
+ export declare function ensureMcpWebSearch(): boolean;
189
+ /**
190
+ * @deprecated MCP is no longer used
191
+ */
192
+ export declare function hasMcpWebSearch(): boolean;
193
+ /**
194
+ * @deprecated MCP is no longer used
195
+ */
196
+ export declare function getMcpConfigPath(): string;
197
+ //# sourceMappingURL=websearch-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websearch-manager.d.ts","sourceRoot":"","sources":["../../src/utils/websearch-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA0BH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAgDpD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAgDhD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAID;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAKD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CAgDxD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAID;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,EAAE,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACnC,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,gBAAgB,EAAE,CA4C7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAW7C;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CA4D9C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkChE;AA6GD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgD5D;AAID;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CA0CvD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C;AAKD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}