pushwork 2.0.0-a.sub.1 → 2.0.0-preview.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 (234) hide show
  1. package/dist/branches.d.ts +20 -0
  2. package/dist/branches.d.ts.map +1 -0
  3. package/dist/branches.js +111 -0
  4. package/dist/branches.js.map +1 -0
  5. package/dist/cli.d.ts +1 -1
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +245 -270
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config.d.ts +17 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +84 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/fs-tree.d.ts +6 -0
  14. package/dist/fs-tree.d.ts.map +1 -0
  15. package/dist/fs-tree.js +99 -0
  16. package/dist/fs-tree.js.map +1 -0
  17. package/dist/ignore.d.ts +6 -0
  18. package/dist/ignore.d.ts.map +1 -0
  19. package/dist/ignore.js +74 -0
  20. package/dist/ignore.js.map +1 -0
  21. package/dist/index.d.ts +8 -4
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +35 -4
  24. package/dist/index.js.map +1 -1
  25. package/dist/log.d.ts +3 -0
  26. package/dist/log.d.ts.map +1 -0
  27. package/dist/log.js +14 -0
  28. package/dist/log.js.map +1 -0
  29. package/dist/pushwork.d.ts +129 -0
  30. package/dist/pushwork.d.ts.map +1 -0
  31. package/dist/pushwork.js +1062 -0
  32. package/dist/pushwork.js.map +1 -0
  33. package/dist/repo.d.ts +14 -0
  34. package/dist/repo.d.ts.map +1 -0
  35. package/dist/repo.js +60 -0
  36. package/dist/repo.js.map +1 -0
  37. package/dist/shapes/custom.d.ts +3 -0
  38. package/dist/shapes/custom.d.ts.map +1 -0
  39. package/dist/shapes/custom.js +57 -0
  40. package/dist/shapes/custom.js.map +1 -0
  41. package/dist/shapes/file.d.ts +20 -0
  42. package/dist/shapes/file.d.ts.map +1 -0
  43. package/dist/shapes/file.js +140 -0
  44. package/dist/shapes/file.js.map +1 -0
  45. package/dist/shapes/index.d.ts +10 -0
  46. package/dist/shapes/index.d.ts.map +1 -0
  47. package/dist/shapes/index.js +35 -0
  48. package/dist/shapes/index.js.map +1 -0
  49. package/dist/shapes/patchwork-folder.d.ts +3 -0
  50. package/dist/shapes/patchwork-folder.d.ts.map +1 -0
  51. package/dist/shapes/patchwork-folder.js +160 -0
  52. package/dist/shapes/patchwork-folder.js.map +1 -0
  53. package/dist/shapes/types.d.ts +38 -0
  54. package/dist/shapes/types.d.ts.map +1 -0
  55. package/dist/shapes/types.js +52 -0
  56. package/dist/shapes/types.js.map +1 -0
  57. package/dist/shapes/vfs.d.ts +3 -0
  58. package/dist/shapes/vfs.d.ts.map +1 -0
  59. package/dist/shapes/vfs.js +92 -0
  60. package/dist/shapes/vfs.js.map +1 -0
  61. package/dist/stash.d.ts +23 -0
  62. package/dist/stash.d.ts.map +1 -0
  63. package/dist/stash.js +118 -0
  64. package/dist/stash.js.map +1 -0
  65. package/dist/version.d.ts +11 -0
  66. package/dist/version.d.ts.map +1 -0
  67. package/dist/version.js +93 -0
  68. package/dist/version.js.map +1 -0
  69. package/package.json +19 -48
  70. package/patches/@automerge__automerge-repo@2.6.0-subduction.15.patch +26 -0
  71. package/.prettierrc +0 -9
  72. package/ARCHITECTURE-ACCORDING-TO-CLAUDE.md +0 -248
  73. package/CLAUDE.md +0 -141
  74. package/README.md +0 -221
  75. package/babel.config.js +0 -5
  76. package/dist/cli/commands.d.ts +0 -71
  77. package/dist/cli/commands.d.ts.map +0 -1
  78. package/dist/cli/commands.js +0 -794
  79. package/dist/cli/commands.js.map +0 -1
  80. package/dist/cli/index.d.ts +0 -2
  81. package/dist/cli/index.d.ts.map +0 -1
  82. package/dist/cli/index.js +0 -19
  83. package/dist/cli/index.js.map +0 -1
  84. package/dist/commands.d.ts +0 -61
  85. package/dist/commands.d.ts.map +0 -1
  86. package/dist/commands.js +0 -861
  87. package/dist/commands.js.map +0 -1
  88. package/dist/config/index.d.ts +0 -71
  89. package/dist/config/index.d.ts.map +0 -1
  90. package/dist/config/index.js +0 -314
  91. package/dist/config/index.js.map +0 -1
  92. package/dist/core/change-detection.d.ts +0 -80
  93. package/dist/core/change-detection.d.ts.map +0 -1
  94. package/dist/core/change-detection.js +0 -523
  95. package/dist/core/change-detection.js.map +0 -1
  96. package/dist/core/config.d.ts +0 -81
  97. package/dist/core/config.d.ts.map +0 -1
  98. package/dist/core/config.js +0 -258
  99. package/dist/core/config.js.map +0 -1
  100. package/dist/core/index.d.ts +0 -6
  101. package/dist/core/index.d.ts.map +0 -1
  102. package/dist/core/index.js +0 -6
  103. package/dist/core/index.js.map +0 -1
  104. package/dist/core/move-detection.d.ts +0 -34
  105. package/dist/core/move-detection.d.ts.map +0 -1
  106. package/dist/core/move-detection.js +0 -121
  107. package/dist/core/move-detection.js.map +0 -1
  108. package/dist/core/snapshot.d.ts +0 -105
  109. package/dist/core/snapshot.d.ts.map +0 -1
  110. package/dist/core/snapshot.js +0 -217
  111. package/dist/core/snapshot.js.map +0 -1
  112. package/dist/core/sync-engine.d.ts +0 -157
  113. package/dist/core/sync-engine.d.ts.map +0 -1
  114. package/dist/core/sync-engine.js +0 -1379
  115. package/dist/core/sync-engine.js.map +0 -1
  116. package/dist/types/config.d.ts +0 -99
  117. package/dist/types/config.d.ts.map +0 -1
  118. package/dist/types/config.js +0 -5
  119. package/dist/types/config.js.map +0 -1
  120. package/dist/types/documents.d.ts +0 -88
  121. package/dist/types/documents.d.ts.map +0 -1
  122. package/dist/types/documents.js +0 -20
  123. package/dist/types/documents.js.map +0 -1
  124. package/dist/types/index.d.ts +0 -4
  125. package/dist/types/index.d.ts.map +0 -1
  126. package/dist/types/index.js +0 -4
  127. package/dist/types/index.js.map +0 -1
  128. package/dist/types/snapshot.d.ts +0 -64
  129. package/dist/types/snapshot.d.ts.map +0 -1
  130. package/dist/types/snapshot.js +0 -2
  131. package/dist/types/snapshot.js.map +0 -1
  132. package/dist/utils/content-similarity.d.ts +0 -53
  133. package/dist/utils/content-similarity.d.ts.map +0 -1
  134. package/dist/utils/content-similarity.js +0 -155
  135. package/dist/utils/content-similarity.js.map +0 -1
  136. package/dist/utils/content.d.ts +0 -10
  137. package/dist/utils/content.d.ts.map +0 -1
  138. package/dist/utils/content.js +0 -31
  139. package/dist/utils/content.js.map +0 -1
  140. package/dist/utils/directory.d.ts +0 -24
  141. package/dist/utils/directory.d.ts.map +0 -1
  142. package/dist/utils/directory.js +0 -52
  143. package/dist/utils/directory.js.map +0 -1
  144. package/dist/utils/fs.d.ts +0 -74
  145. package/dist/utils/fs.d.ts.map +0 -1
  146. package/dist/utils/fs.js +0 -248
  147. package/dist/utils/fs.js.map +0 -1
  148. package/dist/utils/index.d.ts +0 -5
  149. package/dist/utils/index.d.ts.map +0 -1
  150. package/dist/utils/index.js +0 -5
  151. package/dist/utils/index.js.map +0 -1
  152. package/dist/utils/mime-types.d.ts +0 -13
  153. package/dist/utils/mime-types.d.ts.map +0 -1
  154. package/dist/utils/mime-types.js +0 -209
  155. package/dist/utils/mime-types.js.map +0 -1
  156. package/dist/utils/network-sync.d.ts +0 -36
  157. package/dist/utils/network-sync.d.ts.map +0 -1
  158. package/dist/utils/network-sync.js +0 -250
  159. package/dist/utils/network-sync.js.map +0 -1
  160. package/dist/utils/node-polyfills.d.ts +0 -9
  161. package/dist/utils/node-polyfills.d.ts.map +0 -1
  162. package/dist/utils/node-polyfills.js +0 -9
  163. package/dist/utils/node-polyfills.js.map +0 -1
  164. package/dist/utils/output.d.ts +0 -129
  165. package/dist/utils/output.d.ts.map +0 -1
  166. package/dist/utils/output.js +0 -368
  167. package/dist/utils/output.js.map +0 -1
  168. package/dist/utils/repo-factory.d.ts +0 -13
  169. package/dist/utils/repo-factory.d.ts.map +0 -1
  170. package/dist/utils/repo-factory.js +0 -46
  171. package/dist/utils/repo-factory.js.map +0 -1
  172. package/dist/utils/string-similarity.d.ts +0 -14
  173. package/dist/utils/string-similarity.d.ts.map +0 -1
  174. package/dist/utils/string-similarity.js +0 -39
  175. package/dist/utils/string-similarity.js.map +0 -1
  176. package/dist/utils/text-diff.d.ts +0 -37
  177. package/dist/utils/text-diff.d.ts.map +0 -1
  178. package/dist/utils/text-diff.js +0 -93
  179. package/dist/utils/text-diff.js.map +0 -1
  180. package/dist/utils/trace.d.ts +0 -19
  181. package/dist/utils/trace.d.ts.map +0 -1
  182. package/dist/utils/trace.js +0 -63
  183. package/dist/utils/trace.js.map +0 -1
  184. package/src/cli.ts +0 -442
  185. package/src/commands.ts +0 -1134
  186. package/src/core/change-detection.ts +0 -712
  187. package/src/core/config.ts +0 -313
  188. package/src/core/index.ts +0 -5
  189. package/src/core/move-detection.ts +0 -169
  190. package/src/core/snapshot.ts +0 -275
  191. package/src/core/sync-engine.ts +0 -1795
  192. package/src/index.ts +0 -4
  193. package/src/types/config.ts +0 -111
  194. package/src/types/documents.ts +0 -91
  195. package/src/types/index.ts +0 -3
  196. package/src/types/snapshot.ts +0 -67
  197. package/src/utils/content.ts +0 -34
  198. package/src/utils/directory.ts +0 -73
  199. package/src/utils/fs.ts +0 -297
  200. package/src/utils/index.ts +0 -4
  201. package/src/utils/mime-types.ts +0 -244
  202. package/src/utils/network-sync.ts +0 -319
  203. package/src/utils/node-polyfills.ts +0 -8
  204. package/src/utils/output.ts +0 -450
  205. package/src/utils/repo-factory.ts +0 -73
  206. package/src/utils/string-similarity.ts +0 -54
  207. package/src/utils/text-diff.ts +0 -101
  208. package/src/utils/trace.ts +0 -70
  209. package/test/integration/README.md +0 -328
  210. package/test/integration/clone-test.sh +0 -310
  211. package/test/integration/conflict-resolution-test.sh +0 -309
  212. package/test/integration/debug-both-nested.sh +0 -74
  213. package/test/integration/debug-concurrent-nested.sh +0 -87
  214. package/test/integration/debug-nested.sh +0 -73
  215. package/test/integration/deletion-behavior-test.sh +0 -487
  216. package/test/integration/deletion-sync-test-simple.sh +0 -193
  217. package/test/integration/deletion-sync-test.sh +0 -297
  218. package/test/integration/exclude-patterns.test.ts +0 -144
  219. package/test/integration/full-integration-test.sh +0 -363
  220. package/test/integration/fuzzer.test.ts +0 -818
  221. package/test/integration/in-memory-sync.test.ts +0 -830
  222. package/test/integration/init-sync.test.ts +0 -89
  223. package/test/integration/manual-sync-test.sh +0 -84
  224. package/test/integration/sync-deletion.test.ts +0 -280
  225. package/test/integration/sync-flow.test.ts +0 -291
  226. package/test/jest.setup.ts +0 -34
  227. package/test/run-tests.sh +0 -225
  228. package/test/unit/deletion-behavior.test.ts +0 -249
  229. package/test/unit/enhanced-mime-detection.test.ts +0 -244
  230. package/test/unit/snapshot.test.ts +0 -404
  231. package/test/unit/sync-convergence.test.ts +0 -298
  232. package/test/unit/sync-timing.test.ts +0 -134
  233. package/test/unit/utils.test.ts +0 -366
  234. package/tsconfig.json +0 -23
