@viberlabs/orchestrator 2.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 (59) hide show
  1. package/LICENSE.md +25 -0
  2. package/README.md +170 -0
  3. package/dist/core/src/db/index.d.ts +295 -0
  4. package/dist/core/src/db/index.d.ts.map +1 -0
  5. package/dist/core/src/db/index.js +1114 -0
  6. package/dist/core/src/db/index.js.map +1 -0
  7. package/dist/core/src/engine/index.d.ts +38 -0
  8. package/dist/core/src/engine/index.d.ts.map +1 -0
  9. package/dist/core/src/engine/index.js +117 -0
  10. package/dist/core/src/engine/index.js.map +1 -0
  11. package/dist/core/src/engine/sentry.d.ts +36 -0
  12. package/dist/core/src/engine/sentry.d.ts.map +1 -0
  13. package/dist/core/src/engine/sentry.js +131 -0
  14. package/dist/core/src/engine/sentry.js.map +1 -0
  15. package/dist/core/src/protocol/index.d.ts +140 -0
  16. package/dist/core/src/protocol/index.d.ts.map +1 -0
  17. package/dist/core/src/protocol/index.js +7 -0
  18. package/dist/core/src/protocol/index.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +15 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/opencode/src/index.d.ts +56 -0
  24. package/dist/opencode/src/index.d.ts.map +1 -0
  25. package/dist/opencode/src/index.js +322 -0
  26. package/dist/opencode/src/index.js.map +1 -0
  27. package/dist/orca/index.d.ts +137 -0
  28. package/dist/orca/index.d.ts.map +1 -0
  29. package/dist/orca/index.js +215 -0
  30. package/dist/orca/index.js.map +1 -0
  31. package/dist/orchestrator/src/daemon.d.ts +66 -0
  32. package/dist/orchestrator/src/daemon.d.ts.map +1 -0
  33. package/dist/orchestrator/src/daemon.js +523 -0
  34. package/dist/orchestrator/src/daemon.js.map +1 -0
  35. package/dist/orchestrator/src/index.d.ts +8 -0
  36. package/dist/orchestrator/src/index.d.ts.map +1 -0
  37. package/dist/orchestrator/src/index.js +15 -0
  38. package/dist/orchestrator/src/index.js.map +1 -0
  39. package/dist/orchestrator/src/orca/index.d.ts +137 -0
  40. package/dist/orchestrator/src/orca/index.d.ts.map +1 -0
  41. package/dist/orchestrator/src/orca/index.js +215 -0
  42. package/dist/orchestrator/src/orca/index.js.map +1 -0
  43. package/dist/orchestrator/src/pool/index.d.ts +51 -0
  44. package/dist/orchestrator/src/pool/index.d.ts.map +1 -0
  45. package/dist/orchestrator/src/pool/index.js +152 -0
  46. package/dist/orchestrator/src/pool/index.js.map +1 -0
  47. package/dist/orchestrator/src/workflow/index.d.ts +65 -0
  48. package/dist/orchestrator/src/workflow/index.d.ts.map +1 -0
  49. package/dist/orchestrator/src/workflow/index.js +148 -0
  50. package/dist/orchestrator/src/workflow/index.js.map +1 -0
  51. package/dist/pool/index.d.ts +51 -0
  52. package/dist/pool/index.d.ts.map +1 -0
  53. package/dist/pool/index.js +152 -0
  54. package/dist/pool/index.js.map +1 -0
  55. package/dist/workflow/index.d.ts +65 -0
  56. package/dist/workflow/index.d.ts.map +1 -0
  57. package/dist/workflow/index.js +148 -0
  58. package/dist/workflow/index.js.map +1 -0
  59. package/package.json +65 -0
