@astroanywhere/agent 0.1.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.
Files changed (203) hide show
  1. package/LICENSE +76 -0
  2. package/README.md +178 -0
  3. package/dist/cli.d.ts +15 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +401 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/index.d.ts +9 -0
  8. package/dist/commands/index.d.ts.map +1 -0
  9. package/dist/commands/index.js +9 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/commands/mcp.d.ts +16 -0
  12. package/dist/commands/mcp.d.ts.map +1 -0
  13. package/dist/commands/mcp.js +19 -0
  14. package/dist/commands/mcp.js.map +1 -0
  15. package/dist/commands/setup.d.ts +20 -0
  16. package/dist/commands/setup.d.ts.map +1 -0
  17. package/dist/commands/setup.js +585 -0
  18. package/dist/commands/setup.js.map +1 -0
  19. package/dist/commands/start.d.ts +16 -0
  20. package/dist/commands/start.d.ts.map +1 -0
  21. package/dist/commands/start.js +638 -0
  22. package/dist/commands/start.js.map +1 -0
  23. package/dist/commands/status.d.ts +5 -0
  24. package/dist/commands/status.d.ts.map +1 -0
  25. package/dist/commands/status.js +63 -0
  26. package/dist/commands/status.js.map +1 -0
  27. package/dist/commands/stop.d.ts +5 -0
  28. package/dist/commands/stop.d.ts.map +1 -0
  29. package/dist/commands/stop.js +85 -0
  30. package/dist/commands/stop.js.map +1 -0
  31. package/dist/execution/direct-strategy.d.ts +18 -0
  32. package/dist/execution/direct-strategy.d.ts.map +1 -0
  33. package/dist/execution/direct-strategy.js +156 -0
  34. package/dist/execution/direct-strategy.js.map +1 -0
  35. package/dist/execution/docker-strategy.d.ts +26 -0
  36. package/dist/execution/docker-strategy.d.ts.map +1 -0
  37. package/dist/execution/docker-strategy.js +222 -0
  38. package/dist/execution/docker-strategy.js.map +1 -0
  39. package/dist/execution/index.d.ts +14 -0
  40. package/dist/execution/index.d.ts.map +1 -0
  41. package/dist/execution/index.js +13 -0
  42. package/dist/execution/index.js.map +1 -0
  43. package/dist/execution/kubernetes-exec-strategy.d.ts +23 -0
  44. package/dist/execution/kubernetes-exec-strategy.d.ts.map +1 -0
  45. package/dist/execution/kubernetes-exec-strategy.js +232 -0
  46. package/dist/execution/kubernetes-exec-strategy.js.map +1 -0
  47. package/dist/execution/registry.d.ts +41 -0
  48. package/dist/execution/registry.d.ts.map +1 -0
  49. package/dist/execution/registry.js +84 -0
  50. package/dist/execution/registry.js.map +1 -0
  51. package/dist/execution/slurm-strategy.d.ts +22 -0
  52. package/dist/execution/slurm-strategy.d.ts.map +1 -0
  53. package/dist/execution/slurm-strategy.js +219 -0
  54. package/dist/execution/slurm-strategy.js.map +1 -0
  55. package/dist/execution/types.d.ts +72 -0
  56. package/dist/execution/types.d.ts.map +1 -0
  57. package/dist/execution/types.js +10 -0
  58. package/dist/execution/types.js.map +1 -0
  59. package/dist/index.d.ts +22 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +22 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/lib/api-client.d.ts +35 -0
  64. package/dist/lib/api-client.d.ts.map +1 -0
  65. package/dist/lib/api-client.js +126 -0
  66. package/dist/lib/api-client.js.map +1 -0
  67. package/dist/lib/config.d.ts +174 -0
  68. package/dist/lib/config.d.ts.map +1 -0
  69. package/dist/lib/config.js +399 -0
  70. package/dist/lib/config.js.map +1 -0
  71. package/dist/lib/copy-worktree.d.ts +73 -0
  72. package/dist/lib/copy-worktree.d.ts.map +1 -0
  73. package/dist/lib/copy-worktree.js +374 -0
  74. package/dist/lib/copy-worktree.js.map +1 -0
  75. package/dist/lib/git-pr.d.ts +63 -0
  76. package/dist/lib/git-pr.d.ts.map +1 -0
  77. package/dist/lib/git-pr.js +224 -0
  78. package/dist/lib/git-pr.js.map +1 -0
  79. package/dist/lib/hardware-id.d.ts +25 -0
  80. package/dist/lib/hardware-id.d.ts.map +1 -0
  81. package/dist/lib/hardware-id.js +186 -0
  82. package/dist/lib/hardware-id.js.map +1 -0
  83. package/dist/lib/hpc-context.d.ts +35 -0
  84. package/dist/lib/hpc-context.d.ts.map +1 -0
  85. package/dist/lib/hpc-context.js +167 -0
  86. package/dist/lib/hpc-context.js.map +1 -0
  87. package/dist/lib/prompt-templates.d.ts +195 -0
  88. package/dist/lib/prompt-templates.d.ts.map +1 -0
  89. package/dist/lib/prompt-templates.js +353 -0
  90. package/dist/lib/prompt-templates.js.map +1 -0
  91. package/dist/lib/providers.d.ts +27 -0
  92. package/dist/lib/providers.d.ts.map +1 -0
  93. package/dist/lib/providers.js +372 -0
  94. package/dist/lib/providers.js.map +1 -0
  95. package/dist/lib/repo-context.d.ts +18 -0
  96. package/dist/lib/repo-context.d.ts.map +1 -0
  97. package/dist/lib/repo-context.js +61 -0
  98. package/dist/lib/repo-context.js.map +1 -0
  99. package/dist/lib/repo-utils.d.ts +35 -0
  100. package/dist/lib/repo-utils.d.ts.map +1 -0
  101. package/dist/lib/repo-utils.js +222 -0
  102. package/dist/lib/repo-utils.js.map +1 -0
  103. package/dist/lib/resources.d.ts +17 -0
  104. package/dist/lib/resources.d.ts.map +1 -0
  105. package/dist/lib/resources.js +227 -0
  106. package/dist/lib/resources.js.map +1 -0
  107. package/dist/lib/slurm-detect.d.ts +15 -0
  108. package/dist/lib/slurm-detect.d.ts.map +1 -0
  109. package/dist/lib/slurm-detect.js +148 -0
  110. package/dist/lib/slurm-detect.js.map +1 -0
  111. package/dist/lib/slurm-executor.d.ts +70 -0
  112. package/dist/lib/slurm-executor.d.ts.map +1 -0
  113. package/dist/lib/slurm-executor.js +402 -0
  114. package/dist/lib/slurm-executor.js.map +1 -0
  115. package/dist/lib/slurm-job-monitor.d.ts +52 -0
  116. package/dist/lib/slurm-job-monitor.d.ts.map +1 -0
  117. package/dist/lib/slurm-job-monitor.js +212 -0
  118. package/dist/lib/slurm-job-monitor.js.map +1 -0
  119. package/dist/lib/ssh-discovery.d.ts +17 -0
  120. package/dist/lib/ssh-discovery.d.ts.map +1 -0
  121. package/dist/lib/ssh-discovery.js +287 -0
  122. package/dist/lib/ssh-discovery.js.map +1 -0
  123. package/dist/lib/ssh-installer.d.ts +69 -0
  124. package/dist/lib/ssh-installer.d.ts.map +1 -0
  125. package/dist/lib/ssh-installer.js +230 -0
  126. package/dist/lib/ssh-installer.js.map +1 -0
  127. package/dist/lib/streaming-prompt.d.ts +48 -0
  128. package/dist/lib/streaming-prompt.d.ts.map +1 -0
  129. package/dist/lib/streaming-prompt.js +91 -0
  130. package/dist/lib/streaming-prompt.js.map +1 -0
  131. package/dist/lib/task-executor.d.ts +114 -0
  132. package/dist/lib/task-executor.d.ts.map +1 -0
  133. package/dist/lib/task-executor.js +753 -0
  134. package/dist/lib/task-executor.js.map +1 -0
  135. package/dist/lib/websocket-client.d.ts +200 -0
  136. package/dist/lib/websocket-client.d.ts.map +1 -0
  137. package/dist/lib/websocket-client.js +781 -0
  138. package/dist/lib/websocket-client.js.map +1 -0
  139. package/dist/lib/workdir-safety.d.ts +63 -0
  140. package/dist/lib/workdir-safety.d.ts.map +1 -0
  141. package/dist/lib/workdir-safety.js +247 -0
  142. package/dist/lib/workdir-safety.js.map +1 -0
  143. package/dist/lib/worktree-include.d.ts +14 -0
  144. package/dist/lib/worktree-include.d.ts.map +1 -0
  145. package/dist/lib/worktree-include.js +68 -0
  146. package/dist/lib/worktree-include.js.map +1 -0
  147. package/dist/lib/worktree-setup.d.ts +18 -0
  148. package/dist/lib/worktree-setup.d.ts.map +1 -0
  149. package/dist/lib/worktree-setup.js +60 -0
  150. package/dist/lib/worktree-setup.js.map +1 -0
  151. package/dist/lib/worktree.d.ts +37 -0
  152. package/dist/lib/worktree.d.ts.map +1 -0
  153. package/dist/lib/worktree.js +411 -0
  154. package/dist/lib/worktree.js.map +1 -0
  155. package/dist/mcp/index.d.ts +8 -0
  156. package/dist/mcp/index.d.ts.map +1 -0
  157. package/dist/mcp/index.js +8 -0
  158. package/dist/mcp/index.js.map +1 -0
  159. package/dist/mcp/server.d.ts +45 -0
  160. package/dist/mcp/server.d.ts.map +1 -0
  161. package/dist/mcp/server.js +153 -0
  162. package/dist/mcp/server.js.map +1 -0
  163. package/dist/mcp/session-bridge.d.ts +87 -0
  164. package/dist/mcp/session-bridge.d.ts.map +1 -0
  165. package/dist/mcp/session-bridge.js +317 -0
  166. package/dist/mcp/session-bridge.js.map +1 -0
  167. package/dist/mcp/tools.d.ts +70 -0
  168. package/dist/mcp/tools.d.ts.map +1 -0
  169. package/dist/mcp/tools.js +234 -0
  170. package/dist/mcp/tools.js.map +1 -0
  171. package/dist/mcp/types.d.ts +197 -0
  172. package/dist/mcp/types.d.ts.map +1 -0
  173. package/dist/mcp/types.js +16 -0
  174. package/dist/mcp/types.js.map +1 -0
  175. package/dist/providers/base-adapter.d.ts +56 -0
  176. package/dist/providers/base-adapter.d.ts.map +1 -0
  177. package/dist/providers/base-adapter.js +5 -0
  178. package/dist/providers/base-adapter.js.map +1 -0
  179. package/dist/providers/claude-code-adapter.d.ts +27 -0
  180. package/dist/providers/claude-code-adapter.d.ts.map +1 -0
  181. package/dist/providers/claude-code-adapter.js +298 -0
  182. package/dist/providers/claude-code-adapter.js.map +1 -0
  183. package/dist/providers/claude-sdk-adapter.d.ts +60 -0
  184. package/dist/providers/claude-sdk-adapter.d.ts.map +1 -0
  185. package/dist/providers/claude-sdk-adapter.js +632 -0
  186. package/dist/providers/claude-sdk-adapter.js.map +1 -0
  187. package/dist/providers/codex-adapter.d.ts +21 -0
  188. package/dist/providers/codex-adapter.d.ts.map +1 -0
  189. package/dist/providers/codex-adapter.js +197 -0
  190. package/dist/providers/codex-adapter.js.map +1 -0
  191. package/dist/providers/index.d.ts +26 -0
  192. package/dist/providers/index.d.ts.map +1 -0
  193. package/dist/providers/index.js +58 -0
  194. package/dist/providers/index.js.map +1 -0
  195. package/dist/providers/slurm-adapter.d.ts +26 -0
  196. package/dist/providers/slurm-adapter.d.ts.map +1 -0
  197. package/dist/providers/slurm-adapter.js +146 -0
  198. package/dist/providers/slurm-adapter.js.map +1 -0
  199. package/dist/types.d.ts +592 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/types.js +5 -0
  202. package/dist/types.js.map +1 -0
  203. package/package.json +77 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * HTTP client for device auth using native fetch (Node 18+)