package/README.md DELETED
@@ -1,221 +0,0 @@
1
- # Pushwork
2
-
3
- Bidirectional file synchronization using Automerge CRDTs for conflict-free collaborative editing.
4
-
5
- ## Features
6
-
7
- - **Conflict-Free Sync**: Automatic conflict resolution using Automerge CRDTs
8
- - **Real-time Collaboration**: Multiple users can edit the same files simultaneously
9
- - **Intelligent Move Detection**: Detects file renames and moves based on content similarity
10
- - **Offline Support**: Works offline and gracefully handles network interruptions
11
- - **Cross-Platform**: Runs on Windows, macOS, and Linux
12
-
13
- ## Installation
14
-
15
- ```bash
16
- pnpm install
17
- pnpm run build
18
- pnpm link --global
19
- ```
20
-
21
- Requires: Node.js 18+, pnpm 8.15.0+
22
-
23
- ## Quick Start
24
-
25
- ```bash
26
- # Initialize a directory
27
- pushwork init ./my-project
28
-
29
- # Clone an existing repository
30
- pushwork clone <automerge-url> ./project
31
-
32
- # Sync changes
33
- pushwork sync
34
-
35
- # Check status
36
- pushwork status
37
-
38
- # Get shareable URL
39
- pushwork url
40
- ```
41
-
42
- ## Commands
43
-
44
- ### Core Commands
45
-
46
- **`init [path]`** - Initialize sync in a directory
47
-
48
- - `--sync-server <url>` - Custom sync server URL
49
- - `--sync-server-storage-id <id>` - Custom storage ID
50
- - `--debug` - Export performance flame graphs
51
-
52
- **`clone <url> <path>`** - Clone an existing synced directory
53
-
54
- - `--force` - Overwrite existing directory
55
- - `--sync-server <url>` - Custom sync server URL
56
- - `--sync-server-storage-id <id>` - Custom storage ID
57
-
58
- **`sync [path]`** - Run bidirectional synchronization
59
-
60
- - `--dry-run` - Preview changes without applying
61
- - `--verbose` - Show detailed progress
62
- - `--debug` - Export performance flame graphs
63
-
64
- **`status [path]`** - Show sync status and repository info
65
-
66
- - `--verbose` - Show detailed status including all tracked files
67
-
68
- **`commit [path]`** - Commit local changes without network sync
69
-
70
- - `--dry-run` - Preview what would be committed
71
- - `--debug` - Export performance flame graphs
72
-
73
- ### Utility Commands
74
-
75
- **`diff [path]`** - Show differences between local and remote
76
-
77
- - `--name-only` - Show only changed file names
78
-
79
- **`url [path]`** - Show the Automerge root URL for sharing
80
-
81
- **`ls [path]`** - List tracked files
82
-
83
- - `--long` - Show Automerge URLs
84
-
85
- **`config [path]`** - View or edit configuration
86
-
87
- - `--list` - Show full configuration
88
- - `--get <key>` - Get specific config value (dot notation)
89
-
90
- **`rm [path]`** - Remove local pushwork data
91
-
92
- **`watch [path]`** - Watch directory, build, and sync automatically
93
-
94
- - `--script <command>` - Build script (default: "pnpm build")
95
- - `--dir <dir>` - Directory to watch (default: "src")
96
- - `--verbose` - Show build output
97
-
98
- **`log [path]`** - Show sync history _(experimental, limited functionality)_
99
-
100
- **`checkout <sync-id> [path]`** - Restore to previous sync _(not yet implemented)_
101
-
102
- ## Configuration
103
-
104
- Configuration is stored in `.pushwork/config.json`:
105
-
106
- ```json
107
- {
108
- "sync_server": "wss://sync3.automerge.org",
109
- "sync_server_storage_id": "3760df37-a4c6-4f66-9ecd-732039a9385d",
110
- "sync_enabled": true,
111
- "defaults": {
112
- "exclude_patterns": [".git", "node_modules", "*.tmp", ".pushwork"],
113
- "large_file_threshold": "100MB"
114
- },
115
- "diff": {
116
- "show_binary": false
117
- },
118
- "sync": {
119
- "move_detection_threshold": 0.8,
120
- "prompt_threshold": 0.5,
121
- "auto_sync": false,
122
- "parallel_operations": 4
123
- }
124
- }
125
- ```
126
-
127
- ## How It Works
128
-
129
- Pushwork uses Automerge CRDTs for automatic conflict resolution:
130
-
131
- - **Text files**: Character-level merging preserves all changes
132
- - **Binary files**: Last-writer-wins with automatic convergence
133
- - **Directories**: Additive merging supports simultaneous file creation
134
-
135
- Sync process:
136
-
137
- 1. **Push**: Apply local changes to Automerge documents
138
- 2. **Pull**: Apply remote changes to local filesystem
139
- 3. **Convergence**: All repositories reach identical state
140
-
141
- State tracking:
142
-
143
- - `.pushwork/snapshot.json` - Tracks sync state and file mappings
144
- - `.pushwork/config.json` - Configuration settings
145
- - Content-based change detection using Automerge document heads
146
-
147
- ### Document Schema
148
-
149
- **File Document:**
150
-
151
- ```typescript
152
- {
153
- "@patchwork": { type: "file" };
154
- name: string;
155
- extension: string;
156
- mimeType: string;
157
- content: string | Uint8Array;
158
- metadata: {
159
- permissions: number;
160
- };
161
- }
162
- ```
163
-
164
- **Directory Document:**
165
-
166
- ```typescript
167
- {
168
- "@patchwork": { type: "folder" };
169
- docs: Array<{
170
- name: string;
171
- type: "file" | "folder";
172
- url: AutomergeUrl;
173
- }>;
174
- lastSyncAt?: number;
175
- }
176
- ```
177
-
178
- ## Development
179
-
180
- ### Setup
181
-
182
- ```bash
183
- git clone <repository-url>
184
- cd pushwork
185
- pnpm install
186
- pnpm run build
187
- pnpm run dev # Watch mode
188
- pnpm test # Run tests
189
- pnpm run test:watch # Watch mode for tests
190
- ```
191
-
192
- ### Project Structure
193
-
194
- ```
195
- src/
196
- ├── cli/ # Command-line interface
197
- ├── core/ # Core sync engine
198
- ├── config/ # Configuration management
199
- ├── tracing/ # Performance tracing
200
- ├── types/ # TypeScript type definitions
201
- └── utils/ # Shared utilities
202
- ```
203
-
204
- ### Testing
205
-
206
- ```bash
207
- pnpm test # Unit tests
208
- ./test/run-tests.sh # All integration tests
209
- ./test/integration/conflict-resolution-test.sh # Specific test
210
- ```
211
-
212
- ### Profiling
213
-
214
- ```bash
215
- pushwork sync --debug # Export flame graphs
216
- clinic flame --collect-only -- node --enable-source-maps --prof $(pnpm root -g)/pushwork/dist/cli.js sync
217
- ```
218
-
219
- ## License
220
-
221
- MIT License
package/babel.config.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- presets: [
3
- ['@babel/preset-env', { targets: { node: 'current' } }]
4
- ]
5
- };
@@ -1,71 +0,0 @@
1
- import { Repo } from "@automerge/automerge-repo";
2
- import { CloneOptions, SyncOptions, DiffOptions, LogOptions, CheckoutOptions, DirectoryConfig } from "../types";
3
- import { SyncEngine } from "../core";
4
- /**
5
- * Shared context that commands can use
6
- */
7
- export interface CommandContext {
8
- repo: Repo;
9
- syncEngine: SyncEngine;
10
- config: DirectoryConfig;
11
- workingDir: string;
12
- }
13
- /**
14
- * Shared pre-action that ensures repository and sync engine are properly initialized
15
- * This function always works, with or without network connectivity
16
- */
17
- export declare function setupCommandContext(workingDir?: string, customSyncServer?: string, customStorageId?: string, enableNetwork?: boolean): Promise<CommandContext>;
18
- /**
19
- * Safely shutdown a repository with proper error handling
20
- */
21
- export declare function safeRepoShutdown(repo: Repo, context?: string): Promise<void>;
22
- /**
23
- * Common progress message helpers
24
- */
25
- export declare const ProgressMessages: {
26
- directoryFound: () => void;
27
- configLoaded: () => void;
28
- repoConnected: () => void;
29
- syncServer: (server: string) => void;
30
- storageId: (id: string) => void;
31
- rootUrl: (url: string) => void;
32
- changesWritten: () => void;
33
- syncCompleted: (duration: number) => void;
34
- directoryStructureCreated: () => void;
35
- configSaved: () => void;
36
- repoCreated: () => void;
37
- };
38
- /**
39
- * Initialize sync in a directory
40
- */
41
- export declare function init(targetPath: string, syncServer?: string, syncServerStorageId?: string): Promise<void>;
42
- /**
43
- * Run bidirectional sync
44
- */
45
- export declare function sync(options: SyncOptions): Promise<void>;
46
- /**
47
- * Show differences between local and remote
48
- */
49
- export declare function diff(targetPath: string | undefined, options: DiffOptions): Promise<void>;
50
- /**
51
- * Show sync status
52
- */
53
- export declare function status(): Promise<void>;
54
- /**
55
- * Show sync history
56
- */
57
- export declare function log(targetPath: string | undefined, options: LogOptions): Promise<void>;
58
- /**
59
- * Checkout/restore from previous sync
60
- */
61
- export declare function checkout(syncId: string, targetPath: string | undefined, options: CheckoutOptions): Promise<void>;
62
- /**
63
- * Clone an existing synced directory from an AutomergeUrl
64
- */
65
- export declare function clone(rootUrl: string, targetPath: string, options: CloneOptions): Promise<void>;
66
- /**
67
- * Get the root URL for the current pushwork repository
68
- */
69
- export declare function url(targetPath?: string): Promise<void>;
70
- export declare function commit(targetPath: string, dryRun?: boolean): Promise<void>;
71
- //# sourceMappingURL=commands.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAA2B,MAAM,2BAA2B,CAAC;AAI1E,OAAO,EAEL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMrC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,GAAE,MAAsB,EAClC,gBAAgB,CAAC,EAAE,MAAM,EACzB,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,GAAE,OAAc,GAC5B,OAAO,CAAC,cAAc,CAAC,CAqCzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;yBAON,MAAM;oBAEX,MAAM;mBACP,MAAM;;8BAKK,MAAM;;;;CAOjC,CAAC;AA+DF;;GAEG;AACH,wBAAsB,IAAI,CACxB,UAAU,EAAE,MAAM,EAClB,UAAU,CAAC,EAAE,MAAM,EACnB,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CA6Hf;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgM9D;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,UAAU,oBAAM,EAChB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA6Df;AAED;;GAEG;AACH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CA6H5C;AAED;;GAEG;AACH,wBAAsB,GAAG,CACvB,UAAU,oBAAM,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,UAAU,oBAAM,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Hf;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,UAAU,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCzD;AAED,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAgEf"}