package/LICENSE.md ADDED
@@ -0,0 +1,25 @@
1
+ # MIT License
2
+
3
+ Copyright (c) 2026 VIBER Universal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ Last Updated: 2026-03-06
package/README.md ADDED
@@ -0,0 +1,170 @@
1
+ # @viberlabs/orchestrator
2
+
3
+ Agent orchestration layer for VIBER Universal v2 - ORCA State Machine, Agent Pool, and Workflows
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @viberlabs/orchestrator
9
+ ```
10
+
11
+ ## Features
12
+
13
+ ### ORCA State Machine (`@viberlabs/orchestrator/orca`)
14
+
15
+ XState v5 state machine for orchestrating agent execution.
16
+
17
+ ```typescript
18
+ import { createOrcaMachine, Orca } from '@viberlabs/orchestrator/orca';
19
+ import { ViberDatabase } from '@viberlabs/viber-core/db';
20
+ import { FllEngine } from '@viberlabs/viber-core/engine';
21
+
22
+ const db = new ViberDatabase('.viber/state.db');
23
+ const fll = new FllEngine();
24
+
25
+ const orca = new Orca(db, fll);
26
+
27
+ // Start orchestration
28
+ await orca.start({
29
+ taskId: 'task-1',
30
+ projectId: 'project-1'
31
+ });
32
+
33
+ // Monitor state
34
+ orca.onStateChange((state) => {
35
+ console.log('State:', state.value);
36
+ console.log('Context:', state.context);
37
+ });
38
+ ```
39
+
40
+ States:
41
+ - `idle` - Waiting for task
42
+ - `validating` - FLL validation in progress
43
+ - `orchestrating` - Planning agent sequence
44
+ - `executing` - Agents running
45
+ - `reviewing` - Reviewing results
46
+ - `completed` - Task finished
47
+ - `failed` - Task failed
48
+
49
+ ### Agent Pool (`@viberlabs/orchestrator/pool`)
50
+
51
+ Manages concurrent AI agents with maximum concurrency.
52
+
53
+ ```typescript
54
+ import { AgentPool } from '@viberlabs/orchestrator/pool';
55
+ import { OpenCodeClient } from '@viberlabs/opencode';
56
+
57
+ const client = new OpenCodeClient({
58
+ baseUrl: 'http://localhost:51262',
59
+ username: 'opencode',
60
+ password: 'your-password'
61
+ });
62
+
63
+ const pool = new AgentPool({
64
+ maxConcurrent: 3,
65
+ opencodeClient: client,
66
+ db: db
67
+ });
68
+
69
+ // Spawn agent
70
+ const agentId = await pool.spawnAgent({
71
+ taskId: 'task-1',
72
+ role: 'coder',
73
+ model: 'claude-3-opus'
74
+ });
75
+
76
+ // Monitor status
77
+ const status = pool.getAgentStatus(agentId);
78
+
79
+ // Complete agent
80
+ pool.completeAgent(agentId);
81
+ ```
82
+
83
+ ### Workflows (`@viberlabs/orchestrator/workflow`)
84
+
85
+ Multi-agent workflow patterns.
86
+
87
+ ```typescript
88
+ import { WorkflowExecutor } from '@viberlabs/orchestrator/workflow';
89
+
90
+ const executor = new WorkflowExecutor({
91
+ opencodeClient: client,
92
+ db: db
93
+ });
94
+
95
+ // Sequential workflow
96
+ const results = await executor.executeSequential([
97
+ { role: 'planner', task: 'Create implementation plan' },
98
+ { role: 'coder', task: 'Implement the feature' },
99
+ { role: 'reviewer', task: 'Review the code' }
100
+ ]);
101
+
102
+ // Parallel workflow
103
+ const results = await executor.executeParallel([
104
+ { role: 'coder', task: 'Implement feature A' },
105
+ { role: 'coder', task: 'Implement feature B' },
106
+ { role: 'coder', task: 'Implement feature C' }
107
+ ]);
108
+
109
+ // Pipeline workflow
110
+ const results = await executor.executePipeline([
111
+ { role: 'planner', task: 'Plan architecture' },
112
+ { role: 'coder', task: 'Implement from plan' },
113
+ { role: 'tester', task: 'Test implementation' }
114
+ ]);
115
+
116
+ // Use workflow template
117
+ const results = await executor.executeTemplate('plan-implement-test', {
118
+ task: 'Build user authentication',
119
+ context: { feature: 'JWT auth' }
120
+ });
121
+ ```
122
+
123
+ ## Workflow Templates
124
+
125
+ Built-in workflow templates:
126
+
127
+ - `implement-review` - Coder → Reviewer
128
+ - `plan-implement` - Planner → Coder
129
+ - `plan-implement-test` - Planner → Coder → Tester
130
+ - `full-cycle` - Planner → Coder → Reviewer → Tester
131
+
132
+ ## Agent Roles
133
+
134
+ Supported agent roles:
135
+
136
+ - `planner` - Strategic analysis and planning
137
+ - `coder` - Implementation and coding
138
+ - `reviewer` - Code review and quality assurance
139
+ - `tester` - Testing and validation
140
+
141
+ ## Architecture
142
+
143
+ ```
144
+ User (CEO)
145
+
146
+ ORCA (State Machine)
147
+ ↓ Validates task with FLL
148
+ ↓ Plans agent sequence
149
+ ↓ Spawns agents via Pool
150
+ Agent Pool
151
+ ↓ Manages concurrency (max 3)
152
+ ↓ Tracks agent lifecycle
153
+ ↓ Captures results
154
+ Agents (via OpenCode API)
155
+ ↓ Execute tasks headlessly
156
+ ↓ Report results
157
+ Workflow Executor
158
+ ↓ Sequential, Parallel, Pipeline patterns
159
+ ↓ Result aggregation
160
+ ```
161
+
162
+ ## License
163
+
164
+ MIT
165
+
166
+ ## Links
167
+
168
+ - [GitHub Repository](https://github.com/viber-universal/viber-v2)
169
+ - [Documentation](https://github.com/viber-universal/viber-v2#readme)
170
+ - [Issues](https://github.com/viber-universal/viber-v2/issues)
@@ -0,0 +1,295 @@
1
+ /**
2
+ * @viberlabs/viber-core/db
3
+ * SQLite database layer for VIBER using sql.js (pure JS, no native dependencies)
4
+ *
5
+ * Features:
6
+ * - ACID transactions for atomic operations
7
+ * - WAL mode optimization for better concurrency
8
+ * - Batch event inserts for performance
9
+ * - Agent pool restart recovery
10
+ * - OpenCode session tracking
11
+ * - Debounced persistence
12
+ */
13
+ export interface Task {
14
+ id: string;
15
+ title: string;
16
+ description: string;
17
+ status: TaskStatus;
18
+ priority: Priority;
19
+ logicStatus: LogicStatus;
20
+ probability: number;
21
+ projectId: string;
22
+ sessionId?: string;
23
+ createdAt: string;
24
+ updatedAt: string;
25
+ result?: string;
26
+ error?: string;
27
+ metadata?: string;
28
+ }
29
+ export type TaskStatus = "backlog" | "validating" | "executing" | "completed" | "failed";
30
+ export type Priority = "P0" | "P1" | "P2" | "P3" | "P4";
31
+ export type LogicStatus = "peak" | "slope" | "valley";
32
+ export interface NewTask {
33
+ id: string;
34
+ title: string;
35
+ description: string;
36
+ status?: TaskStatus;
37
+ priority?: Priority;
38
+ logicStatus?: LogicStatus;
39
+ probability?: number;
40
+ projectId: string;
41
+ sessionId?: string;
42
+ metadata?: string;
43
+ }
44
+ export interface Agent {
45
+ id: string;
46
+ taskId: string;
47
+ role: AgentRole;
48
+ status: AgentStatus;
49
+ opencodeSessionId?: string;
50
+ model?: string;
51
+ provider?: string;
52
+ startedAt: string;
53
+ completedAt?: string;
54
+ durationMs?: number;
55
+ inputTokens: number;
56
+ outputTokens: number;
57
+ costUsd: number;
58
+ result?: string;
59
+ error?: string;
60
+ dependsOn?: string;
61
+ }
62
+ export type AgentRole = "planner" | "coder" | "reviewer" | "tester";
63
+ export type AgentStatus = "pending" | "spawned" | "working" | "completed" | "failed" | "queued";
64
+ export interface NewAgent {
65
+ id: string;
66
+ taskId: string;
67
+ role: AgentRole;
68
+ status: AgentStatus;
69
+ opencodeSessionId?: string;
70
+ model?: string;
71
+ provider?: string;
72
+ dependsOn?: string;
73
+ }
74
+ export interface Session {
75
+ id: string;
76
+ projectId: string;
77
+ status: SessionStatus;
78
+ taskId?: string;
79
+ startedAt: string;
80
+ endedAt?: string;
81
+ handoffPath: string;
82
+ tasksCompleted: number;
83
+ agentsSpawned: number;
84
+ }
85
+ export type SessionStatus = "active" | "completed" | "failed";
86
+ export interface NewSession {
87
+ id: string;
88
+ projectId: string;
89
+ taskId?: string;
90
+ }
91
+ export interface SessionNote {
92
+ id: string;
93
+ sessionId: string;
94
+ type: NoteType;
95
+ content: string;
96
+ createdAt: string;
97
+ }
98
+ export type NoteType = "accomplishment" | "blocker" | "decision" | "insight" | "critical";
99
+ export interface NewSessionNote {
100
+ id: string;
101
+ sessionId: string;
102
+ type: NoteType;
103
+ content: string;
104
+ }
105
+ export interface Event {
106
+ id: string;
107
+ entityType: EntityType;
108
+ entityId: string;
109
+ eventType: EventType;
110
+ data: string;
111
+ timestamp: string;
112
+ }
113
+ export type EventType = "created" | "updated" | "completed" | "failed" | "health_check" | "timeout";
114
+ export type EntityType = "task" | "agent" | "session" | "premise";
115
+ export interface IpAsset {
116
+ id: string;
117
+ projectId: string;
118
+ name: string;
119
+ type: IpAssetType;
120
+ description: string;
121
+ status: IpAssetStatus;
122
+ createdAt: string;
123
+ updatedAt: string;
124
+ fileDate?: string;
125
+ grantDate?: string;
126
+ metadata?: string;
127
+ }
128
+ export type IpAssetType = "invention" | "patent" | "trademark" | "copyright";
129
+ export type IpAssetStatus = "identified" | "documented" | "filed" | "granted";
130
+ export interface NewIpAsset {
131
+ id: string;
132
+ projectId: string;
133
+ name: string;
134
+ type: IpAssetType;
135
+ description: string;
136
+ status?: IpAssetStatus;
137
+ }
138
+ export interface IpMilestone {
139
+ id: string;
140
+ ipAssetId: string;
141
+ name: string;
142
+ description: string;
143
+ status: MilestoneStatus;
144
+ createdAt: string;
145
+ completedAt?: string;
146
+ evidence?: string;
147
+ }
148
+ export type MilestoneStatus = "pending" | "completed";
149
+ export interface NewIpMilestone {
150
+ id: string;
151
+ ipAssetId: string;
152
+ name: string;
153
+ description: string;
154
+ }
155
+ export interface Project {
156
+ id: string;
157
+ name: string;
158
+ visionPath: string;
159
+ createdAt: string;
160
+ updatedAt: string;
161
+ metadata?: string;
162
+ }
163
+ export interface NewProject {
164
+ id: string;
165
+ name: string;
166
+ visionPath?: string;
167
+ }
168
+ export interface Premise {
169
+ id: string;
170
+ taskId: string;
171
+ statement: string;
172
+ logicVar: string;
173
+ isVerified: boolean;
174
+ isCritical: boolean;
175
+ confidence: number;
176
+ evidence?: string;
177
+ createdAt: string;
178
+ }
179
+ export interface NewPremise {
180
+ id: string;
181
+ taskId: string;
182
+ statement: string;
183
+ logicVar: string;
184
+ isVerified: boolean;
185
+ isCritical: boolean;
186
+ confidence: number;
187
+ evidence?: string;
188
+ }
189
+ export interface NewEvent {
190
+ id: string;
191
+ entityType: EntityType;
192
+ entityId: string;
193
+ eventType: EventType;
194
+ data?: string;
195
+ }
196
+ export type TransactionCallback<T> = (db: ViberDatabase) => Promise<T>;
197
+ export declare class ViberDatabase {
198
+ private db;
199
+ private dbPath;
200
+ private initialized;
201
+ private saveTimer;
202
+ private pendingSaves;
203
+ constructor(dbPath?: string);
204
+ initialize(): Promise<void>;
205
+ private runMigrations;
206
+ private persistNow;
207
+ private ensureSchemaVersionTable;
208
+ private getSchemaVersion;
209
+ private setSchemaVersion;
210
+ private addColumnIfMissing;
211
+ private tableHasColumn;
212
+ private configurePragmas;
213
+ private save;
214
+ private debouncedSave;
215
+ private flush;
216
+ transaction<T>(callback: TransactionCallback<T>): Promise<T>;
217
+ batchInsertEvents(events: Event[]): Promise<void>;
218
+ clearTasks(): Promise<void>;
219
+ createTask(task: NewTask): Promise<Task>;
220
+ getTask(id: string): Promise<Task | undefined>;
221
+ getTasks(filter?: {
222
+ status?: TaskStatus;
223
+ projectId?: string;
224
+ sessionId?: string;
225
+ }): Promise<Task[]>;
226
+ getEligibleTasksForScheduling(args: {
227
+ projectId?: string;
228
+ allowSlope?: boolean;
229
+ }): Promise<Task[]>;
230
+ taskHasAgents(taskId: string): Promise<boolean>;
231
+ updateTask(id: string, updates: Partial<Task>): Promise<Task>;
232
+ clearPremises(): Promise<void>;
233
+ replacePremisesForTask(taskId: string, premises: NewPremise[]): Promise<void>;
234
+ getPremises(taskId: string): Promise<Premise[]>;
235
+ clearAgents(): Promise<void>;
236
+ createAgent(agent: NewAgent): Promise<Agent>;
237
+ getAgent(id: string): Promise<Agent | undefined>;
238
+ getAgents(filter?: {
239
+ taskId?: string;
240
+ status?: AgentStatus | AgentStatus[];
241
+ }): Promise<Agent[]>;
242
+ updateAgent(id: string, updates: Partial<Agent>): Promise<Agent>;
243
+ createSession(session: NewSession): Promise<Session>;
244
+ getSession(id: string): Promise<Session | undefined>;
245
+ getSessions(filter?: {
246
+ status?: SessionStatus;
247
+ projectId?: string;
248
+ }): Promise<Session[]>;
249
+ getActiveSession(projectId?: string): Promise<Session | undefined>;
250
+ updateSession(id: string, updates: Partial<Session>): Promise<Session>;
251
+ endSession(sessionId: string, summary?: string): Promise<Session>;
252
+ createSessionNote(note: NewSessionNote): Promise<SessionNote>;
253
+ getSessionNotes(sessionId: string): Promise<SessionNote[]>;
254
+ clearEvents(): Promise<void>;
255
+ createEvent(event: Event): Promise<Event>;
256
+ getEvents(filter?: {
257
+ entityType?: EntityType;
258
+ entityId?: string;
259
+ since?: string;
260
+ limit?: number;
261
+ }): Promise<Event[]>;
262
+ createIpAsset(asset: NewIpAsset): Promise<IpAsset>;
263
+ getIpAsset(id: string): Promise<IpAsset | undefined>;
264
+ getIpAssets(filter?: {
265
+ type?: IpAssetType;
266
+ status?: IpAssetStatus;
267
+ projectId?: string;
268
+ }): Promise<IpAsset[]>;
269
+ updateIpAsset(id: string, updates: Partial<IpAsset>): Promise<IpAsset>;
270
+ createIpMilestone(milestone: NewIpMilestone): Promise<IpMilestone>;
271
+ getIpMilestones(ipAssetId: string): Promise<IpMilestone[]>;
272
+ updateIpMilestone(id: string, updates: Partial<IpMilestone>): Promise<IpMilestone>;
273
+ createProject(project: NewProject): Promise<Project>;
274
+ getProject(id: string): Promise<Project | undefined>;
275
+ getProjects(): Promise<Project[]>;
276
+ updateProject(id: string, updates: Partial<Project>): Promise<Project>;
277
+ private parseProjectMetadata;
278
+ private deriveProjectCode;
279
+ private normalizeProjectCode;
280
+ getNextTaskId(projectId: string, projectName?: string): Promise<string>;
281
+ recoverActiveAgents(): Promise<Agent[]>;
282
+ recoverActiveSessions(): Promise<Session[]>;
283
+ close(): void;
284
+ private rowToTask;
285
+ private rowToAgent;
286
+ private rowToSession;
287
+ private rowToEvent;
288
+ private rowToPremise;
289
+ private rowToIpAsset;
290
+ private rowToIpMilestone;
291
+ private rowToProject;
292
+ private camelToSnake;
293
+ }
294
+ export default ViberDatabase;
295
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../core/src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,GACX,QAAQ,CAAC;AACb,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AACpE,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,SAAS,GACT,UAAU,GACV,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,SAAS,GACT,WAAW,GACX,QAAQ,GACR,cAAc,GACd,SAAS,CAAC;AACd,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAElE,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,CAAC;AAEtD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAMvE,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAA8B;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,GAAE,MAA0B;IAIxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA8BnB,aAAa;IA+K3B,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,KAAK;IAaP,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAe5D,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBjD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCxC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAW9C,QAAQ,CAAC,MAAM,CAAC,EAAE;QACtB,MAAM,CAAC,EAAE,UAAU,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA0Bb,6BAA6B,CAAC,IAAI,EAAE;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAyBb,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,UAAU,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC;IA8BV,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY/C,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAiC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAWhD,SAAS,CAAC,MAAM,CAAC,EAAE;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;KACtC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA6Bd,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;IAwBhE,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BpD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAUpD,WAAW,CAAC,MAAM,CAAC,EAAE;QACzB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAsBhB,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAclE,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAatE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBjE,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAa7D,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAiB1D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAiBzC,SAAS,CAAC,MAAM,CAAC,EAAE;QACvB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkCd,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BlD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAOpD,WAAW,CAAC,MAAM,CAAC,EAAE;QACzB,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA6BhB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IActE,iBAAiB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBlE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAU1D,iBAAiB,CACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC;IAiBjB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BpD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAUpD,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASjC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5E,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,oBAAoB;IAOtB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BvE,mBAAmB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IASvC,qBAAqB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAUjD,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,YAAY;CAGrB;AAED,eAAe,aAAa,CAAC"}