3
+ */
4
+ export class DeviceAuthApiError extends Error {
5
+ code;
6
+ statusCode;
7
+ constructor(message, code, statusCode) {
8
+ super(message);
9
+ this.code = code;
10
+ this.statusCode = statusCode;
11
+ this.name = 'DeviceAuthApiError';
12
+ }
13
+ }
14
+ // ============================================================================
15
+ // API functions
16
+ // ============================================================================
17
+ /**
18
+ * Request a device authorization code from the backend.
19
+ * POST /api/device/authorize
20
+ */
21
+ export async function requestDeviceCode(apiUrl, machineInfo) {
22
+ let res;
23
+ try {
24
+ res = await fetch(`${apiUrl}/api/device/authorize`, {
25
+ method: 'POST',
26
+ headers: { 'Content-Type': 'application/json' },
27
+ body: JSON.stringify({
28
+ scopes: ['machine:connect', 'machine:execute', 'machine:read'],
29
+ machineInfo,
30
+ }),
31
+ });
32
+ }
33
+ catch (err) {
34
+ throw new DeviceAuthApiError(`Cannot reach API server at ${apiUrl}: ${err.message}`, 'network');
35
+ }
36
+ if (!res.ok) {
37
+ const body = await res.text();
38
+ throw new DeviceAuthApiError(`Device authorize request failed (${res.status}): ${body}`, 'server_error', res.status);
39
+ }
40
+ return (await res.json());
41
+ }
42
+ /**
43
+ * Poll the backend until the user authorizes (or denies/expires).
44
+ * POST /api/device/token
45
+ *
46
+ * Handles RFC 8628 states:
47
+ * authorization_pending → keep polling
48
+ * slow_down → increase interval +5s
49
+ * access_denied → throw
50
+ * expired_token → throw
51
+ */
52
+ export async function pollForToken(apiUrl, userCode, intervalSec, timeoutSec) {
53
+ const deadline = Date.now() + timeoutSec * 1000;
54
+ let currentInterval = intervalSec;
55
+ while (Date.now() < deadline) {
56
+ // Wait before polling
57
+ await sleep(currentInterval * 1000);
58
+ let res;
59
+ try {
60
+ res = await fetch(`${apiUrl}/api/device/token`, {
61
+ method: 'POST',
62
+ headers: { 'Content-Type': 'application/json' },
63
+ body: JSON.stringify({
64
+ userCode,
65
+ grantType: 'urn:ietf:params:oauth:grant-type:device_code',
66
+ }),
67
+ });
68
+ }
69
+ catch (err) {
70
+ throw new DeviceAuthApiError(`Cannot reach API server while polling: ${err.message}`, 'network');
71
+ }
72
+ // Success → 200
73
+ if (res.ok) {
74
+ return (await res.json());
75
+ }
76
+ // Error → parse RFC 8628 error body
77
+ const body = (await res.json());
78
+ switch (body.error) {
79
+ case 'authorization_pending':
80
+ // Keep polling
81
+ continue;
82
+ case 'slow_down':
83
+ currentInterval += 5;
84
+ continue;
85
+ case 'access_denied':
86
+ throw new DeviceAuthApiError('User denied authorization', 'denied', res.status);
87
+ case 'expired_token':
88
+ throw new DeviceAuthApiError('Device code expired', 'expired', res.status);
89
+ default:
90
+ throw new DeviceAuthApiError(`Unexpected error: ${body.error} — ${body.errorDescription}`, 'server_error', res.status);
91
+ }
92
+ }
93
+ throw new DeviceAuthApiError('Polling timed out waiting for authorization', 'timeout');
94
+ }
95
+ /**
96
+ * Register an authenticated machine with the backend.
97
+ * POST /api/device/register (Bearer token)
98
+ */
99
+ export async function registerMachine(apiUrl, accessToken, machineInfo) {
100
+ let res;
101
+ try {
102
+ res = await fetch(`${apiUrl}/api/device/register`, {
103
+ method: 'POST',
104
+ headers: {
105
+ 'Content-Type': 'application/json',
106
+ Authorization: `Bearer ${accessToken}`,
107
+ },
108
+ body: JSON.stringify({ machineInfo }),
109
+ });
110
+ }
111
+ catch (err) {
112
+ throw new DeviceAuthApiError(`Cannot reach API server for registration: ${err.message}`, 'network');
113
+ }
114
+ if (!res.ok) {
115
+ const body = await res.text();
116
+ throw new DeviceAuthApiError(`Machine registration failed (${res.status}): ${body}`, 'server_error', res.status);
117
+ }
118
+ return (await res.json());
119
+ }
120
+ // ============================================================================
121
+ // Helpers
122
+ // ============================================================================
123
+ function sleep(ms) {
124
+ return new Promise((resolve) => setTimeout(resolve, ms));
125
+ }
126
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Configuration management using conf (electron-conf compatible)
3
+ */
4
+ import type { StoredConfig, ProviderType, DiscoveredHost } from '../types.js';
5
+ declare class ConfigManager {
6
+ private conf;
7
+ constructor();
8
+ /**
9
+ * Check if initial setup has been completed
10
+ */
11
+ isSetupComplete(): boolean;
12
+ /**
13
+ * Get all stored configuration
14
+ */
15
+ getConfig(): StoredConfig & {
16
+ apiUrl: string;
17
+ accessToken?: string;
18
+ refreshToken?: string;
19
+ wsToken?: string;
20
+ };
21
+ /**
22
+ * Get runner ID, generating one if not set
23
+ */
24
+ getRunnerId(): string;
25
+ /**
26
+ * Initialize machine ID using hardware-based identifier
27
+ * Should be called during setup - async operation
28
+ */
29
+ initializeMachineId(): Promise<{
30
+ id: string;
31
+ source: 'uuid' | 'mac' | 'random';
32
+ }>;
33
+ /**
34
+ * Get machine ID (synchronous)
35
+ * Returns existing ID or generates a temporary one if not initialized
36
+ * Call initializeMachineId() during setup for proper hardware-based ID
37
+ */
38
+ getMachineId(): string;
39
+ /**
40
+ * Get machine display name (e.g., SSH alias like "nebius-2")
41
+ */
42
+ getMachineName(): string | undefined;
43
+ /**
44
+ * Set machine display name
45
+ */
46
+ setMachineName(name: string): void;
47
+ /**
48
+ * Get relay URL.
49
+ * Returns stored value unless it's the hardcoded default, in which case
50
+ * env-based resolution takes precedence (allows mode switching without re-setup).
51
+ */
52
+ getRelayUrl(): string;
53
+ /**
54
+ * Set relay URL
55
+ */
56
+ setRelayUrl(url: string): void;
57
+ /**
58
+ * Get API URL.
59
+ * Returns stored value unless it's the hardcoded default, in which case
60
+ * env-based resolution takes precedence (allows mode switching without re-setup).
61
+ */
62
+ getApiUrl(): string;
63
+ /**
64
+ * Set API URL
65
+ */
66
+ setApiUrl(url: string): void;
67
+ /**
68
+ * Get access token
69
+ */
70
+ getAccessToken(): string | undefined;
71
+ /**
72
+ * Set access token
73
+ * Validates token format to prevent storing invalid values
74
+ */
75
+ setAccessToken(token: string): void;
76
+ /**
77
+ * Get refresh token
78
+ */
79
+ getRefreshToken(): string | undefined;
80
+ /**
81
+ * Set refresh token
82
+ * Validates token format to prevent storing invalid values
83
+ */
84
+ setRefreshToken(token: string): void;
85
+ /**
86
+ * Get WebSocket token
87
+ */
88
+ getWsToken(): string | undefined;
89
+ /**
90
+ * Set WebSocket token
91
+ * Validates token format to prevent storing invalid values
92
+ */
93
+ setWsToken(token: string): void;
94
+ /**
95
+ * Get Claude OAuth token (from `claude setup-token`)
96
+ */
97
+ getClaudeOauthToken(): string | undefined;
98
+ /**
99
+ * Set Claude OAuth token
100
+ */
101
+ setClaudeOauthToken(token: string): void;
102
+ /**
103
+ * Clear Claude OAuth token
104
+ */
105
+ clearClaudeOauthToken(): void;
106
+ /**
107
+ * Set machine ID (e.g., from backend registration response)
108
+ * Validates ID to prevent storing invalid values
109
+ */
110
+ setMachineId(id: string): void;
111
+ /**
112
+ * Get device token
113
+ */
114
+ getDeviceToken(): string | undefined;
115
+ /**
116
+ * Set device token
117
+ */
118
+ setDeviceToken(token: string): void;
119
+ /**
120
+ * Get configured providers
121
+ */
122
+ getProviders(): ProviderType[];
123
+ /**
124
+ * Set configured providers
125
+ */
126
+ setProviders(providers: ProviderType[]): void;
127
+ /**
128
+ * Get auto-start setting
129
+ */
130
+ getAutoStart(): boolean;
131
+ /**
132
+ * Set auto-start setting
133
+ */
134
+ setAutoStart(autoStart: boolean): void;
135
+ /**
136
+ * Get log level
137
+ */
138
+ getLogLevel(): 'debug' | 'info' | 'warn' | 'error';
139
+ /**
140
+ * Set log level
141
+ */
142
+ setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
143
+ /**
144
+ * Update last connected timestamp
145
+ */
146
+ updateLastConnected(): void;
147
+ /**
148
+ * Get last connected timestamp
149
+ */
150
+ getLastConnected(): string | undefined;
151
+ /**
152
+ * Mark setup as complete
153
+ */
154
+ completeSetup(): void;
155
+ /**
156
+ * Get stored remote hosts (from SSH discovery + install)
157
+ */
158
+ getRemoteHosts(): DiscoveredHost[];
159
+ /**
160
+ * Set stored remote hosts
161
+ */
162
+ setRemoteHosts(hosts: DiscoveredHost[]): void;
163
+ /**
164
+ * Reset all configuration
165
+ */
166
+ reset(): void;
167
+ /**
168
+ * Get the configuration file path
169
+ */
170
+ getConfigPath(): string;
171
+ }
172
+ export declare const config: ConfigManager;
173
+ export { ConfigManager };
174
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgF9E,cAAM,aAAa;IACjB,OAAO,CAAC,IAAI,CAAqB;;IAyBjC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,SAAS,IAAI,YAAY,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAiB7G;;OAEG;IACH,WAAW,IAAI,MAAM;IASrB;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;KAAE,CAAC;IAgBvF;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAWtB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAMrB;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAMnB;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBnC;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,SAAS;IAIrC;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAmBpC;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;;OAGG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqB/B;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,qBAAqB,IAAI,IAAI;IAI7B;;;OAGG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAY9B;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;IAIpC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAI9B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IAI7C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAItC;;OAEG;IACH,WAAW,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAIlD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;IAI7D;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAI3B;;OAEG;IACH,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAItC;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;OAEG;IACH,cAAc,IAAI,cAAc,EAAE;IAIlC;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI7C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC;AAG1C,OAAO,EAAE,aAAa,EAAE,CAAC"}