@resourcexjs/core 2.5.0 → 2.5.1

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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # @resourcexjs/core
2
2
 
3
- Core data structures for ResourceX.
3
+ Core primitives and types for ResourceX - the resource management protocol for AI Agents.
4
4
 
5
- > **Note**: For most use cases, use the main [`resourcexjs`](https://www.npmjs.com/package/resourcexjs) package. This package is for advanced usage.
5
+ > **Note**: For most use cases, use the main [`resourcexjs`](https://www.npmjs.com/package/resourcexjs) package. This package is for low-level operations.
6
6
 
7
7
  ## Installation
8
8
 
@@ -12,269 +12,370 @@ npm install @resourcexjs/core
12
12
  bun add @resourcexjs/core
13
13
  ```
14
14
 
15
- ## What's Inside
15
+ ## Core Concepts
16
16
 
17
- Core building blocks - pure data structures:
17
+ ResourceX uses a layered architecture with five core primitives:
18
18
 
19
- - **RXL** (Locator) - Resource locator string parser
20
- - **RXM** (Manifest) - Resource metadata
21
- - **RXA** (Archive) - Archive container for storage/transfer
22
- - **RXP** (Package) - Extracted files for runtime access
23
- - **RXR** (Resource) - Complete resource type
24
- - **Errors** - Error hierarchy
19
+ | Primitive | Description |
20
+ | --------- | -------------------------------------------------------- |
21
+ | **RXD** | Resource Definition - content of `resource.json` |
22
+ | **RXL** | Resource Locator - unique identifier for a resource |
23
+ | **RXM** | Resource Manifest - metadata stored within the resource |
24
+ | **RXA** | Resource Archive - tar.gz container for storage/transfer |
25
+ | **RXR** | Resource - complete resource (RXL + RXM + RXA) |
26
+
27
+ ### Locator Format
28
+
29
+ Docker-style format: `[registry/][path/]name[:tag]`
30
+
31
+ ```
32
+ hello -> name=hello, tag=latest
33
+ hello:1.0.0 -> name=hello, tag=1.0.0
34
+ prompts/hello:stable -> path=prompts, name=hello, tag=stable
35
+ localhost:3098/hello:1.0.0 -> registry=localhost:3098, name=hello, tag=1.0.0
36
+ registry.example.com/org/hello -> registry=registry.example.com, path=org, name=hello, tag=latest
37
+ ```
25
38
 
26
39
  ## API
27
40
 
28
- ### RXL - Resource Locator
41
+ ### `parse(locator: string): RXL`
29
42
 
30
- Parse resource locator strings. Format: `[domain/path/]name[.type][@version]`
43
+ Parse a locator string into an RXL object.
31
44
 
32
45
  ```typescript
33
- import { parseRXL } from "@resourcexjs/core";
46
+ import { parse } from "@resourcexjs/core";
47
+
48
+ const rxl = parse("registry.example.com/prompts/hello:1.0.0");
49
+ // {
50
+ // registry: "registry.example.com",
51
+ // path: "prompts",
52
+ // name: "hello",
53
+ // tag: "1.0.0"
54
+ // }
55
+
56
+ const simple = parse("hello");
57
+ // { registry: undefined, path: undefined, name: "hello", tag: "latest" }
58
+ ```
34
59
 
35
- const rxl = parseRXL("deepractice.ai/sean/assistant.prompt@1.0.0");
60
+ ### `format(rxl: RXL): string`
36
61
 
37
- rxl.domain; // "deepractice.ai"
38
- rxl.path; // "sean"
39
- rxl.name; // "assistant"
40
- rxl.type; // "prompt"
41
- rxl.version; // "1.0.0"
42
- rxl.toString(); // "deepractice.ai/sean/assistant.prompt@1.0.0"
62
+ Format an RXL object back to a locator string.
63
+
64
+ ```typescript
65
+ import { format } from "@resourcexjs/core";
66
+
67
+ format({ name: "hello", tag: "latest" });
68
+ // "hello"
69
+
70
+ format({ name: "hello", tag: "1.0.0" });
71
+ // "hello:1.0.0"
72
+
73
+ format({ registry: "localhost:3098", name: "hello", tag: "1.0.0" });
74
+ // "localhost:3098/hello:1.0.0"
43
75
  ```
44
76
 
45
- **Minimal locator:**
77
+ ### `define(input: unknown): RXD`
78
+
79
+ Parse and validate a resource definition (from `resource.json`).
46
80
 
47
81
  ```typescript
48
- parseRXL("name.text@1.0.0");
49
- // → domain: "localhost", path: undefined, name: "name", type: "text", version: "1.0.0"
82
+ import { define } from "@resourcexjs/core";
83
+
84
+ const rxd = define({
85
+ name: "my-prompt",
86
+ type: "text",
87
+ tag: "1.0.0",
88
+ description: "A helpful prompt",
89
+ author: "Alice",
90
+ });
91
+ // {
92
+ // name: "my-prompt",
93
+ // type: "text",
94
+ // tag: "1.0.0",
95
+ // description: "A helpful prompt",
96
+ // author: "Alice"
97
+ // }
50
98
  ```
51
99
 
52
- ### RXM - Resource Manifest
100
+ **Required fields**: `name`, `type`
101
+
102
+ **Optional fields**: `tag` (defaults to "latest"), `registry`, `path`, `description`, `author`, `license`, `keywords`, `repository`
103
+
104
+ > Note: `version` is accepted as an alias for `tag` for backward compatibility.
53
105
 
54
- Create and validate resource metadata:
106
+ ### `manifest(rxd: RXD): RXM`
107
+
108
+ Create a manifest from a definition. Extracts core metadata fields.
55
109
 
56
110
  ```typescript
57
- import { createRXM } from "@resourcexjs/core";
58
-
59
- const manifest = createRXM({
60
- domain: "deepractice.ai",
61
- path: "sean", // optional
62
- name: "assistant",
63
- type: "prompt",
64
- version: "1.0.0",
65
- description: "Optional description", // optional
66
- tags: ["optional", "tags"], // optional
111
+ import { define, manifest } from "@resourcexjs/core";
112
+
113
+ const rxd = define({
114
+ name: "my-prompt",
115
+ type: "text",
116
+ tag: "1.0.0",
117
+ description: "A helpful prompt", // not included in manifest
67
118
  });
68
119
 
69
- manifest.toLocator(); // → "deepractice.ai/sean/assistant.prompt@1.0.0"
70
- manifest.toJSON(); // plain object
120
+ const rxm = manifest(rxd);
121
+ // { name: "my-prompt", type: "text", tag: "1.0.0" }
71
122
  ```
72
123
 
73
- **Required fields**: `name`, `type`, `version`
124
+ ### `locate(rxm: RXM): RXL`
74
125
 
75
- **Optional fields**: `domain` (default: "localhost"), `path`, `description`, `tags`
126
+ Create a locator from a manifest.
76
127
 
77
- ### RXA - Resource Archive
128
+ ```typescript
129
+ import { locate } from "@resourcexjs/core";
130
+
131
+ const rxl = locate({
132
+ registry: "example.com",
133
+ path: "prompts",
134
+ name: "hello",
135
+ type: "text",
136
+ tag: "1.0.0",
137
+ });
138
+ // { registry: "example.com", path: "prompts", name: "hello", tag: "1.0.0" }
139
+ ```
78
140
 
79
- Archive container (tar.gz) for storage/transfer. Extract to RXP for file access:
141
+ ### `archive(files: Record<string, Buffer>): Promise<RXA>`
142
+
143
+ Create an archive from files. Output is in tar.gz format.
80
144
 
81
145
  ```typescript
82
- import { createRXA } from "@resourcexjs/core";
146
+ import { archive } from "@resourcexjs/core";
83
147
 
84
148
  // Single file
85
- const content = await createRXA({ content: "Hello, World!" });
149
+ const rxa = await archive({
150
+ content: Buffer.from("Hello, World!"),
151
+ });
86
152
 
87
153
  // Multiple files
88
- const content = await createRXA({
89
- "index.ts": "export default 1",
90
- "styles.css": "body {}",
154
+ const rxa = await archive({
155
+ "prompt.md": Buffer.from("# System Prompt\nYou are..."),
156
+ "config.json": Buffer.from('{"temperature": 0.7}'),
91
157
  });
92
158
 
93
159
  // Nested directories
94
- const content = await createRXA({
95
- "src/index.ts": "main code",
96
- "src/utils/helper.ts": "helper code",
160
+ const rxa = await archive({
161
+ "src/index.ts": Buffer.from("main code"),
162
+ "src/utils/helper.ts": Buffer.from("helper code"),
97
163
  });
98
164
 
99
- // From existing tar.gz buffer (for deserialization)
100
- const content = await createRXA({ buffer: tarGzBuffer });
101
-
102
- // Extract to package for file access
103
- const pkg = await content.extract();
104
- const buffer = await pkg.file("content"); // → Buffer
105
- const buffer = await pkg.file("src/index.ts"); // → Buffer
106
- const files = await pkg.files(); // → Map<string, Buffer>
107
- const paths = pkg.paths(); // → string[]
108
- const tree = pkg.tree(); // → PathNode[]
109
-
110
- // Archive methods
111
- const archiveBuffer = await content.buffer(); // → raw tar.gz Buffer
112
- const stream = content.stream; // → ReadableStream (tar.gz)
165
+ // Access raw archive data
166
+ const buffer = await rxa.buffer(); // tar.gz Buffer
167
+ const stream = rxa.stream; // ReadableStream<Uint8Array>
113
168
  ```
114
169
 
115
- ### RXR - Resource
170
+ ### `extract(rxa: RXA): Promise<Record<string, Buffer>>`
116
171
 
117
- Complete resource object (pure interface):
172
+ Extract files from an archive.
118
173
 
119
174
  ```typescript
120
- import type { RXR } from "@resourcexjs/core";
175
+ import { archive, extract } from "@resourcexjs/core";
121
176
 
122
- interface RXR {
123
- locator: RXL;
124
- manifest: RXM;
125
- archive: RXA;
126
- }
177
+ const rxa = await archive({
178
+ "hello.txt": Buffer.from("Hello!"),
179
+ "world.txt": Buffer.from("World!"),
180
+ });
127
181
 
128
- // Create from literals
129
- const rxr: RXR = { locator, manifest, archive };
182
+ const files = await extract(rxa);
183
+ // {
184
+ // "hello.txt": Buffer<...>,
185
+ // "world.txt": Buffer<...>
186
+ // }
130
187
  ```
131
188
 
132
- RXR is a pure DTO (Data Transfer Object) - no factory function needed.
189
+ ### `wrap(buffer: Buffer): RXA`
133
190
 
134
- ## Error Handling
191
+ Wrap an existing tar.gz buffer as an RXA. Useful for deserializing archives.
135
192
 
136
193
  ```typescript
137
- import { ResourceXError, LocatorError, ManifestError, ContentError } from "@resourcexjs/core";
194
+ import { wrap, extract } from "@resourcexjs/core";
138
195
 
139
- try {
140
- parseRXL("invalid-locator");
141
- } catch (error) {
142
- if (error instanceof LocatorError) {
143
- console.error("Invalid locator format");
144
- }
145
- }
196
+ // From storage or network
197
+ const tarGzBuffer = await fetchFromStorage();
146
198
 
147
- try {
148
- createRXM({ name: "test" }); // Missing required fields
149
- } catch (error) {
150
- if (error instanceof ManifestError) {
151
- console.error("Invalid manifest");
152
- }
153
- }
154
-
155
- try {
156
- const pkg = await archive.extract();
157
- await pkg.file("nonexistent");
158
- } catch (error) {
159
- if (error instanceof ContentError) {
160
- console.error("File not found in archive");
161
- }
162
- }
199
+ const rxa = wrap(tarGzBuffer);
200
+ const files = await extract(rxa);
163
201
  ```
164
202
 
165
- ### Error Hierarchy
203
+ ### `resource(rxm: RXM, rxa: RXA): RXR`
166
204
 
167
- ```
168
- ResourceXError (base)
169
- ├── LocatorError
170
- ├── ManifestError
171
- └── ContentError
205
+ Create a complete resource from manifest and archive.
206
+
207
+ ```typescript
208
+ import { define, manifest, archive, resource } from "@resourcexjs/core";
209
+
210
+ const rxd = define({ name: "hello", type: "text", tag: "1.0.0" });
211
+ const rxm = manifest(rxd);
212
+ const rxa = await archive({ content: Buffer.from("Hello!") });
213
+ const rxr = resource(rxm, rxa);
214
+ // {
215
+ // locator: { name: "hello", tag: "1.0.0" },
216
+ // manifest: { name: "hello", type: "text", tag: "1.0.0" },
217
+ // archive: RXA
218
+ // }
172
219
  ```
173
220
 
174
- ## Examples
221
+ ## Types
175
222
 
176
- ### Complete Resource Creation
223
+ ### RXD - Resource Definition
177
224
 
178
- ```typescript
179
- import { parseRXL, createRXM, createRXA } from "@resourcexjs/core";
180
- import type { RXR } from "@resourcexjs/core";
225
+ The content of `resource.json` file. Contains all metadata for a resource in development.
181
226
 
182
- // Create manifest
183
- const manifest = createRXM({
184
- domain: "deepractice.ai",
185
- name: "assistant",
186
- type: "prompt",
187
- version: "1.0.0",
188
- });
227
+ ```typescript
228
+ interface RXD {
229
+ readonly name: string; // Required
230
+ readonly type: string; // Required
231
+ readonly tag?: string; // Optional (defaults to "latest")
232
+ readonly registry?: string;
233
+ readonly path?: string;
234
+ readonly description?: string;
235
+ readonly author?: string;
236
+ readonly license?: string;
237
+ readonly keywords?: string[];
238
+ readonly repository?: string;
239
+ readonly [key: string]: unknown; // Additional fields allowed
240
+ }
241
+ ```
189
242
 
190
- // Create locator from manifest
191
- const locator = parseRXL(manifest.toLocator());
243
+ ### RXL - Resource Locator
192
244
 
193
- // Create archive (single file)
194
- const archive = await createRXA({ content: "You are a helpful assistant." });
245
+ Unique identifier for a resource.
195
246
 
196
- // Assemble RXR
197
- const rxr: RXR = {
198
- locator,
199
- manifest,
200
- archive,
201
- };
247
+ ```typescript
248
+ interface RXL {
249
+ readonly registry?: string; // e.g., "localhost:3098", "registry.example.com"
250
+ readonly path?: string; // e.g., "org", "prompts"
251
+ readonly name: string; // Resource name
252
+ readonly tag: string; // Tag (defaults to "latest")
253
+ }
202
254
  ```
203
255
 
204
- ### Multi-file Resource
256
+ ### RXM - Resource Manifest
257
+
258
+ Resource metadata stored within the resource.
205
259
 
206
260
  ```typescript
207
- import { createRXA } from "@resourcexjs/core";
261
+ interface RXM {
262
+ readonly registry?: string;
263
+ readonly path?: string;
264
+ readonly name: string;
265
+ readonly type: string;
266
+ readonly tag: string;
267
+ readonly files?: string[]; // Package file structure
268
+ }
269
+ ```
208
270
 
209
- // Create multi-file archive
210
- const archive = await createRXA({
211
- "prompt.md": "# System Prompt\nYou are...",
212
- "config.json": '{"temperature": 0.7}',
213
- });
271
+ ### RXA - Resource Archive
272
+
273
+ Archive container (tar.gz format) for storage and transfer.
274
+
275
+ ```typescript
276
+ interface RXA {
277
+ readonly stream: ReadableStream<Uint8Array>;
278
+ buffer(): Promise<Buffer>;
279
+ }
280
+ ```
214
281
 
215
- // Extract to package for file access
216
- const pkg = await archive.extract();
282
+ ### RXR - Resource
217
283
 
218
- // Read individual files
219
- const promptBuffer = await pkg.file("prompt.md");
220
- const configBuffer = await pkg.file("config.json");
284
+ Complete resource object combining locator, manifest, and archive.
221
285
 
222
- // Read all files
223
- const allFiles = await pkg.files();
224
- for (const [path, buffer] of allFiles) {
225
- console.log(path, buffer.toString());
286
+ ```typescript
287
+ interface RXR {
288
+ readonly locator: RXL;
289
+ readonly manifest: RXM;
290
+ readonly archive: RXA;
226
291
  }
227
292
  ```
228
293
 
229
- ### Manifest Serialization
294
+ ## Error Handling
230
295
 
231
296
  ```typescript
232
- const manifest = createRXM({
233
- name: "assistant",
234
- type: "prompt",
235
- version: "1.0.0",
236
- });
297
+ import {
298
+ ResourceXError,
299
+ LocatorError,
300
+ ManifestError,
301
+ ContentError,
302
+ DefinitionError,
303
+ } from "@resourcexjs/core";
237
304
 
238
- // To JSON (for storage)
239
- const json = manifest.toJSON();
240
- /*
241
- {
242
- "domain": "localhost",
243
- "name": "assistant",
244
- "type": "prompt",
245
- "version": "1.0.0"
305
+ try {
306
+ parse("invalid@locator");
307
+ } catch (error) {
308
+ if (error instanceof LocatorError) {
309
+ console.error("Invalid locator format:", error.message);
310
+ console.error("Locator:", error.locator);
311
+ }
246
312
  }
247
- */
248
313
 
249
- // To locator string
250
- const locator = manifest.toLocator();
251
- // "localhost/assistant.prompt@1.0.0"
314
+ try {
315
+ define({ name: "test" }); // Missing required 'type' field
316
+ } catch (error) {
317
+ if (error instanceof DefinitionError) {
318
+ console.error("Invalid definition:", error.message);
319
+ }
320
+ }
252
321
  ```
253
322
 
254
- ## Related Packages
323
+ ### Error Hierarchy
255
324
 
256
- This package provides only data structures. For full functionality:
325
+ ```
326
+ ResourceXError (base)
327
+ ├── LocatorError - RXL parsing errors
328
+ ├── ManifestError - RXM validation errors
329
+ ├── ContentError - RXA operations errors
330
+ └── DefinitionError - RXD validation errors
331
+ ```
332
+
333
+ ## Complete Example
257
334
 
258
- - **[@resourcexjs/type](../type)** - Type system and handlers
259
- - **[@resourcexjs/loader](../loader)** - Resource loading
260
- - **[@resourcexjs/registry](../registry)** - Storage and retrieval
261
- - **[@resourcexjs/arp](../arp)** - Low-level I/O
262
- - **[resourcexjs](../resourcex)** - Main package (all-in-one)
335
+ ```typescript
336
+ import { define, manifest, archive, resource, extract, format, parse } from "@resourcexjs/core";
337
+ import type { RXR } from "@resourcexjs/core";
263
338
 
264
- ## Type Safety
339
+ // 1. Define resource metadata
340
+ const rxd = define({
341
+ name: "assistant-prompt",
342
+ type: "text",
343
+ tag: "1.0.0",
344
+ description: "A helpful AI assistant prompt",
345
+ author: "Example Team",
346
+ });
265
347
 
266
- All types are fully typed with TypeScript:
348
+ // 2. Create manifest from definition
349
+ const rxm = manifest(rxd);
267
350
 
268
- ```typescript
269
- import type { RXL, RXM, RXA, RXP, RXR } from "@resourcexjs/core";
270
- import { parseRXL, createRXM, createRXA } from "@resourcexjs/core";
351
+ // 3. Create archive from files
352
+ const rxa = await archive({
353
+ content: Buffer.from("You are a helpful AI assistant."),
354
+ });
355
+
356
+ // 4. Combine into complete resource
357
+ const rxr: RXR = resource(rxm, rxa);
358
+
359
+ // 5. Access locator string
360
+ const locatorStr = format(rxr.locator);
361
+ console.log(locatorStr); // "assistant-prompt:1.0.0"
271
362
 
272
- const locator: RXL = parseRXL("localhost/test.text@1.0.0");
273
- const manifest: RXM = createRXM({ name: "test", type: "text", version: "1.0.0" });
274
- const archive: RXA = await createRXA({ content: "Hello" });
275
- const resource: RXR = { locator, manifest, archive };
363
+ // 6. Extract files when needed
364
+ const files = await extract(rxr.archive);
365
+ console.log(files.content.toString()); // "You are a helpful AI assistant."
276
366
  ```
277
367
 
368
+ ## Related Packages
369
+
370
+ | Package | Description |
371
+ | ---------------------------------------------------------------------------- | -------------------------- |
372
+ | [resourcexjs](https://www.npmjs.com/package/resourcexjs) | Main package (recommended) |
373
+ | [@resourcexjs/storage](https://www.npmjs.com/package/@resourcexjs/storage) | Storage layer |
374
+ | [@resourcexjs/registry](https://www.npmjs.com/package/@resourcexjs/registry) | Registry layer |
375
+ | [@resourcexjs/type](https://www.npmjs.com/package/@resourcexjs/type) | Type system |
376
+ | [@resourcexjs/loader](https://www.npmjs.com/package/@resourcexjs/loader) | Resource loading |
377
+ | [@resourcexjs/arp](https://www.npmjs.com/package/@resourcexjs/arp) | Low-level I/O |
378
+
278
379
  ## License
279
380
 
280
- MIT
381
+ Apache-2.0
package/dist/index.d.ts CHANGED
@@ -26,8 +26,8 @@ declare class DefinitionError extends ResourceXError {
26
26
  interface RXD {
27
27
  readonly name: string;
28
28
  readonly type: string;
29
- readonly version: string;
30
- readonly domain: string;
29
+ readonly tag?: string;
30
+ readonly registry?: string;
31
31
  readonly path?: string;
32
32
  readonly description?: string;
33
33
  readonly author?: string;
@@ -40,14 +40,26 @@ interface RXD {
40
40
  * RXL - ResourceX Locator
41
41
  *
42
42
  * Unique identifier for a resource (pure data object).
43
- * Format: domain/[path/]name.type@version
43
+ * Docker-style format with optional tag.
44
+ *
45
+ * Format: [registry/][path/]name[:tag]
46
+ *
47
+ * Examples:
48
+ * - hello → name=hello, tag=latest (default)
49
+ * - hello:1.0.0 → name=hello, tag=1.0.0
50
+ * - prompts/hello:stable → path=prompts, name=hello, tag=stable
51
+ * - localhost:3098/hello:1.0.0 → registry=localhost:3098, name=hello, tag=1.0.0
52
+ * - registry.example.com/org/hello:latest → registry=registry.example.com, path=org, name=hello, tag=latest
44
53
  */
45
54
  interface RXL {
46
- readonly domain: string;
55
+ /** Registry host:port (e.g., "localhost:3098", "registry.example.com") */
56
+ readonly registry?: string;
57
+ /** Path within registry (e.g., "org", "prompts") */
47
58
  readonly path?: string;
59
+ /** Resource name */
48
60
  readonly name: string;
49
- readonly type: string;
50
- readonly version: string;
61
+ /** Tag (version or label). Defaults to "latest" if not specified. */
62
+ readonly tag: string;
51
63
  }
52
64
  /**
53
65
  * RXM - ResourceX Manifest
@@ -55,11 +67,11 @@ interface RXL {
55
67
  * Resource metadata stored within the resource (pure data object).
56
68
  */
57
69
  interface RXM {
58
- readonly domain: string;
70
+ readonly registry?: string;
59
71
  readonly path?: string;
60
72
  readonly name: string;
61
73
  readonly type: string;
62
- readonly version: string;
74
+ readonly tag: string;
63
75
  readonly files?: string[];
64
76
  }
65
77
  /**
@@ -131,7 +143,12 @@ declare function extract(rxa: RXA): Promise<Record<string, Buffer>>;
131
143
  /**
132
144
  * Format RXL to locator string.
133
145
  *
134
- * Format: domain/[path/]name.type@version
146
+ * Docker-style format: [registry/][path/]name[:tag]
147
+ *
148
+ * Examples:
149
+ * - { name: "hello", tag: "latest" } → "hello" (omit :latest)
150
+ * - { name: "hello", tag: "1.0.0" } → "hello:1.0.0"
151
+ * - { registry: "localhost:3098", name: "hello", tag: "1.0.0" } → "localhost:3098/hello:1.0.0"
135
152
  *
136
153
  * @param rxl - Resource locator
137
154
  * @returns Locator string
@@ -140,7 +157,13 @@ declare function format(rxl: RXL): string;
140
157
  /**
141
158
  * Parse locator string to RXL.
142
159
  *
143
- * Format: domain/[path/]name.type@version
160
+ * Docker-style format: [registry/][path/]name[:tag]
161
+ *
162
+ * Examples:
163
+ * - hello → name=hello, tag=latest
164
+ * - hello:1.0.0 → name=hello, tag=1.0.0
165
+ * - prompts/hello:stable → path=prompts, name=hello, tag=stable
166
+ * - localhost:3098/hello:1.0.0 → registry=localhost:3098, name=hello, tag=1.0.0
144
167
  *
145
168
  * @param locator - Locator string
146
169
  * @returns RXL object
package/dist/index.js CHANGED
@@ -47,15 +47,16 @@ function define(input) {
47
47
  if (!obj.type || typeof obj.type !== "string") {
48
48
  throw new DefinitionError("type is required");
49
49
  }
50
- if (!obj.version || typeof obj.version !== "string") {
51
- throw new DefinitionError("version is required");
50
+ const tagValue = obj.tag ?? obj.version;
51
+ if (tagValue !== undefined && typeof tagValue !== "string") {
52
+ throw new DefinitionError("tag must be a string");
52
53
  }
53
54
  const rxd = {
54
55
  ...obj,
55
56
  name: obj.name,
56
57
  type: obj.type,
57
- version: obj.version,
58
- domain: typeof obj.domain === "string" ? obj.domain : "localhost",
58
+ tag: typeof tagValue === "string" ? tagValue : undefined,
59
+ registry: typeof obj.registry === "string" ? obj.registry : undefined,
59
60
  path: typeof obj.path === "string" ? obj.path : undefined,
60
61
  description: typeof obj.description === "string" ? obj.description : undefined,
61
62
  author: typeof obj.author === "string" ? obj.author : undefined,
@@ -68,11 +69,11 @@ function define(input) {
68
69
  // src/primitives/manifest.ts
69
70
  function manifest(rxd) {
70
71
  return {
71
- domain: rxd.domain,
72
+ registry: rxd.registry,
72
73
  path: rxd.path,
73
74
  name: rxd.name,
74
75
  type: rxd.type,
75
- version: rxd.version
76
+ tag: rxd.tag ?? "latest"
76
77
  };
77
78
  }
78
79
  // src/primitives/archive.ts
@@ -1091,11 +1092,10 @@ async function archive(files) {
1091
1092
  // src/primitives/locate.ts
1092
1093
  function locate(rxm) {
1093
1094
  return {
1094
- domain: rxm.domain,
1095
+ registry: rxm.registry,
1095
1096
  path: rxm.path,
1096
1097
  name: rxm.name,
1097
- type: rxm.type,
1098
- version: rxm.version
1098
+ tag: rxm.tag
1099
1099
  };
1100
1100
  }
1101
1101
  // src/primitives/resource.ts
@@ -1125,57 +1125,86 @@ async function extract(rxa) {
1125
1125
  }
1126
1126
  // src/primitives/format.ts
1127
1127
  function format(rxl) {
1128
- let result = rxl.domain + "/";
1128
+ let result = "";
1129
+ if (rxl.registry) {
1130
+ result += rxl.registry + "/";
1131
+ }
1129
1132
  if (rxl.path) {
1130
1133
  result += rxl.path + "/";
1131
1134
  }
1132
1135
  result += rxl.name;
1133
- result += "." + rxl.type;
1134
- result += "@" + rxl.version;
1136
+ if (rxl.tag && rxl.tag !== "latest") {
1137
+ result += ":" + rxl.tag;
1138
+ }
1135
1139
  return result;
1136
1140
  }
1137
1141
  // src/primitives/parse.ts
1142
+ function looksLikeRegistry(str) {
1143
+ if (str.includes(":") && !str.includes("/")) {
1144
+ return true;
1145
+ }
1146
+ if (str.includes(".")) {
1147
+ return true;
1148
+ }
1149
+ if (str === "localhost") {
1150
+ return true;
1151
+ }
1152
+ return false;
1153
+ }
1138
1154
  function parse(locator) {
1139
1155
  if (!locator || typeof locator !== "string") {
1140
- throw new LocatorError("locator must be a non-empty string", locator);
1156
+ throw new LocatorError("Locator must be a non-empty string", locator);
1141
1157
  }
1142
- const atIndex = locator.lastIndexOf("@");
1143
- if (atIndex === -1) {
1144
- throw new LocatorError("locator must contain version (@)", locator);
1158
+ if (locator.includes("@")) {
1159
+ throw new LocatorError("Invalid locator format. Use name:tag instead of name@version", locator);
1145
1160
  }
1146
- const version = locator.slice(atIndex + 1);
1147
- const beforeVersion = locator.slice(0, atIndex);
1148
- if (!version) {
1149
- throw new LocatorError("version is required", locator);
1161
+ const lastSlashIndex = locator.lastIndexOf("/");
1162
+ let beforeSlash = "";
1163
+ let afterSlash = locator;
1164
+ if (lastSlashIndex !== -1) {
1165
+ beforeSlash = locator.substring(0, lastSlashIndex);
1166
+ afterSlash = locator.substring(lastSlashIndex + 1);
1150
1167
  }
1151
- const dotIndex = beforeVersion.lastIndexOf(".");
1152
- if (dotIndex === -1) {
1153
- throw new LocatorError("locator must contain type (.)", locator);
1168
+ const colonIndex = afterSlash.lastIndexOf(":");
1169
+ let name;
1170
+ let tag;
1171
+ if (colonIndex === -1) {
1172
+ name = afterSlash;
1173
+ tag = "latest";
1174
+ } else {
1175
+ name = afterSlash.substring(0, colonIndex);
1176
+ tag = afterSlash.substring(colonIndex + 1);
1154
1177
  }
1155
- const type = beforeVersion.slice(dotIndex + 1);
1156
- const beforeType = beforeVersion.slice(0, dotIndex);
1157
- if (!type) {
1158
- throw new LocatorError("type is required", locator);
1178
+ if (!name) {
1179
+ throw new LocatorError("Name is required", locator);
1159
1180
  }
1160
- const parts = beforeType.split("/");
1161
- if (parts.length < 2) {
1162
- throw new LocatorError("locator must contain domain", locator);
1181
+ if (!tag) {
1182
+ throw new LocatorError("Tag cannot be empty. Use name:tag format or omit tag for :latest", locator);
1163
1183
  }
1164
- const domain = parts[0];
1165
- const name = parts[parts.length - 1];
1166
- const path = parts.length > 2 ? parts.slice(1, -1).join("/") : undefined;
1167
- if (!domain) {
1168
- throw new LocatorError("domain is required", locator);
1184
+ if (lastSlashIndex === -1) {
1185
+ return {
1186
+ registry: undefined,
1187
+ path: undefined,
1188
+ name,
1189
+ tag
1190
+ };
1169
1191
  }
1170
- if (!name) {
1171
- throw new LocatorError("name is required", locator);
1192
+ const parts = beforeSlash.split("/");
1193
+ if (looksLikeRegistry(parts[0])) {
1194
+ const registry = parts[0];
1195
+ const path = parts.length > 1 ? parts.slice(1).join("/") : undefined;
1196
+ return {
1197
+ registry,
1198
+ path,
1199
+ name,
1200
+ tag
1201
+ };
1172
1202
  }
1173
1203
  return {
1174
- domain,
1175
- path,
1204
+ registry: undefined,
1205
+ path: beforeSlash,
1176
1206
  name,
1177
- type,
1178
- version
1207
+ tag
1179
1208
  };
1180
1209
  }
1181
1210
  // src/primitives/wrap.ts
@@ -1217,4 +1246,4 @@ export {
1217
1246
  ContentError
1218
1247
  };
1219
1248
 
1220
- //# debugId=467D5F5D80C42E4F64756E2164756E21
1249
+ //# debugId=E36D0778C816F02964756E2164756E21
package/dist/index.js.map CHANGED
@@ -3,19 +3,19 @@
3
3
  "sources": ["../src/errors.ts", "../src/primitives/define.ts", "../src/primitives/manifest.ts", "../src/primitives/archive.ts", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/unpacker-BpPBxY8N.js", "../../../node_modules/.bun/modern-tar@0.7.3/node_modules/modern-tar/dist/web/index.js", "../src/primitives/locate.ts", "../src/primitives/resource.ts", "../src/primitives/extract.ts", "../src/primitives/format.ts", "../src/primitives/parse.ts", "../src/primitives/wrap.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * ResourceX Error hierarchy\n */\n\nexport class ResourceXError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nexport class LocatorError extends ResourceXError {\n constructor(\n message: string,\n public readonly locator?: string\n ) {\n super(message);\n this.name = \"LocatorError\";\n }\n}\n\nexport class ManifestError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ManifestError\";\n }\n}\n\nexport class ContentError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"ContentError\";\n }\n}\n\nexport class DefinitionError extends ResourceXError {\n constructor(message: string) {\n super(message);\n this.name = \"DefinitionError\";\n }\n}\n",
6
- "import type { RXD } from \"~/types/index.js\";\nimport { DefinitionError } from \"~/errors.js\";\n\n/**\n * Parse and validate a resource definition (resource.json content).\n *\n * @param input - The raw JSON object to parse\n * @returns A validated RXD object\n * @throws DefinitionError if validation fails\n */\nexport function define(input: unknown): RXD {\n if (input === null || typeof input !== \"object\") {\n throw new DefinitionError(\"definition must be an object\");\n }\n\n const obj = input as Record<string, unknown>;\n\n if (!obj.name || typeof obj.name !== \"string\") {\n throw new DefinitionError(\"name is required\");\n }\n\n if (!obj.type || typeof obj.type !== \"string\") {\n throw new DefinitionError(\"type is required\");\n }\n\n if (!obj.version || typeof obj.version !== \"string\") {\n throw new DefinitionError(\"version is required\");\n }\n\n // Build RXD with defaults\n const rxd: RXD = {\n ...obj,\n name: obj.name,\n type: obj.type,\n version: obj.version,\n domain: typeof obj.domain === \"string\" ? obj.domain : \"localhost\",\n path: typeof obj.path === \"string\" ? obj.path : undefined,\n description: typeof obj.description === \"string\" ? obj.description : undefined,\n author: typeof obj.author === \"string\" ? obj.author : undefined,\n license: typeof obj.license === \"string\" ? obj.license : undefined,\n keywords: Array.isArray(obj.keywords) ? obj.keywords : undefined,\n repository: typeof obj.repository === \"string\" ? obj.repository : undefined,\n };\n\n return rxd;\n}\n",
7
- "import type { RXD, RXM } from \"~/types/index.js\";\n\n/**\n * Create RXM from RXD.\n * Extracts only the core metadata fields (pure data object).\n *\n * @param rxd - Resource definition\n * @returns RXM manifest object\n */\nexport function manifest(rxd: RXD): RXM {\n return {\n domain: rxd.domain,\n path: rxd.path,\n name: rxd.name,\n type: rxd.type,\n version: rxd.version,\n };\n}\n",
6
+ "import type { RXD } from \"~/types/index.js\";\nimport { DefinitionError } from \"~/errors.js\";\n\n/**\n * Parse and validate a resource definition (resource.json content).\n *\n * @param input - The raw JSON object to parse\n * @returns A validated RXD object\n * @throws DefinitionError if validation fails\n */\nexport function define(input: unknown): RXD {\n if (input === null || typeof input !== \"object\") {\n throw new DefinitionError(\"definition must be an object\");\n }\n\n const obj = input as Record<string, unknown>;\n\n if (!obj.name || typeof obj.name !== \"string\") {\n throw new DefinitionError(\"name is required\");\n }\n\n if (!obj.type || typeof obj.type !== \"string\") {\n throw new DefinitionError(\"type is required\");\n }\n\n // tag is optional, defaults to \"latest\"\n // Also accept \"version\" as alias for backward compatibility\n const tagValue = obj.tag ?? obj.version;\n if (tagValue !== undefined && typeof tagValue !== \"string\") {\n throw new DefinitionError(\"tag must be a string\");\n }\n\n // Build RXD with defaults\n const rxd: RXD = {\n ...obj,\n name: obj.name,\n type: obj.type,\n tag: typeof tagValue === \"string\" ? tagValue : undefined,\n registry: typeof obj.registry === \"string\" ? obj.registry : undefined,\n path: typeof obj.path === \"string\" ? obj.path : undefined,\n description: typeof obj.description === \"string\" ? obj.description : undefined,\n author: typeof obj.author === \"string\" ? obj.author : undefined,\n license: typeof obj.license === \"string\" ? obj.license : undefined,\n keywords: Array.isArray(obj.keywords) ? obj.keywords : undefined,\n repository: typeof obj.repository === \"string\" ? obj.repository : undefined,\n };\n\n return rxd;\n}\n",
7
+ "import type { RXD, RXM } from \"~/types/index.js\";\n\n/**\n * Create RXM from RXD.\n * Extracts only the core metadata fields (pure data object).\n *\n * @param rxd - Resource definition\n * @returns RXM manifest object\n */\nexport function manifest(rxd: RXD): RXM {\n return {\n registry: rxd.registry,\n path: rxd.path,\n name: rxd.name,\n type: rxd.type,\n tag: rxd.tag ?? \"latest\",\n };\n}\n",
8
8
  "import { gzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { packTar } from \"modern-tar\";\nimport type { RXA } from \"~/types/index.js\";\n\nconst gzipAsync = promisify(gzip);\n\n/**\n * RXA Implementation for primitives\n */\nclass RXAImpl implements RXA {\n private readonly _buffer: Buffer;\n\n constructor(buffer: Buffer) {\n this._buffer = buffer;\n }\n\n get stream(): ReadableStream<Uint8Array> {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n },\n });\n }\n\n async buffer(): Promise<Buffer> {\n return this._buffer;\n }\n}\n\n/**\n * Create RXA from files.\n *\n * @param files - Record of file paths to Buffer contents\n * @returns RXA archive object\n */\nexport async function archive(files: Record<string, Buffer>): Promise<RXA> {\n const entries = Object.entries(files).map(([name, content]) => {\n return {\n header: { name, size: content.length, type: \"file\" as const },\n body: new Uint8Array(content),\n };\n });\n\n // Pack to tar\n const tarBuffer = await packTar(entries);\n\n // Compress with gzip\n const gzipBuffer = await gzipAsync(Buffer.from(tarBuffer));\n\n return new RXAImpl(gzipBuffer);\n}\n",
9
9
  "//#region src/tar/constants.ts\nconst BLOCK_SIZE = 512;\nconst BLOCK_SIZE_MASK = 511;\nconst DEFAULT_FILE_MODE = 420;\nconst DEFAULT_DIR_MODE = 493;\nconst USTAR_NAME_OFFSET = 0;\nconst USTAR_NAME_SIZE = 100;\nconst USTAR_MODE_OFFSET = 100;\nconst USTAR_MODE_SIZE = 8;\nconst USTAR_UID_OFFSET = 108;\nconst USTAR_UID_SIZE = 8;\nconst USTAR_GID_OFFSET = 116;\nconst USTAR_GID_SIZE = 8;\nconst USTAR_SIZE_OFFSET = 124;\nconst USTAR_SIZE_SIZE = 12;\nconst USTAR_MTIME_OFFSET = 136;\nconst USTAR_MTIME_SIZE = 12;\nconst USTAR_CHECKSUM_OFFSET = 148;\nconst USTAR_CHECKSUM_SIZE = 8;\nconst USTAR_TYPEFLAG_OFFSET = 156;\nconst USTAR_TYPEFLAG_SIZE = 1;\nconst USTAR_LINKNAME_OFFSET = 157;\nconst USTAR_LINKNAME_SIZE = 100;\nconst USTAR_MAGIC_OFFSET = 257;\nconst USTAR_MAGIC_SIZE = 6;\nconst USTAR_VERSION_OFFSET = 263;\nconst USTAR_VERSION_SIZE = 2;\nconst USTAR_UNAME_OFFSET = 265;\nconst USTAR_UNAME_SIZE = 32;\nconst USTAR_GNAME_OFFSET = 297;\nconst USTAR_GNAME_SIZE = 32;\nconst USTAR_PREFIX_OFFSET = 345;\nconst USTAR_PREFIX_SIZE = 155;\nconst USTAR_VERSION = \"00\";\nconst USTAR_MAX_UID_GID = 2097151;\nconst USTAR_MAX_SIZE = 8589934591;\nconst FILE = \"file\";\nconst LINK = \"link\";\nconst SYMLINK = \"symlink\";\nconst DIRECTORY = \"directory\";\nconst TYPEFLAG = {\n\tfile: \"0\",\n\tlink: \"1\",\n\tsymlink: \"2\",\n\t\"character-device\": \"3\",\n\t\"block-device\": \"4\",\n\tdirectory: \"5\",\n\tfifo: \"6\",\n\t\"pax-header\": \"x\",\n\t\"pax-global-header\": \"g\",\n\t\"gnu-long-name\": \"L\",\n\t\"gnu-long-link-name\": \"K\"\n};\nconst FLAGTYPE = {\n\t\"0\": FILE,\n\t\"1\": LINK,\n\t\"2\": SYMLINK,\n\t\"3\": \"character-device\",\n\t\"4\": \"block-device\",\n\t\"5\": DIRECTORY,\n\t\"6\": \"fifo\",\n\tx: \"pax-header\",\n\tg: \"pax-global-header\",\n\tL: \"gnu-long-name\",\n\tK: \"gnu-long-link-name\"\n};\nconst ZERO_BLOCK = new Uint8Array(BLOCK_SIZE);\nconst EMPTY = new Uint8Array(0);\n\n//#endregion\n//#region src/tar/encoding.ts\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction writeString(view, offset, size, value) {\n\tif (value) encoder.encodeInto(value, view.subarray(offset, offset + size));\n}\nfunction writeOctal(view, offset, size, value) {\n\tif (value === void 0) return;\n\tconst octalString = value.toString(8).padStart(size - 1, \"0\");\n\tencoder.encodeInto(octalString, view.subarray(offset, offset + size - 1));\n}\nfunction readString(view, offset, size) {\n\tconst end = view.indexOf(0, offset);\n\tconst sliceEnd = end === -1 || end > offset + size ? offset + size : end;\n\treturn decoder.decode(view.subarray(offset, sliceEnd));\n}\nfunction readOctal(view, offset, size) {\n\tlet value = 0;\n\tconst end = offset + size;\n\tfor (let i = offset; i < end; i++) {\n\t\tconst charCode = view[i];\n\t\tif (charCode === 0) break;\n\t\tif (charCode === 32) continue;\n\t\tvalue = value * 8 + (charCode - 48);\n\t}\n\treturn value;\n}\nfunction readNumeric(view, offset, size) {\n\tif (view[offset] & 128) {\n\t\tlet result = 0;\n\t\tresult = view[offset] & 127;\n\t\tfor (let i = 1; i < size; i++) result = result * 256 + view[offset + i];\n\t\tif (!Number.isSafeInteger(result)) throw new Error(\"TAR number too large\");\n\t\treturn result;\n\t}\n\treturn readOctal(view, offset, size);\n}\n\n//#endregion\n//#region src/tar/body.ts\nconst isBodyless = (header) => header.type === DIRECTORY || header.type === SYMLINK || header.type === LINK;\nasync function normalizeBody(body) {\n\tif (body === null || body === void 0) return EMPTY;\n\tif (body instanceof Uint8Array) return body;\n\tif (typeof body === \"string\") return encoder.encode(body);\n\tif (body instanceof ArrayBuffer) return new Uint8Array(body);\n\tif (body instanceof Blob) return new Uint8Array(await body.arrayBuffer());\n\tthrow new TypeError(\"Unsupported content type for entry body.\");\n}\n\n//#endregion\n//#region src/tar/options.ts\nfunction transformHeader(header, options) {\n\tconst { strip, filter, map } = options;\n\tif (!strip && !filter && !map) return header;\n\tconst h = { ...header };\n\tif (strip && strip > 0) {\n\t\tconst components = h.name.split(\"/\").filter(Boolean);\n\t\tif (strip >= components.length) return null;\n\t\tconst newName = components.slice(strip).join(\"/\");\n\t\th.name = h.type === DIRECTORY && !newName.endsWith(\"/\") ? `${newName}/` : newName;\n\t\tif (h.linkname?.startsWith(\"/\")) {\n\t\t\tconst linkComponents = h.linkname.split(\"/\").filter(Boolean);\n\t\t\th.linkname = strip >= linkComponents.length ? \"/\" : `/${linkComponents.slice(strip).join(\"/\")}`;\n\t\t}\n\t}\n\tif (filter?.(h) === false) return null;\n\tconst result = map ? map(h) : h;\n\tif (result && (!result.name || !result.name.trim() || result.name === \".\" || result.name === \"/\")) return null;\n\treturn result;\n}\n\n//#endregion\n//#region src/tar/checksum.ts\nconst CHECKSUM_SPACE = 32;\nconst ASCII_ZERO = 48;\nfunction validateChecksum(block) {\n\tconst stored = readOctal(block, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_SIZE);\n\tlet sum = 0;\n\tfor (let i = 0; i < block.length; i++) if (i >= USTAR_CHECKSUM_OFFSET && i < USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE) sum += CHECKSUM_SPACE;\n\telse sum += block[i];\n\treturn stored === sum;\n}\nfunction writeChecksum(block) {\n\tblock.fill(CHECKSUM_SPACE, USTAR_CHECKSUM_OFFSET, USTAR_CHECKSUM_OFFSET + USTAR_CHECKSUM_SIZE);\n\tlet checksum = 0;\n\tfor (const byte of block) checksum += byte;\n\tfor (let i = USTAR_CHECKSUM_OFFSET + 6 - 1; i >= USTAR_CHECKSUM_OFFSET; i--) {\n\t\tblock[i] = (checksum & 7) + ASCII_ZERO;\n\t\tchecksum >>= 3;\n\t}\n\tblock[USTAR_CHECKSUM_OFFSET + 6] = 0;\n\tblock[USTAR_CHECKSUM_OFFSET + 7] = CHECKSUM_SPACE;\n}\n\n//#endregion\n//#region src/tar/pax.ts\nfunction generatePax(header) {\n\tconst paxRecords = {};\n\tif (header.name.length > USTAR_NAME_SIZE) {\n\t\tif (findUstarSplit(header.name) === null) paxRecords.path = header.name;\n\t}\n\tif (header.linkname && header.linkname.length > USTAR_NAME_SIZE) paxRecords.linkpath = header.linkname;\n\tif (header.uname && header.uname.length > USTAR_UNAME_SIZE) paxRecords.uname = header.uname;\n\tif (header.gname && header.gname.length > USTAR_GNAME_SIZE) paxRecords.gname = header.gname;\n\tif (header.uid != null && header.uid > USTAR_MAX_UID_GID) paxRecords.uid = String(header.uid);\n\tif (header.gid != null && header.gid > USTAR_MAX_UID_GID) paxRecords.gid = String(header.gid);\n\tif (header.size != null && header.size > USTAR_MAX_SIZE) paxRecords.size = String(header.size);\n\tif (header.pax) Object.assign(paxRecords, header.pax);\n\tconst paxEntries = Object.entries(paxRecords);\n\tif (paxEntries.length === 0) return null;\n\tconst paxBody = encoder.encode(paxEntries.map(([key, value]) => {\n\t\tconst record = `${key}=${value}\\n`;\n\t\tconst partLength = encoder.encode(record).length + 1;\n\t\tlet totalLength = partLength + String(partLength).length;\n\t\ttotalLength = partLength + String(totalLength).length;\n\t\treturn `${totalLength} ${record}`;\n\t}).join(\"\"));\n\treturn {\n\t\tpaxHeader: createTarHeader({\n\t\t\tname: decoder.decode(encoder.encode(`PaxHeader/${header.name}`).slice(0, 100)),\n\t\t\tsize: paxBody.length,\n\t\t\ttype: \"pax-header\",\n\t\t\tmode: 420,\n\t\t\tmtime: header.mtime,\n\t\t\tuname: header.uname,\n\t\t\tgname: header.gname,\n\t\t\tuid: header.uid,\n\t\t\tgid: header.gid\n\t\t}),\n\t\tpaxBody\n\t};\n}\nfunction findUstarSplit(path) {\n\tif (path.length <= USTAR_NAME_SIZE) return null;\n\tconst minSlashIndex = path.length - USTAR_NAME_SIZE - 1;\n\tconst slashIndex = path.lastIndexOf(\"/\", USTAR_PREFIX_SIZE);\n\tif (slashIndex > 0 && slashIndex >= minSlashIndex) return {\n\t\tprefix: path.slice(0, slashIndex),\n\t\tname: path.slice(slashIndex + 1)\n\t};\n\treturn null;\n}\n\n//#endregion\n//#region src/tar/header.ts\nfunction createTarHeader(header) {\n\tconst view = new Uint8Array(BLOCK_SIZE);\n\tconst size = isBodyless(header) ? 0 : header.size ?? 0;\n\tlet name = header.name;\n\tlet prefix = \"\";\n\tif (!header.pax?.path) {\n\t\tconst split = findUstarSplit(name);\n\t\tif (split) {\n\t\t\tname = split.name;\n\t\t\tprefix = split.prefix;\n\t\t}\n\t}\n\twriteString(view, USTAR_NAME_OFFSET, USTAR_NAME_SIZE, name);\n\twriteOctal(view, USTAR_MODE_OFFSET, USTAR_MODE_SIZE, header.mode ?? (header.type === DIRECTORY ? DEFAULT_DIR_MODE : DEFAULT_FILE_MODE));\n\twriteOctal(view, USTAR_UID_OFFSET, USTAR_UID_SIZE, header.uid ?? 0);\n\twriteOctal(view, USTAR_GID_OFFSET, USTAR_GID_SIZE, header.gid ?? 0);\n\twriteOctal(view, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE, size);\n\twriteOctal(view, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE, Math.floor((header.mtime?.getTime() ?? Date.now()) / 1e3));\n\twriteString(view, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE, TYPEFLAG[header.type ?? FILE]);\n\twriteString(view, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE, header.linkname);\n\twriteString(view, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE, \"ustar\\0\");\n\twriteString(view, USTAR_VERSION_OFFSET, USTAR_VERSION_SIZE, USTAR_VERSION);\n\twriteString(view, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE, header.uname);\n\twriteString(view, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE, header.gname);\n\twriteString(view, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE, prefix);\n\twriteChecksum(view);\n\treturn view;\n}\nfunction parseUstarHeader(block, strict) {\n\tif (strict && !validateChecksum(block)) throw new Error(\"Invalid tar header checksum.\");\n\tconst typeflag = readString(block, USTAR_TYPEFLAG_OFFSET, USTAR_TYPEFLAG_SIZE);\n\tconst header = {\n\t\tname: readString(block, USTAR_NAME_OFFSET, USTAR_NAME_SIZE),\n\t\tmode: readOctal(block, USTAR_MODE_OFFSET, USTAR_MODE_SIZE),\n\t\tuid: readNumeric(block, USTAR_UID_OFFSET, USTAR_UID_SIZE),\n\t\tgid: readNumeric(block, USTAR_GID_OFFSET, USTAR_GID_SIZE),\n\t\tsize: readNumeric(block, USTAR_SIZE_OFFSET, USTAR_SIZE_SIZE),\n\t\tmtime: /* @__PURE__ */ new Date(readNumeric(block, USTAR_MTIME_OFFSET, USTAR_MTIME_SIZE) * 1e3),\n\t\ttype: FLAGTYPE[typeflag] || FILE,\n\t\tlinkname: readString(block, USTAR_LINKNAME_OFFSET, USTAR_LINKNAME_SIZE)\n\t};\n\tconst magic = readString(block, USTAR_MAGIC_OFFSET, USTAR_MAGIC_SIZE);\n\tif (magic.trim() === \"ustar\") {\n\t\theader.uname = readString(block, USTAR_UNAME_OFFSET, USTAR_UNAME_SIZE);\n\t\theader.gname = readString(block, USTAR_GNAME_OFFSET, USTAR_GNAME_SIZE);\n\t}\n\tif (magic === \"ustar\") header.prefix = readString(block, USTAR_PREFIX_OFFSET, USTAR_PREFIX_SIZE);\n\treturn header;\n}\nconst PAX_MAPPING = {\n\tpath: [\"name\", (v) => v],\n\tlinkpath: [\"linkname\", (v) => v],\n\tsize: [\"size\", (v) => parseInt(v, 10)],\n\tmtime: [\"mtime\", parseFloat],\n\tuid: [\"uid\", (v) => parseInt(v, 10)],\n\tgid: [\"gid\", (v) => parseInt(v, 10)],\n\tuname: [\"uname\", (v) => v],\n\tgname: [\"gname\", (v) => v]\n};\nfunction parsePax(buffer) {\n\tconst decoder$1 = new TextDecoder(\"utf-8\");\n\tconst overrides = {};\n\tconst pax = {};\n\tlet offset = 0;\n\twhile (offset < buffer.length) {\n\t\tconst spaceIndex = buffer.indexOf(32, offset);\n\t\tif (spaceIndex === -1) break;\n\t\tconst length = parseInt(decoder$1.decode(buffer.subarray(offset, spaceIndex)), 10);\n\t\tif (Number.isNaN(length) || length === 0) break;\n\t\tconst recordEnd = offset + length;\n\t\tconst [key, value] = decoder$1.decode(buffer.subarray(spaceIndex + 1, recordEnd - 1)).split(\"=\", 2);\n\t\tif (key && value !== void 0) {\n\t\t\tpax[key] = value;\n\t\t\tconst mapping = PAX_MAPPING[key];\n\t\t\tif (mapping) {\n\t\t\t\tconst [targetKey, parser] = mapping;\n\t\t\t\tconst parsedValue = parser(value);\n\t\t\t\tif (typeof parsedValue === \"string\" || !Number.isNaN(parsedValue)) overrides[targetKey] = parsedValue;\n\t\t\t}\n\t\t}\n\t\toffset = recordEnd;\n\t}\n\tif (Object.keys(pax).length > 0) overrides.pax = pax;\n\treturn overrides;\n}\nfunction applyOverrides(header, overrides) {\n\tif (overrides.name !== void 0) header.name = overrides.name;\n\tif (overrides.linkname !== void 0) header.linkname = overrides.linkname;\n\tif (overrides.size !== void 0) header.size = overrides.size;\n\tif (overrides.mtime !== void 0) header.mtime = /* @__PURE__ */ new Date(overrides.mtime * 1e3);\n\tif (overrides.uid !== void 0) header.uid = overrides.uid;\n\tif (overrides.gid !== void 0) header.gid = overrides.gid;\n\tif (overrides.uname !== void 0) header.uname = overrides.uname;\n\tif (overrides.gname !== void 0) header.gname = overrides.gname;\n\tif (overrides.pax) header.pax = Object.assign({}, header.pax ?? {}, overrides.pax);\n}\nfunction getMetaParser(type) {\n\tswitch (type) {\n\t\tcase \"pax-global-header\":\n\t\tcase \"pax-header\": return parsePax;\n\t\tcase \"gnu-long-name\": return (data) => ({ name: readString(data, 0, data.length) });\n\t\tcase \"gnu-long-link-name\": return (data) => ({ linkname: readString(data, 0, data.length) });\n\t\tdefault: return;\n\t}\n}\nfunction getHeaderBlocks(header) {\n\tconst base = createTarHeader(header);\n\tconst pax = generatePax(header);\n\tif (!pax) return [base];\n\tconst paxPadding = -pax.paxBody.length & BLOCK_SIZE_MASK;\n\tconst paddingBlocks = paxPadding > 0 ? [ZERO_BLOCK.subarray(0, paxPadding)] : [];\n\treturn [\n\t\tpax.paxHeader,\n\t\tpax.paxBody,\n\t\t...paddingBlocks,\n\t\tbase\n\t];\n}\n\n//#endregion\n//#region src/tar/packer.ts\nconst EOF_BUFFER = new Uint8Array(BLOCK_SIZE * 2);\nfunction createTarPacker(onData, onError, onFinalize) {\n\tlet currentHeader = null;\n\tlet bytesWritten = 0;\n\tlet finalized = false;\n\treturn {\n\t\tadd(header) {\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No new tar entries after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (currentHeader !== null) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Previous entry must be completed before adding a new one\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst size = isBodyless(header) ? 0 : header.size ?? 0;\n\t\t\t\tconst headerBlocks = getHeaderBlocks({\n\t\t\t\t\t...header,\n\t\t\t\t\tsize\n\t\t\t\t});\n\t\t\t\tfor (const block of headerBlocks) onData(block);\n\t\t\t\tcurrentHeader = {\n\t\t\t\t\t...header,\n\t\t\t\t\tsize\n\t\t\t\t};\n\t\t\t\tbytesWritten = 0;\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t},\n\t\twrite(chunk) {\n\t\t\tif (!currentHeader) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No active tar entry.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot write data after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst newTotal = bytesWritten + chunk.length;\n\t\t\tif (newTotal > currentHeader.size) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(`\"${currentHeader.name}\" exceeds given size of ${currentHeader.size} bytes.`);\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tbytesWritten = newTotal;\n\t\t\t\tonData(chunk);\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t},\n\t\tendEntry() {\n\t\t\tif (!currentHeader) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"No active entry to end.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot end entry after finalize.\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tif (bytesWritten !== currentHeader.size) {\n\t\t\t\t\tconst error = /* @__PURE__ */ new Error(`Size mismatch for \"${currentHeader.name}\".`);\n\t\t\t\t\tonError(error);\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tconst paddingSize = -currentHeader.size & BLOCK_SIZE_MASK;\n\t\t\t\tif (paddingSize > 0) onData(new Uint8Array(paddingSize));\n\t\t\t\tcurrentHeader = null;\n\t\t\t\tbytesWritten = 0;\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tfinalize() {\n\t\t\tif (finalized) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Archive has already been finalized\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (currentHeader !== null) {\n\t\t\t\tconst error = /* @__PURE__ */ new Error(\"Cannot finalize while an entry is still active\");\n\t\t\t\tonError(error);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tonData(EOF_BUFFER);\n\t\t\t\tfinalized = true;\n\t\t\t\tif (onFinalize) onFinalize();\n\t\t\t} catch (error) {\n\t\t\t\tonError(error);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/tar/chunk-queue.ts\nconst INITIAL_CAPACITY = 256;\nfunction createChunkQueue() {\n\tlet chunks = new Array(INITIAL_CAPACITY);\n\tlet capacityMask = chunks.length - 1;\n\tlet head = 0;\n\tlet tail = 0;\n\tlet totalAvailable = 0;\n\tconst consumeFromHead = (count) => {\n\t\tconst chunk = chunks[head];\n\t\tif (count === chunk.length) {\n\t\t\tchunks[head] = EMPTY;\n\t\t\thead = head + 1 & capacityMask;\n\t\t} else chunks[head] = chunk.subarray(count);\n\t\ttotalAvailable -= count;\n\t\tif (totalAvailable === 0 && chunks.length > INITIAL_CAPACITY) {\n\t\t\tchunks = new Array(INITIAL_CAPACITY);\n\t\t\tcapacityMask = INITIAL_CAPACITY - 1;\n\t\t\thead = 0;\n\t\t\ttail = 0;\n\t\t}\n\t};\n\tfunction pull(bytes, callback) {\n\t\tif (callback) {\n\t\t\tlet fed = 0;\n\t\t\tlet remaining$1 = Math.min(bytes, totalAvailable);\n\t\t\twhile (remaining$1 > 0) {\n\t\t\t\tconst chunk = chunks[head];\n\t\t\t\tconst toFeed = Math.min(remaining$1, chunk.length);\n\t\t\t\tconst segment = toFeed === chunk.length ? chunk : chunk.subarray(0, toFeed);\n\t\t\t\tconsumeFromHead(toFeed);\n\t\t\t\tremaining$1 -= toFeed;\n\t\t\t\tfed += toFeed;\n\t\t\t\tif (!callback(segment)) break;\n\t\t\t}\n\t\t\treturn fed;\n\t\t}\n\t\tif (totalAvailable < bytes) return null;\n\t\tif (bytes === 0) return EMPTY;\n\t\tconst firstChunk = chunks[head];\n\t\tif (firstChunk.length >= bytes) {\n\t\t\tconst view = firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n\t\t\tconsumeFromHead(bytes);\n\t\t\treturn view;\n\t\t}\n\t\tconst result = new Uint8Array(bytes);\n\t\tlet copied = 0;\n\t\tlet remaining = bytes;\n\t\twhile (remaining > 0) {\n\t\t\tconst chunk = chunks[head];\n\t\t\tconst toCopy = Math.min(remaining, chunk.length);\n\t\t\tresult.set(toCopy === chunk.length ? chunk : chunk.subarray(0, toCopy), copied);\n\t\t\tcopied += toCopy;\n\t\t\tremaining -= toCopy;\n\t\t\tconsumeFromHead(toCopy);\n\t\t}\n\t\treturn result;\n\t}\n\treturn {\n\t\tpush: (chunk) => {\n\t\t\tif (chunk.length === 0) return;\n\t\t\tlet nextTail = tail + 1 & capacityMask;\n\t\t\tif (nextTail === head) {\n\t\t\t\tconst oldLen = chunks.length;\n\t\t\t\tconst newLen = oldLen * 2;\n\t\t\t\tconst newChunks = new Array(newLen);\n\t\t\t\tconst count = tail - head + oldLen & oldLen - 1;\n\t\t\t\tif (head < tail) for (let i = 0; i < count; i++) newChunks[i] = chunks[head + i];\n\t\t\t\telse if (count > 0) {\n\t\t\t\t\tconst firstPart = oldLen - head;\n\t\t\t\t\tfor (let i = 0; i < firstPart; i++) newChunks[i] = chunks[head + i];\n\t\t\t\t\tfor (let i = 0; i < tail; i++) newChunks[firstPart + i] = chunks[i];\n\t\t\t\t}\n\t\t\t\tchunks = newChunks;\n\t\t\t\tcapacityMask = newLen - 1;\n\t\t\t\thead = 0;\n\t\t\t\ttail = count;\n\t\t\t\tnextTail = tail + 1 & capacityMask;\n\t\t\t}\n\t\t\tchunks[tail] = chunk;\n\t\t\ttail = nextTail;\n\t\t\ttotalAvailable += chunk.length;\n\t\t},\n\t\tavailable: () => totalAvailable,\n\t\tpeek: (bytes) => {\n\t\t\tif (totalAvailable < bytes) return null;\n\t\t\tif (bytes === 0) return EMPTY;\n\t\t\tconst firstChunk = chunks[head];\n\t\t\tif (firstChunk.length >= bytes) return firstChunk.length === bytes ? firstChunk : firstChunk.subarray(0, bytes);\n\t\t\tconst result = new Uint8Array(bytes);\n\t\t\tlet copied = 0;\n\t\t\tlet index = head;\n\t\t\twhile (copied < bytes) {\n\t\t\t\tconst chunk = chunks[index];\n\t\t\t\tconst toCopy = Math.min(bytes - copied, chunk.length);\n\t\t\t\tif (toCopy === chunk.length) result.set(chunk, copied);\n\t\t\t\telse result.set(chunk.subarray(0, toCopy), copied);\n\t\t\t\tcopied += toCopy;\n\t\t\t\tindex = index + 1 & capacityMask;\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tdiscard: (bytes) => {\n\t\t\tif (bytes > totalAvailable) throw new Error(\"Too many bytes consumed\");\n\t\t\tif (bytes === 0) return;\n\t\t\tlet remaining = bytes;\n\t\t\twhile (remaining > 0) {\n\t\t\t\tconst chunk = chunks[head];\n\t\t\t\tconst toConsume = Math.min(remaining, chunk.length);\n\t\t\t\tconsumeFromHead(toConsume);\n\t\t\t\tremaining -= toConsume;\n\t\t\t}\n\t\t},\n\t\tpull\n\t};\n}\n\n//#endregion\n//#region src/tar/unpacker.ts\nconst STATE_HEADER = 0;\nconst STATE_BODY = 1;\nconst truncateErr = /* @__PURE__ */ new Error(\"Tar archive is truncated.\");\nfunction createUnpacker(options = {}) {\n\tconst strict = options.strict ?? false;\n\tconst { available, peek, push, discard, pull } = createChunkQueue();\n\tlet state = STATE_HEADER;\n\tlet ended = false;\n\tlet done = false;\n\tlet eof = false;\n\tlet currentEntry = null;\n\tconst paxGlobals = {};\n\tlet nextEntryOverrides = {};\n\tconst unpacker = {\n\t\tisEntryActive: () => state === STATE_BODY,\n\t\tisBodyComplete: () => !currentEntry || currentEntry.remaining === 0,\n\t\twrite(chunk) {\n\t\t\tif (ended) throw new Error(\"Archive already ended.\");\n\t\t\tpush(chunk);\n\t\t},\n\t\tend() {\n\t\t\tended = true;\n\t\t},\n\t\treadHeader() {\n\t\t\tif (state !== STATE_HEADER) throw new Error(\"Cannot read header while an entry is active\");\n\t\t\tif (done) return void 0;\n\t\t\twhile (!done) {\n\t\t\t\tif (available() < BLOCK_SIZE) {\n\t\t\t\t\tif (ended) {\n\t\t\t\t\t\tif (available() > 0 && strict) throw truncateErr;\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst headerBlock = peek(BLOCK_SIZE);\n\t\t\t\tif (isZeroBlock(headerBlock)) {\n\t\t\t\t\tif (available() < BLOCK_SIZE * 2) {\n\t\t\t\t\t\tif (ended) {\n\t\t\t\t\t\t\tif (strict) throw truncateErr;\n\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tif (isZeroBlock(peek(BLOCK_SIZE * 2).subarray(BLOCK_SIZE))) {\n\t\t\t\t\t\tdiscard(BLOCK_SIZE * 2);\n\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\teof = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (strict) throw new Error(\"Invalid tar header.\");\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet internalHeader;\n\t\t\t\ttry {\n\t\t\t\t\tinternalHeader = parseUstarHeader(headerBlock, strict);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (strict) throw err;\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst metaParser = getMetaParser(internalHeader.type);\n\t\t\t\tif (metaParser) {\n\t\t\t\t\tconst paddedSize = internalHeader.size + BLOCK_SIZE_MASK & ~BLOCK_SIZE_MASK;\n\t\t\t\t\tif (available() < BLOCK_SIZE + paddedSize) {\n\t\t\t\t\t\tif (ended && strict) throw truncateErr;\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\t\tconst overrides = metaParser(pull(paddedSize).subarray(0, internalHeader.size));\n\t\t\t\t\tconst target = internalHeader.type === \"pax-global-header\" ? paxGlobals : nextEntryOverrides;\n\t\t\t\t\tfor (const key in overrides) target[key] = overrides[key];\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tdiscard(BLOCK_SIZE);\n\t\t\t\tconst header = internalHeader;\n\t\t\t\tif (internalHeader.prefix) header.name = `${internalHeader.prefix}/${header.name}`;\n\t\t\t\tapplyOverrides(header, paxGlobals);\n\t\t\t\tapplyOverrides(header, nextEntryOverrides);\n\t\t\t\tnextEntryOverrides = {};\n\t\t\t\tcurrentEntry = {\n\t\t\t\t\theader,\n\t\t\t\t\tremaining: header.size,\n\t\t\t\t\tpadding: -header.size & BLOCK_SIZE_MASK\n\t\t\t\t};\n\t\t\t\tstate = STATE_BODY;\n\t\t\t\treturn header;\n\t\t\t}\n\t\t},\n\t\tstreamBody(callback) {\n\t\t\tif (state !== STATE_BODY || !currentEntry || currentEntry.remaining === 0) return 0;\n\t\t\tconst bytesToFeed = Math.min(currentEntry.remaining, available());\n\t\t\tif (bytesToFeed === 0) return 0;\n\t\t\tconst fed = pull(bytesToFeed, callback);\n\t\t\tcurrentEntry.remaining -= fed;\n\t\t\treturn fed;\n\t\t},\n\t\tskipPadding() {\n\t\t\tif (state !== STATE_BODY || !currentEntry) return true;\n\t\t\tif (currentEntry.remaining > 0) throw new Error(\"Body not fully consumed\");\n\t\t\tif (available() < currentEntry.padding) return false;\n\t\t\tdiscard(currentEntry.padding);\n\t\t\tcurrentEntry = null;\n\t\t\tstate = STATE_HEADER;\n\t\t\treturn true;\n\t\t},\n\t\tskipEntry() {\n\t\t\tif (state !== STATE_BODY || !currentEntry) return true;\n\t\t\tconst toDiscard = Math.min(currentEntry.remaining, available());\n\t\t\tif (toDiscard > 0) {\n\t\t\t\tdiscard(toDiscard);\n\t\t\t\tcurrentEntry.remaining -= toDiscard;\n\t\t\t}\n\t\t\tif (currentEntry.remaining > 0) return false;\n\t\t\treturn unpacker.skipPadding();\n\t\t},\n\t\tvalidateEOF() {\n\t\t\tif (strict) {\n\t\t\t\tif (!eof) throw truncateErr;\n\t\t\t\tif (available() > 0) {\n\t\t\t\t\tif (pull(available()).some((byte) => byte !== 0)) throw new Error(\"Invalid EOF.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\treturn unpacker;\n}\nfunction isZeroBlock(block) {\n\tif (block.byteOffset % 8 === 0) {\n\t\tconst view = new BigUint64Array(block.buffer, block.byteOffset, block.length / 8);\n\t\tfor (let i = 0; i < view.length; i++) if (view[i] !== 0n) return false;\n\t\treturn true;\n\t}\n\tfor (let i = 0; i < block.length; i++) if (block[i] !== 0) return false;\n\treturn true;\n}\n\n//#endregion\nexport { normalizeBody as a, LINK as c, isBodyless as i, SYMLINK as l, createTarPacker as n, DIRECTORY as o, transformHeader as r, FILE as s, createUnpacker as t };",
10
10
  "import { a as normalizeBody, i as isBodyless, n as createTarPacker$1, r as transformHeader, t as createUnpacker } from \"../unpacker-BpPBxY8N.js\";\n\n//#region src/web/compression.ts\nfunction createGzipEncoder() {\n\treturn new CompressionStream(\"gzip\");\n}\nfunction createGzipDecoder() {\n\treturn new DecompressionStream(\"gzip\");\n}\n\n//#endregion\n//#region src/web/pack.ts\nfunction createTarPacker() {\n\tlet streamController;\n\tlet packer;\n\treturn {\n\t\treadable: new ReadableStream({ start(controller) {\n\t\t\tstreamController = controller;\n\t\t\tpacker = createTarPacker$1(controller.enqueue.bind(controller), controller.error.bind(controller), controller.close.bind(controller));\n\t\t} }),\n\t\tcontroller: {\n\t\t\tadd(header) {\n\t\t\t\tconst bodyless = isBodyless(header);\n\t\t\t\tconst h = { ...header };\n\t\t\t\tif (bodyless) h.size = 0;\n\t\t\t\tpacker.add(h);\n\t\t\t\tif (bodyless) packer.endEntry();\n\t\t\t\treturn new WritableStream({\n\t\t\t\t\twrite(chunk) {\n\t\t\t\t\t\tpacker.write(chunk);\n\t\t\t\t\t},\n\t\t\t\t\tclose() {\n\t\t\t\t\t\tif (!bodyless) packer.endEntry();\n\t\t\t\t\t},\n\t\t\t\t\tabort(reason) {\n\t\t\t\t\t\tstreamController.error(reason);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tfinalize() {\n\t\t\t\tpacker.finalize();\n\t\t\t},\n\t\t\terror(err) {\n\t\t\t\tstreamController.error(err);\n\t\t\t}\n\t\t}\n\t};\n}\n\n//#endregion\n//#region src/web/stream-utils.ts\nasync function streamToBuffer(stream) {\n\tconst chunks = [];\n\tconst reader = stream.getReader();\n\tlet totalLength = 0;\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) break;\n\t\t\tchunks.push(value);\n\t\t\ttotalLength += value.length;\n\t\t}\n\t\tconst result = new Uint8Array(totalLength);\n\t\tlet offset = 0;\n\t\tfor (const chunk of chunks) {\n\t\t\tresult.set(chunk, offset);\n\t\t\toffset += chunk.length;\n\t\t}\n\t\treturn result;\n\t} finally {\n\t\treader.releaseLock();\n\t}\n}\nconst drain = (stream) => stream.pipeTo(new WritableStream());\n\n//#endregion\n//#region src/web/unpack.ts\nfunction createTarDecoder(options = {}) {\n\tconst unpacker = createUnpacker(options);\n\tlet bodyController = null;\n\tlet pumping = false;\n\tconst pump = (controller) => {\n\t\tif (pumping) return;\n\t\tpumping = true;\n\t\ttry {\n\t\t\twhile (true) if (unpacker.isEntryActive()) {\n\t\t\t\tif (bodyController) {\n\t\t\t\t\tif (unpacker.streamBody((c) => (bodyController.enqueue(c), true)) === 0 && !unpacker.isBodyComplete()) break;\n\t\t\t\t} else if (!unpacker.skipEntry()) break;\n\t\t\t\tif (unpacker.isBodyComplete()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tbodyController?.close();\n\t\t\t\t\t} catch {}\n\t\t\t\t\tbodyController = null;\n\t\t\t\t\tif (!unpacker.skipPadding()) break;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst header = unpacker.readHeader();\n\t\t\t\tif (header === null || header === void 0) break;\n\t\t\t\tcontroller.enqueue({\n\t\t\t\t\theader,\n\t\t\t\t\tbody: new ReadableStream({\n\t\t\t\t\t\tstart(c) {\n\t\t\t\t\t\t\tif (header.size === 0) c.close();\n\t\t\t\t\t\t\telse bodyController = c;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpull: () => pump(controller),\n\t\t\t\t\t\tcancel() {\n\t\t\t\t\t\t\tbodyController = null;\n\t\t\t\t\t\t\tpump(controller);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\ttry {\n\t\t\t\tbodyController?.error(error);\n\t\t\t} catch {}\n\t\t\tbodyController = null;\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tpumping = false;\n\t\t}\n\t};\n\treturn new TransformStream({\n\t\ttransform(chunk, controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.write(chunk);\n\t\t\t\tpump(controller);\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\ttry {\n\t\t\t\tunpacker.end();\n\t\t\t\tpump(controller);\n\t\t\t\tunpacker.validateEOF();\n\t\t\t\tif (unpacker.isEntryActive() && !unpacker.isBodyComplete()) try {\n\t\t\t\t\tbodyController?.close();\n\t\t\t\t} catch {}\n\t\t\t} catch (error) {\n\t\t\t\ttry {\n\t\t\t\t\tbodyController?.error(error);\n\t\t\t\t} catch {}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}, void 0, { highWaterMark: 1 });\n}\n\n//#endregion\n//#region src/web/helpers.ts\nasync function packTar(entries) {\n\tconst { readable, controller } = createTarPacker();\n\tawait (async () => {\n\t\tfor (const entry of entries) {\n\t\t\tconst entryStream = controller.add(entry.header);\n\t\t\tconst body = \"body\" in entry ? entry.body : entry.data;\n\t\t\tif (!body) {\n\t\t\t\tawait entryStream.close();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (body instanceof ReadableStream) await body.pipeTo(entryStream);\n\t\t\telse if (body instanceof Blob) await body.stream().pipeTo(entryStream);\n\t\t\telse try {\n\t\t\t\tconst chunk = await normalizeBody(body);\n\t\t\t\tif (chunk.length > 0) {\n\t\t\t\t\tconst writer = entryStream.getWriter();\n\t\t\t\t\tawait writer.write(chunk);\n\t\t\t\t\tawait writer.close();\n\t\t\t\t} else await entryStream.close();\n\t\t\t} catch {\n\t\t\t\tthrow new TypeError(`Unsupported content type for entry \"${entry.header.name}\".`);\n\t\t\t}\n\t\t}\n\t})().then(() => controller.finalize()).catch((err) => controller.error(err));\n\treturn new Uint8Array(await streamToBuffer(readable));\n}\nasync function unpackTar(archive, options = {}) {\n\tconst sourceStream = archive instanceof ReadableStream ? archive : new ReadableStream({ start(controller) {\n\t\tcontroller.enqueue(archive instanceof Uint8Array ? archive : new Uint8Array(archive));\n\t\tcontroller.close();\n\t} });\n\tconst results = [];\n\tconst entryStream = sourceStream.pipeThrough(createTarDecoder(options));\n\tfor await (const entry of entryStream) {\n\t\tlet processedHeader;\n\t\ttry {\n\t\t\tprocessedHeader = transformHeader(entry.header, options);\n\t\t} catch (error) {\n\t\t\tawait entry.body.cancel();\n\t\t\tthrow error;\n\t\t}\n\t\tif (processedHeader === null) {\n\t\t\tawait drain(entry.body);\n\t\t\tcontinue;\n\t\t}\n\t\tif (isBodyless(processedHeader)) {\n\t\t\tawait drain(entry.body);\n\t\t\tresults.push({ header: processedHeader });\n\t\t} else results.push({\n\t\t\theader: processedHeader,\n\t\t\tdata: await streamToBuffer(entry.body)\n\t\t});\n\t}\n\treturn results;\n}\n\n//#endregion\nexport { createGzipDecoder, createGzipEncoder, createTarDecoder, createTarPacker, packTar, unpackTar };",
11
- "import type { RXM, RXL } from \"~/types/index.js\";\n\n/**\n * Create RXL from RXM.\n *\n * @param rxm - Resource manifest\n * @returns RXL locator object (pure data)\n */\nexport function locate(rxm: RXM): RXL {\n return {\n domain: rxm.domain,\n path: rxm.path,\n name: rxm.name,\n type: rxm.type,\n version: rxm.version,\n };\n}\n",
11
+ "import type { RXM, RXL } from \"~/types/index.js\";\n\n/**\n * Create RXL from RXM.\n *\n * @param rxm - Resource manifest\n * @returns RXL locator object (pure data)\n */\nexport function locate(rxm: RXM): RXL {\n return {\n registry: rxm.registry,\n path: rxm.path,\n name: rxm.name,\n tag: rxm.tag,\n };\n}\n",
12
12
  "import type { RXM, RXA, RXR } from \"~/types/index.js\";\nimport { locate } from \"./locate.js\";\n\n/**\n * Create RXR from RXM and RXA.\n *\n * @param rxm - Resource manifest\n * @param rxa - Resource archive\n * @returns RXR resource object\n */\nexport function resource(rxm: RXM, rxa: RXA): RXR {\n const rxl = locate(rxm);\n\n return {\n locator: rxl,\n manifest: rxm,\n archive: rxa,\n };\n}\n",
13
13
  "import { gunzip } from \"node:zlib\";\nimport { promisify } from \"node:util\";\nimport { unpackTar } from \"modern-tar\";\nimport type { RXA } from \"~/types/index.js\";\n\nconst gunzipAsync = promisify(gunzip);\n\n/**\n * Extract files from RXA.\n *\n * @param rxa - Resource archive\n * @returns Record of file paths to Buffer contents\n */\nexport async function extract(rxa: RXA): Promise<Record<string, Buffer>> {\n const buffer = await rxa.buffer();\n\n // Decompress gzip\n const tarBuffer = await gunzipAsync(buffer);\n\n // Unpack tar\n const entries = await unpackTar(tarBuffer);\n\n const files: Record<string, Buffer> = {};\n for (const entry of entries) {\n if ((entry.header.type === \"file\" || entry.header.type === undefined) && entry.data) {\n files[entry.header.name] = Buffer.from(entry.data);\n }\n }\n\n return files;\n}\n",
14
- "import type { RXL } from \"~/types/index.js\";\n\n/**\n * Format RXL to locator string.\n *\n * Format: domain/[path/]name.type@version\n *\n * @param rxl - Resource locator\n * @returns Locator string\n */\nexport function format(rxl: RXL): string {\n let result = rxl.domain + \"/\";\n if (rxl.path) {\n result += rxl.path + \"/\";\n }\n result += rxl.name;\n result += \".\" + rxl.type;\n result += \"@\" + rxl.version;\n return result;\n}\n",
15
- "import type { RXL } from \"~/types/index.js\";\nimport { LocatorError } from \"~/errors.js\";\n\n/**\n * Parse locator string to RXL.\n *\n * Format: domain/[path/]name.type@version\n *\n * @param locator - Locator string\n * @returns RXL object\n * @throws LocatorError if parsing fails\n */\nexport function parse(locator: string): RXL {\n if (!locator || typeof locator !== \"string\") {\n throw new LocatorError(\"locator must be a non-empty string\", locator);\n }\n\n // Split by @ to get version\n const atIndex = locator.lastIndexOf(\"@\");\n if (atIndex === -1) {\n throw new LocatorError(\"locator must contain version (@)\", locator);\n }\n\n const version = locator.slice(atIndex + 1);\n const beforeVersion = locator.slice(0, atIndex);\n\n if (!version) {\n throw new LocatorError(\"version is required\", locator);\n }\n\n // Split by . to get type (last dot before @)\n const dotIndex = beforeVersion.lastIndexOf(\".\");\n if (dotIndex === -1) {\n throw new LocatorError(\"locator must contain type (.)\", locator);\n }\n\n const type = beforeVersion.slice(dotIndex + 1);\n const beforeType = beforeVersion.slice(0, dotIndex);\n\n if (!type) {\n throw new LocatorError(\"type is required\", locator);\n }\n\n // Split by / to get domain, path, name\n const parts = beforeType.split(\"/\");\n\n if (parts.length < 2) {\n throw new LocatorError(\"locator must contain domain\", locator);\n }\n\n const domain = parts[0];\n const name = parts[parts.length - 1];\n const path = parts.length > 2 ? parts.slice(1, -1).join(\"/\") : undefined;\n\n if (!domain) {\n throw new LocatorError(\"domain is required\", locator);\n }\n\n if (!name) {\n throw new LocatorError(\"name is required\", locator);\n }\n\n return {\n domain,\n path,\n name,\n type,\n version,\n };\n}\n",
14
+ "import type { RXL } from \"~/types/index.js\";\n\n/**\n * Format RXL to locator string.\n *\n * Docker-style format: [registry/][path/]name[:tag]\n *\n * Examples:\n * - { name: \"hello\", tag: \"latest\" } → \"hello\" (omit :latest)\n * - { name: \"hello\", tag: \"1.0.0\" } → \"hello:1.0.0\"\n * - { registry: \"localhost:3098\", name: \"hello\", tag: \"1.0.0\" } → \"localhost:3098/hello:1.0.0\"\n *\n * @param rxl - Resource locator\n * @returns Locator string\n */\nexport function format(rxl: RXL): string {\n let result = \"\";\n\n // Add registry if present\n if (rxl.registry) {\n result += rxl.registry + \"/\";\n }\n\n // Add path if present\n if (rxl.path) {\n result += rxl.path + \"/\";\n }\n\n // Add name\n result += rxl.name;\n\n // Add tag (omit if \"latest\" for cleaner output)\n if (rxl.tag && rxl.tag !== \"latest\") {\n result += \":\" + rxl.tag;\n }\n\n return result;\n}\n",
15
+ "import type { RXL } from \"~/types/index.js\";\nimport { LocatorError } from \"~/errors.js\";\n\n/**\n * Check if a string looks like a registry (contains port or is a domain).\n * Used to distinguish registry from path.\n */\nfunction looksLikeRegistry(str: string): boolean {\n // Contains port (e.g., localhost:3098)\n if (str.includes(\":\") && !str.includes(\"/\")) {\n return true;\n }\n // Contains dot (e.g., registry.example.com)\n if (str.includes(\".\")) {\n return true;\n }\n // localhost without port\n if (str === \"localhost\") {\n return true;\n }\n return false;\n}\n\n/**\n * Parse locator string to RXL.\n *\n * Docker-style format: [registry/][path/]name[:tag]\n *\n * Examples:\n * - hello → name=hello, tag=latest\n * - hello:1.0.0 → name=hello, tag=1.0.0\n * - prompts/hello:stable → path=prompts, name=hello, tag=stable\n * - localhost:3098/hello:1.0.0 → registry=localhost:3098, name=hello, tag=1.0.0\n *\n * @param locator - Locator string\n * @returns RXL object\n * @throws LocatorError if parsing fails\n */\nexport function parse(locator: string): RXL {\n if (!locator || typeof locator !== \"string\") {\n throw new LocatorError(\"Locator must be a non-empty string\", locator);\n }\n\n // Validate no invalid characters\n if (locator.includes(\"@\")) {\n throw new LocatorError(\"Invalid locator format. Use name:tag instead of name@version\", locator);\n }\n\n // Split by last colon to extract tag (but be careful with registry port)\n // Strategy: find the name:tag part first, which is after the last /\n const lastSlashIndex = locator.lastIndexOf(\"/\");\n let beforeSlash = \"\";\n let afterSlash = locator;\n\n if (lastSlashIndex !== -1) {\n beforeSlash = locator.substring(0, lastSlashIndex);\n afterSlash = locator.substring(lastSlashIndex + 1);\n }\n\n // Parse name:tag from afterSlash\n const colonIndex = afterSlash.lastIndexOf(\":\");\n let name: string;\n let tag: string;\n\n if (colonIndex === -1) {\n // No tag specified, default to \"latest\"\n name = afterSlash;\n tag = \"latest\";\n } else {\n name = afterSlash.substring(0, colonIndex);\n tag = afterSlash.substring(colonIndex + 1);\n }\n\n if (!name) {\n throw new LocatorError(\"Name is required\", locator);\n }\n\n if (!tag) {\n throw new LocatorError(\n \"Tag cannot be empty. Use name:tag format or omit tag for :latest\",\n locator\n );\n }\n\n // If no slash, it's a simple local locator\n if (lastSlashIndex === -1) {\n return {\n registry: undefined,\n path: undefined,\n name,\n tag,\n };\n }\n\n // Parse registry and path from beforeSlash\n const parts = beforeSlash.split(\"/\");\n\n // Check if first part looks like a registry\n if (looksLikeRegistry(parts[0])) {\n const registry = parts[0];\n const path = parts.length > 1 ? parts.slice(1).join(\"/\") : undefined;\n return {\n registry,\n path,\n name,\n tag,\n };\n }\n\n // No registry, everything before last slash is path\n return {\n registry: undefined,\n path: beforeSlash,\n name,\n tag,\n };\n}\n",
16
16
  "import type { RXA } from \"~/types/index.js\";\n\n/**\n * RXA Implementation for wrap\n */\nclass RXAImpl implements RXA {\n private readonly _buffer: Buffer;\n\n constructor(buffer: Buffer) {\n this._buffer = buffer;\n }\n\n get stream(): ReadableStream<Uint8Array> {\n const buffer = this._buffer;\n return new ReadableStream({\n start(controller) {\n controller.enqueue(new Uint8Array(buffer));\n controller.close();\n },\n });\n }\n\n async buffer(): Promise<Buffer> {\n return this._buffer;\n }\n}\n\n/**\n * Wrap existing tar.gz buffer as RXA.\n *\n * @param buffer - Existing tar.gz buffer\n * @returns RXA archive object\n */\nexport function wrap(buffer: Buffer): RXA {\n return new RXAImpl(buffer);\n}\n"
17
17
  ],
18
- "mappings": "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",
19
- "debugId": "467D5F5D80C42E4F64756E2164756E21",
18
+ "mappings": ";AAIO,MAAM,uBAAuB,MAAM;AAAA,EACxC,WAAW,CAAC,SAAiB,SAAwB;AAAA,IACnD,MAAM,SAAS,OAAO;AAAA,IACtB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,qBAAqB,eAAe;AAAA,EAG7B;AAAA,EAFlB,WAAW,CACT,SACgB,SAChB;AAAA,IACA,MAAM,OAAO;AAAA,IAFG;AAAA,IAGhB,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,sBAAsB,eAAe;AAAA,EAChD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,qBAAqB,eAAe;AAAA,EAC/C,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;AAAA;AAEO,MAAM,wBAAwB,eAAe;AAAA,EAClD,WAAW,CAAC,SAAiB;AAAA,IAC3B,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA;AAEhB;;AC9BO,SAAS,MAAM,CAAC,OAAqB;AAAA,EAC1C,IAAI,UAAU,QAAQ,OAAO,UAAU,UAAU;AAAA,IAC/C,MAAM,IAAI,gBAAgB,8BAA8B;AAAA,EAC1D;AAAA,EAEA,MAAM,MAAM;AAAA,EAEZ,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UAAU;AAAA,IAC7C,MAAM,IAAI,gBAAgB,kBAAkB;AAAA,EAC9C;AAAA,EAEA,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UAAU;AAAA,IAC7C,MAAM,IAAI,gBAAgB,kBAAkB;AAAA,EAC9C;AAAA,EAIA,MAAM,WAAW,IAAI,OAAO,IAAI;AAAA,EAChC,IAAI,aAAa,aAAa,OAAO,aAAa,UAAU;AAAA,IAC1D,MAAM,IAAI,gBAAgB,sBAAsB;AAAA,EAClD;AAAA,EAGA,MAAM,MAAW;AAAA,OACZ;AAAA,IACH,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,KAAK,OAAO,aAAa,WAAW,WAAW;AAAA,IAC/C,UAAU,OAAO,IAAI,aAAa,WAAW,IAAI,WAAW;AAAA,IAC5D,MAAM,OAAO,IAAI,SAAS,WAAW,IAAI,OAAO;AAAA,IAChD,aAAa,OAAO,IAAI,gBAAgB,WAAW,IAAI,cAAc;AAAA,IACrE,QAAQ,OAAO,IAAI,WAAW,WAAW,IAAI,SAAS;AAAA,IACtD,SAAS,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAAA,IACzD,UAAU,MAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI,WAAW;AAAA,IACvD,YAAY,OAAO,IAAI,eAAe,WAAW,IAAI,aAAa;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA;;ACtCF,SAAS,QAAQ,CAAC,KAAe;AAAA,EACtC,OAAO;AAAA,IACL,UAAU,IAAI;AAAA,IACd,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,KAAK,IAAI,OAAO;AAAA,EAClB;AAAA;;AChBF;AACA;;;ACAA,IAAM,aAAa;AACnB,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AACvB,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAC7B,IAAM,qBAAqB;AAC3B,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,qBAAqB;AAC3B,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAC1B,IAAM,gBAAgB;AACtB,IAAM,oBAAoB;AAC1B,IAAM,iBAAiB;AACvB,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,WAAW;AAAA,EAChB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,MAAM;AAAA,EACN,cAAc;AAAA,EACd,qBAAqB;AAAA,EACrB,iBAAiB;AAAA,EACjB,sBAAsB;AACvB;AACA,IAAM,WAAW;AAAA,EAChB,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACJ;AACA,IAAM,aAAa,IAAI,WAAW,UAAU;AAC5C,IAAM,QAAQ,IAAI,WAAW,CAAC;AAI9B,IAAM,UAAU,IAAI;AACpB,IAAM,UAAU,IAAI;AACpB,SAAS,WAAW,CAAC,MAAM,QAAQ,MAAM,OAAO;AAAA,EAC/C,IAAI;AAAA,IAAO,QAAQ,WAAW,OAAO,KAAK,SAAS,QAAQ,SAAS,IAAI,CAAC;AAAA;AAE1E,SAAS,UAAU,CAAC,MAAM,QAAQ,MAAM,OAAO;AAAA,EAC9C,IAAI,UAAe;AAAA,IAAG;AAAA,EACtB,MAAM,cAAc,MAAM,SAAS,CAAC,EAAE,SAAS,OAAO,GAAG,GAAG;AAAA,EAC5D,QAAQ,WAAW,aAAa,KAAK,SAAS,QAAQ,SAAS,OAAO,CAAC,CAAC;AAAA;AAEzE,SAAS,UAAU,CAAC,MAAM,QAAQ,MAAM;AAAA,EACvC,MAAM,MAAM,KAAK,QAAQ,GAAG,MAAM;AAAA,EAClC,MAAM,WAAW,QAAQ,MAAM,MAAM,SAAS,OAAO,SAAS,OAAO;AAAA,EACrE,OAAO,QAAQ,OAAO,KAAK,SAAS,QAAQ,QAAQ,CAAC;AAAA;AAEtD,SAAS,SAAS,CAAC,MAAM,QAAQ,MAAM;AAAA,EACtC,IAAI,QAAQ;AAAA,EACZ,MAAM,MAAM,SAAS;AAAA,EACrB,SAAS,IAAI,OAAQ,IAAI,KAAK,KAAK;AAAA,IAClC,MAAM,WAAW,KAAK;AAAA,IACtB,IAAI,aAAa;AAAA,MAAG;AAAA,IACpB,IAAI,aAAa;AAAA,MAAI;AAAA,IACrB,QAAQ,QAAQ,KAAK,WAAW;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAER,SAAS,WAAW,CAAC,MAAM,QAAQ,MAAM;AAAA,EACxC,IAAI,KAAK,UAAU,KAAK;AAAA,IACvB,IAAI,SAAS;AAAA,IACb,SAAS,KAAK,UAAU;AAAA,IACxB,SAAS,IAAI,EAAG,IAAI,MAAM;AAAA,MAAK,SAAS,SAAS,MAAM,KAAK,SAAS;AAAA,IACrE,IAAI,CAAC,OAAO,cAAc,MAAM;AAAA,MAAG,MAAM,IAAI,MAAM,sBAAsB;AAAA,IACzE,OAAO;AAAA,EACR;AAAA,EACA,OAAO,UAAU,MAAM,QAAQ,IAAI;AAAA;AAKpC,IAAM,aAAa,CAAC,WAAW,OAAO,SAAS,aAAa,OAAO,SAAS,WAAW,OAAO,SAAS;AACvG,eAAe,aAAa,CAAC,MAAM;AAAA,EAClC,IAAI,SAAS,QAAQ,SAAc;AAAA,IAAG,OAAO;AAAA,EAC7C,IAAI,gBAAgB;AAAA,IAAY,OAAO;AAAA,EACvC,IAAI,OAAO,SAAS;AAAA,IAAU,OAAO,QAAQ,OAAO,IAAI;AAAA,EACxD,IAAI,gBAAgB;AAAA,IAAa,OAAO,IAAI,WAAW,IAAI;AAAA,EAC3D,IAAI,gBAAgB;AAAA,IAAM,OAAO,IAAI,WAAW,MAAM,KAAK,YAAY,CAAC;AAAA,EACxE,MAAM,IAAI,UAAU,0CAA0C;AAAA;AAK/D,SAAS,eAAe,CAAC,QAAQ,SAAS;AAAA,EACzC,QAAQ,OAAO,QAAQ,QAAQ;AAAA,EAC/B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AAAA,IAAK,OAAO;AAAA,EACtC,MAAM,IAAI,KAAK,OAAO;AAAA,EACtB,IAAI,SAAS,QAAQ,GAAG;AAAA,IACvB,MAAM,aAAa,EAAE,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,IACnD,IAAI,SAAS,WAAW;AAAA,MAAQ,OAAO;AAAA,IACvC,MAAM,UAAU,WAAW,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,IAChD,EAAE,OAAO,EAAE,SAAS,aAAa,CAAC,QAAQ,SAAS,GAAG,IAAI,GAAG,aAAa;AAAA,IAC1E,IAAI,EAAE,UAAU,WAAW,GAAG,GAAG;AAAA,MAChC,MAAM,iBAAiB,EAAE,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,MAC3D,EAAE,WAAW,SAAS,eAAe,SAAS,MAAM,IAAI,eAAe,MAAM,KAAK,EAAE,KAAK,GAAG;AAAA,IAC7F;AAAA,EACD;AAAA,EACA,IAAI,SAAS,CAAC,MAAM;AAAA,IAAO,OAAO;AAAA,EAClC,MAAM,SAAS,MAAM,IAAI,CAAC,IAAI;AAAA,EAC9B,IAAI,WAAW,CAAC,OAAO,QAAQ,CAAC,OAAO,KAAK,KAAK,KAAK,OAAO,SAAS,OAAO,OAAO,SAAS;AAAA,IAAM,OAAO;AAAA,EAC1G,OAAO;AAAA;AAKR,IAAM,iBAAiB;AACvB,IAAM,aAAa;AACnB,SAAS,gBAAgB,CAAC,OAAO;AAAA,EAChC,MAAM,SAAS,UAAU,OAAO,uBAAuB,mBAAmB;AAAA,EAC1E,IAAI,MAAM;AAAA,EACV,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ;AAAA,IAAK,IAAI,KAAK,yBAAyB,IAAI,wBAAwB;AAAA,MAAqB,OAAO;AAAA,IAC5H;AAAA,aAAO,MAAM;AAAA,EAClB,OAAO,WAAW;AAAA;AAEnB,SAAS,aAAa,CAAC,OAAO;AAAA,EAC7B,MAAM,KAAK,gBAAgB,uBAAuB,wBAAwB,mBAAmB;AAAA,EAC7F,IAAI,WAAW;AAAA,EACf,WAAW,QAAQ;AAAA,IAAO,YAAY;AAAA,EACtC,SAAS,IAAI,wBAAwB,IAAI,EAAG,KAAK,uBAAuB,KAAK;AAAA,IAC5E,MAAM,MAAM,WAAW,KAAK;AAAA,IAC5B,aAAa;AAAA,EACd;AAAA,EACA,MAAM,wBAAwB,KAAK;AAAA,EACnC,MAAM,wBAAwB,KAAK;AAAA;AAKpC,SAAS,WAAW,CAAC,QAAQ;AAAA,EAC5B,MAAM,aAAa,CAAC;AAAA,EACpB,IAAI,OAAO,KAAK,SAAS,iBAAiB;AAAA,IACzC,IAAI,eAAe,OAAO,IAAI,MAAM;AAAA,MAAM,WAAW,OAAO,OAAO;AAAA,EACpE;AAAA,EACA,IAAI,OAAO,YAAY,OAAO,SAAS,SAAS;AAAA,IAAiB,WAAW,WAAW,OAAO;AAAA,EAC9F,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,IAAkB,WAAW,QAAQ,OAAO;AAAA,EACtF,IAAI,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,IAAkB,WAAW,QAAQ,OAAO;AAAA,EACtF,IAAI,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA,IAAmB,WAAW,MAAM,OAAO,OAAO,GAAG;AAAA,EAC5F,IAAI,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA,IAAmB,WAAW,MAAM,OAAO,OAAO,GAAG;AAAA,EAC5F,IAAI,OAAO,QAAQ,QAAQ,OAAO,OAAO;AAAA,IAAgB,WAAW,OAAO,OAAO,OAAO,IAAI;AAAA,EAC7F,IAAI,OAAO;AAAA,IAAK,OAAO,OAAO,YAAY,OAAO,GAAG;AAAA,EACpD,MAAM,aAAa,OAAO,QAAQ,UAAU;AAAA,EAC5C,IAAI,WAAW,WAAW;AAAA,IAAG,OAAO;AAAA,EACpC,MAAM,UAAU,QAAQ,OAAO,WAAW,IAAI,EAAE,KAAK,WAAW;AAAA,IAC/D,MAAM,SAAS,GAAG,OAAO;AAAA;AAAA,IACzB,MAAM,aAAa,QAAQ,OAAO,MAAM,EAAE,SAAS;AAAA,IACnD,IAAI,cAAc,aAAa,OAAO,UAAU,EAAE;AAAA,IAClD,cAAc,aAAa,OAAO,WAAW,EAAE;AAAA,IAC/C,OAAO,GAAG,eAAe;AAAA,GACzB,EAAE,KAAK,EAAE,CAAC;AAAA,EACX,OAAO;AAAA,IACN,WAAW,gBAAgB;AAAA,MAC1B,MAAM,QAAQ,OAAO,QAAQ,OAAO,aAAa,OAAO,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;AAAA,MAC7E,MAAM,QAAQ;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,OAAO,OAAO;AAAA,MACd,KAAK,OAAO;AAAA,MACZ,KAAK,OAAO;AAAA,IACb,CAAC;AAAA,IACD;AAAA,EACD;AAAA;AAED,SAAS,cAAc,CAAC,MAAM;AAAA,EAC7B,IAAI,KAAK,UAAU;AAAA,IAAiB,OAAO;AAAA,EAC3C,MAAM,gBAAgB,KAAK,SAAS,kBAAkB;AAAA,EACtD,MAAM,aAAa,KAAK,YAAY,KAAK,iBAAiB;AAAA,EAC1D,IAAI,aAAa,KAAK,cAAc;AAAA,IAAe,OAAO;AAAA,MACzD,QAAQ,KAAK,MAAM,GAAG,UAAU;AAAA,MAChC,MAAM,KAAK,MAAM,aAAa,CAAC;AAAA,IAChC;AAAA,EACA,OAAO;AAAA;AAKR,SAAS,eAAe,CAAC,QAAQ;AAAA,EAChC,MAAM,OAAO,IAAI,WAAW,UAAU;AAAA,EACtC,MAAM,OAAO,WAAW,MAAM,IAAI,IAAI,OAAO,QAAQ;AAAA,EACrD,IAAI,OAAO,OAAO;AAAA,EAClB,IAAI,SAAS;AAAA,EACb,IAAI,CAAC,OAAO,KAAK,MAAM;AAAA,IACtB,MAAM,QAAQ,eAAe,IAAI;AAAA,IACjC,IAAI,OAAO;AAAA,MACV,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAChB;AAAA,EACD;AAAA,EACA,YAAY,MAAM,mBAAmB,iBAAiB,IAAI;AAAA,EAC1D,WAAW,MAAM,mBAAmB,iBAAiB,OAAO,SAAS,OAAO,SAAS,YAAY,mBAAmB,kBAAkB;AAAA,EACtI,WAAW,MAAM,kBAAkB,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAClE,WAAW,MAAM,kBAAkB,gBAAgB,OAAO,OAAO,CAAC;AAAA,EAClE,WAAW,MAAM,mBAAmB,iBAAiB,IAAI;AAAA,EACzD,WAAW,MAAM,oBAAoB,kBAAkB,KAAK,OAAO,OAAO,OAAO,QAAQ,KAAK,KAAK,IAAI,KAAK,IAAG,CAAC;AAAA,EAChH,YAAY,MAAM,uBAAuB,qBAAqB,SAAS,OAAO,QAAQ,KAAK;AAAA,EAC3F,YAAY,MAAM,uBAAuB,qBAAqB,OAAO,QAAQ;AAAA,EAC7E,YAAY,MAAM,oBAAoB,kBAAkB,WAAS;AAAA,EACjE,YAAY,MAAM,sBAAsB,oBAAoB,aAAa;AAAA,EACzE,YAAY,MAAM,oBAAoB,kBAAkB,OAAO,KAAK;AAAA,EACpE,YAAY,MAAM,oBAAoB,kBAAkB,OAAO,KAAK;AAAA,EACpE,YAAY,MAAM,qBAAqB,mBAAmB,MAAM;AAAA,EAChE,cAAc,IAAI;AAAA,EAClB,OAAO;AAAA;AAER,SAAS,gBAAgB,CAAC,OAAO,QAAQ;AAAA,EACxC,IAAI,UAAU,CAAC,iBAAiB,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,8BAA8B;AAAA,EACtF,MAAM,WAAW,WAAW,OAAO,uBAAuB,mBAAmB;AAAA,EAC7E,MAAM,SAAS;AAAA,IACd,MAAM,WAAW,OAAO,mBAAmB,eAAe;AAAA,IAC1D,MAAM,UAAU,OAAO,mBAAmB,eAAe;AAAA,IACzD,KAAK,YAAY,OAAO,kBAAkB,cAAc;AAAA,IACxD,KAAK,YAAY,OAAO,kBAAkB,cAAc;AAAA,IACxD,MAAM,YAAY,OAAO,mBAAmB,eAAe;AAAA,IAC3D,uBAAuB,IAAI,KAAK,YAAY,OAAO,oBAAoB,gBAAgB,IAAI,IAAG;AAAA,IAC9F,MAAM,SAAS,aAAa;AAAA,IAC5B,UAAU,WAAW,OAAO,uBAAuB,mBAAmB;AAAA,EACvE;AAAA,EACA,MAAM,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,EACpE,IAAI,MAAM,KAAK,MAAM,SAAS;AAAA,IAC7B,OAAO,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,IACrE,OAAO,QAAQ,WAAW,OAAO,oBAAoB,gBAAgB;AAAA,EACtE;AAAA,EACA,IAAI,UAAU;AAAA,IAAS,OAAO,SAAS,WAAW,OAAO,qBAAqB,iBAAiB;AAAA,EAC/F,OAAO;AAAA;AAER,IAAM,cAAc;AAAA,EACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;AAAA,EACvB,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC;AAAA,EAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACrC,OAAO,CAAC,SAAS,UAAU;AAAA,EAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACnC,KAAK,CAAC,OAAO,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAAA,EACnC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAAA,EACzB,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;AAC1B;AACA,SAAS,QAAQ,CAAC,QAAQ;AAAA,EACzB,MAAM,YAAY,IAAI,YAAY,OAAO;AAAA,EACzC,MAAM,YAAY,CAAC;AAAA,EACnB,MAAM,MAAM,CAAC;AAAA,EACb,IAAI,SAAS;AAAA,EACb,OAAO,SAAS,OAAO,QAAQ;AAAA,IAC9B,MAAM,aAAa,OAAO,QAAQ,IAAI,MAAM;AAAA,IAC5C,IAAI,eAAe;AAAA,MAAI;AAAA,IACvB,MAAM,SAAS,SAAS,UAAU,OAAO,OAAO,SAAS,QAAQ,UAAU,CAAC,GAAG,EAAE;AAAA,IACjF,IAAI,OAAO,MAAM,MAAM,KAAK,WAAW;AAAA,MAAG;AAAA,IAC1C,MAAM,YAAY,SAAS;AAAA,IAC3B,OAAO,KAAK,SAAS,UAAU,OAAO,OAAO,SAAS,aAAa,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC;AAAA,IAClG,IAAI,OAAO,UAAe,WAAG;AAAA,MAC5B,IAAI,OAAO;AAAA,MACX,MAAM,UAAU,YAAY;AAAA,MAC5B,IAAI,SAAS;AAAA,QACZ,OAAO,WAAW,UAAU;AAAA,QAC5B,MAAM,cAAc,OAAO,KAAK;AAAA,QAChC,IAAI,OAAO,gBAAgB,YAAY,CAAC,OAAO,MAAM,WAAW;AAAA,UAAG,UAAU,aAAa;AAAA,MAC3F;AAAA,IACD;AAAA,IACA,SAAS;AAAA,EACV;AAAA,EACA,IAAI,OAAO,KAAK,GAAG,EAAE,SAAS;AAAA,IAAG,UAAU,MAAM;AAAA,EACjD,OAAO;AAAA;AAER,SAAS,cAAc,CAAC,QAAQ,WAAW;AAAA,EAC1C,IAAI,UAAU,SAAc;AAAA,IAAG,OAAO,OAAO,UAAU;AAAA,EACvD,IAAI,UAAU,aAAkB;AAAA,IAAG,OAAO,WAAW,UAAU;AAAA,EAC/D,IAAI,UAAU,SAAc;AAAA,IAAG,OAAO,OAAO,UAAU;AAAA,EACvD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,wBAAwB,IAAI,KAAK,UAAU,QAAQ,IAAG;AAAA,EAC7F,IAAI,UAAU,QAAa;AAAA,IAAG,OAAO,MAAM,UAAU;AAAA,EACrD,IAAI,UAAU,QAAa;AAAA,IAAG,OAAO,MAAM,UAAU;AAAA,EACrD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,QAAQ,UAAU;AAAA,EACzD,IAAI,UAAU,UAAe;AAAA,IAAG,OAAO,QAAQ,UAAU;AAAA,EACzD,IAAI,UAAU;AAAA,IAAK,OAAO,MAAM,OAAO,OAAO,CAAC,GAAG,OAAO,OAAO,CAAC,GAAG,UAAU,GAAG;AAAA;AAElF,SAAS,aAAa,CAAC,MAAM;AAAA,EAC5B,QAAQ;AAAA,SACF;AAAA,SACA;AAAA,MAAc,OAAO;AAAA,SACrB;AAAA,MAAiB,OAAO,CAAC,UAAU,EAAE,MAAM,WAAW,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA,SAC5E;AAAA,MAAsB,OAAO,CAAC,UAAU,EAAE,UAAU,WAAW,MAAM,GAAG,KAAK,MAAM,EAAE;AAAA;AAAA,MACjF;AAAA;AAAA;AAGX,SAAS,eAAe,CAAC,QAAQ;AAAA,EAChC,MAAM,OAAO,gBAAgB,MAAM;AAAA,EACnC,MAAM,MAAM,YAAY,MAAM;AAAA,EAC9B,IAAI,CAAC;AAAA,IAAK,OAAO,CAAC,IAAI;AAAA,EACtB,MAAM,aAAa,CAAC,IAAI,QAAQ,SAAS;AAAA,EACzC,MAAM,gBAAgB,aAAa,IAAI,CAAC,WAAW,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;AAAA,EAC/E,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,GAAG;AAAA,IACH;AAAA,EACD;AAAA;AAKD,IAAM,aAAa,IAAI,WAAW,aAAa,CAAC;AAChD,SAAS,eAAe,CAAC,QAAQ,SAAS,YAAY;AAAA,EACrD,IAAI,gBAAgB;AAAA,EACpB,IAAI,eAAe;AAAA,EACnB,IAAI,YAAY;AAAA,EAChB,OAAO;AAAA,IACN,GAAG,CAAC,QAAQ;AAAA,MACX,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,oCAAoC;AAAA,QAC5E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,kBAAkB,MAAM;AAAA,QAC3B,MAAM,wBAAwB,IAAI,MAAM,0DAA0D;AAAA,QAClG,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,MAAM,OAAO,WAAW,MAAM,IAAI,IAAI,OAAO,QAAQ;AAAA,QACrD,MAAM,eAAe,gBAAgB;AAAA,aACjC;AAAA,UACH;AAAA,QACD,CAAC;AAAA,QACD,WAAW,SAAS;AAAA,UAAc,OAAO,KAAK;AAAA,QAC9C,gBAAgB;AAAA,aACZ;AAAA,UACH;AAAA,QACD;AAAA,QACA,eAAe;AAAA,QACd,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,IAGf,KAAK,CAAC,OAAO;AAAA,MACZ,IAAI,CAAC,eAAe;AAAA,QACnB,MAAM,wBAAwB,IAAI,MAAM,sBAAsB;AAAA,QAC9D,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,mCAAmC;AAAA,QAC3E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,MAAM,WAAW,eAAe,MAAM;AAAA,MACtC,IAAI,WAAW,cAAc,MAAM;AAAA,QAClC,MAAM,wBAAwB,IAAI,MAAM,IAAI,cAAc,+BAA+B,cAAc,aAAa;AAAA,QACpH,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,eAAe;AAAA,QACf,OAAO,KAAK;AAAA,QACX,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,IAGf,QAAQ,GAAG;AAAA,MACV,IAAI,CAAC,eAAe;AAAA,QACnB,MAAM,wBAAwB,IAAI,MAAM,yBAAyB;AAAA,QACjE,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,kCAAkC;AAAA,QAC1E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,IAAI,iBAAiB,cAAc,MAAM;AAAA,UACxC,MAAM,wBAAwB,IAAI,MAAM,sBAAsB,cAAc,QAAQ;AAAA,UACpF,QAAQ,KAAK;AAAA,UACb,MAAM;AAAA,QACP;AAAA,QACA,MAAM,cAAc,CAAC,cAAc,OAAO;AAAA,QAC1C,IAAI,cAAc;AAAA,UAAG,OAAO,IAAI,WAAW,WAAW,CAAC;AAAA,QACvD,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACd,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA;AAAA;AAAA,IAGR,QAAQ,GAAG;AAAA,MACV,IAAI,WAAW;AAAA,QACd,MAAM,wBAAwB,IAAI,MAAM,oCAAoC;AAAA,QAC5E,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI,kBAAkB,MAAM;AAAA,QAC3B,MAAM,wBAAwB,IAAI,MAAM,gDAAgD;AAAA,QACxF,QAAQ,KAAK;AAAA,QACb,MAAM;AAAA,MACP;AAAA,MACA,IAAI;AAAA,QACH,OAAO,UAAU;AAAA,QACjB,YAAY;AAAA,QACZ,IAAI;AAAA,UAAY,WAAW;AAAA,QAC1B,OAAO,OAAO;AAAA,QACf,QAAQ,KAAK;AAAA;AAAA;AAAA,EAGhB;AAAA;AAKD,IAAM,mBAAmB;AACzB,SAAS,gBAAgB,GAAG;AAAA,EAC3B,IAAI,SAAS,IAAI,MAAM,gBAAgB;AAAA,EACvC,IAAI,eAAe,OAAO,SAAS;AAAA,EACnC,IAAI,OAAO;AAAA,EACX,IAAI,OAAO;AAAA,EACX,IAAI,iBAAiB;AAAA,EACrB,MAAM,kBAAkB,CAAC,UAAU;AAAA,IAClC,MAAM,QAAQ,OAAO;AAAA,IACrB,IAAI,UAAU,MAAM,QAAQ;AAAA,MAC3B,OAAO,QAAQ;AAAA,MACf,OAAO,OAAO,IAAI;AAAA,IACnB,EAAO;AAAA,aAAO,QAAQ,MAAM,SAAS,KAAK;AAAA,IAC1C,kBAAkB;AAAA,IAClB,IAAI,mBAAmB,KAAK,OAAO,SAAS,kBAAkB;AAAA,MAC7D,SAAS,IAAI,MAAM,gBAAgB;AAAA,MACnC,eAAe,mBAAmB;AAAA,MAClC,OAAO;AAAA,MACP,OAAO;AAAA,IACR;AAAA;AAAA,EAED,SAAS,IAAI,CAAC,OAAO,UAAU;AAAA,IAC9B,IAAI,UAAU;AAAA,MACb,IAAI,MAAM;AAAA,MACV,IAAI,cAAc,KAAK,IAAI,OAAO,cAAc;AAAA,MAChD,OAAO,cAAc,GAAG;AAAA,QACvB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,SAAS,KAAK,IAAI,aAAa,MAAM,MAAM;AAAA,QACjD,MAAM,UAAU,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,MAAM;AAAA,QAC1E,gBAAgB,MAAM;AAAA,QACtB,eAAe;AAAA,QACf,OAAO;AAAA,QACP,IAAI,CAAC,SAAS,OAAO;AAAA,UAAG;AAAA,MACzB;AAAA,MACA,OAAO;AAAA,IACR;AAAA,IACA,IAAI,iBAAiB;AAAA,MAAO,OAAO;AAAA,IACnC,IAAI,UAAU;AAAA,MAAG,OAAO;AAAA,IACxB,MAAM,aAAa,OAAO;AAAA,IAC1B,IAAI,WAAW,UAAU,OAAO;AAAA,MAC/B,MAAM,OAAO,WAAW,WAAW,QAAQ,aAAa,WAAW,SAAS,GAAG,KAAK;AAAA,MACpF,gBAAgB,KAAK;AAAA,MACrB,OAAO;AAAA,IACR;AAAA,IACA,MAAM,SAAS,IAAI,WAAW,KAAK;AAAA,IACnC,IAAI,SAAS;AAAA,IACb,IAAI,YAAY;AAAA,IAChB,OAAO,YAAY,GAAG;AAAA,MACrB,MAAM,QAAQ,OAAO;AAAA,MACrB,MAAM,SAAS,KAAK,IAAI,WAAW,MAAM,MAAM;AAAA,MAC/C,OAAO,IAAI,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM;AAAA,MAC9E,UAAU;AAAA,MACV,aAAa;AAAA,MACb,gBAAgB,MAAM;AAAA,IACvB;AAAA,IACA,OAAO;AAAA;AAAA,EAER,OAAO;AAAA,IACN,MAAM,CAAC,UAAU;AAAA,MAChB,IAAI,MAAM,WAAW;AAAA,QAAG;AAAA,MACxB,IAAI,WAAW,OAAO,IAAI;AAAA,MAC1B,IAAI,aAAa,MAAM;AAAA,QACtB,MAAM,SAAS,OAAO;AAAA,QACtB,MAAM,SAAS,SAAS;AAAA,QACxB,MAAM,YAAY,IAAI,MAAM,MAAM;AAAA,QAClC,MAAM,QAAQ,OAAO,OAAO,SAAS,SAAS;AAAA,QAC9C,IAAI,OAAO;AAAA,UAAM,SAAS,IAAI,EAAG,IAAI,OAAO;AAAA,YAAK,UAAU,KAAK,OAAO,OAAO;AAAA,QACzE,SAAI,QAAQ,GAAG;AAAA,UACnB,MAAM,YAAY,SAAS;AAAA,UAC3B,SAAS,IAAI,EAAG,IAAI,WAAW;AAAA,YAAK,UAAU,KAAK,OAAO,OAAO;AAAA,UACjE,SAAS,IAAI,EAAG,IAAI,MAAM;AAAA,YAAK,UAAU,YAAY,KAAK,OAAO;AAAA,QAClE;AAAA,QACA,SAAS;AAAA,QACT,eAAe,SAAS;AAAA,QACxB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,WAAW,OAAO,IAAI;AAAA,MACvB;AAAA,MACA,OAAO,QAAQ;AAAA,MACf,OAAO;AAAA,MACP,kBAAkB,MAAM;AAAA;AAAA,IAEzB,WAAW,MAAM;AAAA,IACjB,MAAM,CAAC,UAAU;AAAA,MAChB,IAAI,iBAAiB;AAAA,QAAO,OAAO;AAAA,MACnC,IAAI,UAAU;AAAA,QAAG,OAAO;AAAA,MACxB,MAAM,aAAa,OAAO;AAAA,MAC1B,IAAI,WAAW,UAAU;AAAA,QAAO,OAAO,WAAW,WAAW,QAAQ,aAAa,WAAW,SAAS,GAAG,KAAK;AAAA,MAC9G,MAAM,SAAS,IAAI,WAAW,KAAK;AAAA,MACnC,IAAI,SAAS;AAAA,MACb,IAAI,QAAQ;AAAA,MACZ,OAAO,SAAS,OAAO;AAAA,QACtB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,SAAS,KAAK,IAAI,QAAQ,QAAQ,MAAM,MAAM;AAAA,QACpD,IAAI,WAAW,MAAM;AAAA,UAAQ,OAAO,IAAI,OAAO,MAAM;AAAA,QAChD;AAAA,iBAAO,IAAI,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM;AAAA,QACjD,UAAU;AAAA,QACV,QAAQ,QAAQ,IAAI;AAAA,MACrB;AAAA,MACA,OAAO;AAAA;AAAA,IAER,SAAS,CAAC,UAAU;AAAA,MACnB,IAAI,QAAQ;AAAA,QAAgB,MAAM,IAAI,MAAM,yBAAyB;AAAA,MACrE,IAAI,UAAU;AAAA,QAAG;AAAA,MACjB,IAAI,YAAY;AAAA,MAChB,OAAO,YAAY,GAAG;AAAA,QACrB,MAAM,QAAQ,OAAO;AAAA,QACrB,MAAM,YAAY,KAAK,IAAI,WAAW,MAAM,MAAM;AAAA,QAClD,gBAAgB,SAAS;AAAA,QACzB,aAAa;AAAA,MACd;AAAA;AAAA,IAED;AAAA,EACD;AAAA;AAKD,IAAM,eAAe;AACrB,IAAM,aAAa;AACnB,IAAM,8BAA8B,IAAI,MAAM,2BAA2B;AACzE,SAAS,cAAc,CAAC,UAAU,CAAC,GAAG;AAAA,EACrC,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,QAAQ,WAAW,MAAM,MAAM,SAAS,SAAS,iBAAiB;AAAA,EAClE,IAAI,QAAQ;AAAA,EACZ,IAAI,QAAQ;AAAA,EACZ,IAAI,OAAO;AAAA,EACX,IAAI,MAAM;AAAA,EACV,IAAI,eAAe;AAAA,EACnB,MAAM,aAAa,CAAC;AAAA,EACpB,IAAI,qBAAqB,CAAC;AAAA,EAC1B,MAAM,WAAW;AAAA,IAChB,eAAe,MAAM,UAAU;AAAA,IAC/B,gBAAgB,MAAM,CAAC,gBAAgB,aAAa,cAAc;AAAA,IAClE,KAAK,CAAC,OAAO;AAAA,MACZ,IAAI;AAAA,QAAO,MAAM,IAAI,MAAM,wBAAwB;AAAA,MACnD,KAAK,KAAK;AAAA;AAAA,IAEX,GAAG,GAAG;AAAA,MACL,QAAQ;AAAA;AAAA,IAET,UAAU,GAAG;AAAA,MACZ,IAAI,UAAU;AAAA,QAAc,MAAM,IAAI,MAAM,6CAA6C;AAAA,MACzF,IAAI;AAAA,QAAM;AAAA,MACV,OAAO,CAAC,MAAM;AAAA,QACb,IAAI,UAAU,IAAI,YAAY;AAAA,UAC7B,IAAI,OAAO;AAAA,YACV,IAAI,UAAU,IAAI,KAAK;AAAA,cAAQ,MAAM;AAAA,YACrC,OAAO;AAAA,YACP;AAAA,UACD;AAAA,UACA,OAAO;AAAA,QACR;AAAA,QACA,MAAM,cAAc,KAAK,UAAU;AAAA,QACnC,IAAI,YAAY,WAAW,GAAG;AAAA,UAC7B,IAAI,UAAU,IAAI,aAAa,GAAG;AAAA,YACjC,IAAI,OAAO;AAAA,cACV,IAAI;AAAA,gBAAQ,MAAM;AAAA,cAClB,OAAO;AAAA,cACP;AAAA,YACD;AAAA,YACA,OAAO;AAAA,UACR;AAAA,UACA,IAAI,YAAY,KAAK,aAAa,CAAC,EAAE,SAAS,UAAU,CAAC,GAAG;AAAA,YAC3D,QAAQ,aAAa,CAAC;AAAA,YACtB,OAAO;AAAA,YACP,MAAM;AAAA,YACN;AAAA,UACD;AAAA,UACA,IAAI;AAAA,YAAQ,MAAM,IAAI,MAAM,qBAAqB;AAAA,UACjD,QAAQ,UAAU;AAAA,UAClB;AAAA,QACD;AAAA,QACA,IAAI;AAAA,QACJ,IAAI;AAAA,UACH,iBAAiB,iBAAiB,aAAa,MAAM;AAAA,UACpD,OAAO,KAAK;AAAA,UACb,IAAI;AAAA,YAAQ,MAAM;AAAA,UAClB,QAAQ,UAAU;AAAA,UAClB;AAAA;AAAA,QAED,MAAM,aAAa,cAAc,eAAe,IAAI;AAAA,QACpD,IAAI,YAAY;AAAA,UACf,MAAM,aAAa,eAAe,OAAO,kBAAkB,CAAC;AAAA,UAC5D,IAAI,UAAU,IAAI,aAAa,YAAY;AAAA,YAC1C,IAAI,SAAS;AAAA,cAAQ,MAAM;AAAA,YAC3B,OAAO;AAAA,UACR;AAAA,UACA,QAAQ,UAAU;AAAA,UAClB,MAAM,YAAY,WAAW,KAAK,UAAU,EAAE,SAAS,GAAG,eAAe,IAAI,CAAC;AAAA,UAC9E,MAAM,SAAS,eAAe,SAAS,sBAAsB,aAAa;AAAA,UAC1E,WAAW,OAAO;AAAA,YAAW,OAAO,OAAO,UAAU;AAAA,UACrD;AAAA,QACD;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB,MAAM,SAAS;AAAA,QACf,IAAI,eAAe;AAAA,UAAQ,OAAO,OAAO,GAAG,eAAe,UAAU,OAAO;AAAA,QAC5E,eAAe,QAAQ,UAAU;AAAA,QACjC,eAAe,QAAQ,kBAAkB;AAAA,QACzC,qBAAqB,CAAC;AAAA,QACtB,eAAe;AAAA,UACd;AAAA,UACA,WAAW,OAAO;AAAA,UAClB,SAAS,CAAC,OAAO,OAAO;AAAA,QACzB;AAAA,QACA,QAAQ;AAAA,QACR,OAAO;AAAA,MACR;AAAA;AAAA,IAED,UAAU,CAAC,UAAU;AAAA,MACpB,IAAI,UAAU,cAAc,CAAC,gBAAgB,aAAa,cAAc;AAAA,QAAG,OAAO;AAAA,MAClF,MAAM,cAAc,KAAK,IAAI,aAAa,WAAW,UAAU,CAAC;AAAA,MAChE,IAAI,gBAAgB;AAAA,QAAG,OAAO;AAAA,MAC9B,MAAM,MAAM,KAAK,aAAa,QAAQ;AAAA,MACtC,aAAa,aAAa;AAAA,MAC1B,OAAO;AAAA;AAAA,IAER,WAAW,GAAG;AAAA,MACb,IAAI,UAAU,cAAc,CAAC;AAAA,QAAc,OAAO;AAAA,MAClD,IAAI,aAAa,YAAY;AAAA,QAAG,MAAM,IAAI,MAAM,yBAAyB;AAAA,MACzE,IAAI,UAAU,IAAI,aAAa;AAAA,QAAS,OAAO;AAAA,MAC/C,QAAQ,aAAa,OAAO;AAAA,MAC5B,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,OAAO;AAAA;AAAA,IAER,SAAS,GAAG;AAAA,MACX,IAAI,UAAU,cAAc,CAAC;AAAA,QAAc,OAAO;AAAA,MAClD,MAAM,YAAY,KAAK,IAAI,aAAa,WAAW,UAAU,CAAC;AAAA,MAC9D,IAAI,YAAY,GAAG;AAAA,QAClB,QAAQ,SAAS;AAAA,QACjB,aAAa,aAAa;AAAA,MAC3B;AAAA,MACA,IAAI,aAAa,YAAY;AAAA,QAAG,OAAO;AAAA,MACvC,OAAO,SAAS,YAAY;AAAA;AAAA,IAE7B,WAAW,GAAG;AAAA,MACb,IAAI,QAAQ;AAAA,QACX,IAAI,CAAC;AAAA,UAAK,MAAM;AAAA,QAChB,IAAI,UAAU,IAAI,GAAG;AAAA,UACpB,IAAI,KAAK,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC;AAAA,YAAG,MAAM,IAAI,MAAM,cAAc;AAAA,QACjF;AAAA,MACD;AAAA;AAAA,EAEF;AAAA,EACA,OAAO;AAAA;AAER,SAAS,WAAW,CAAC,OAAO;AAAA,EAC3B,IAAI,MAAM,aAAa,MAAM,GAAG;AAAA,IAC/B,MAAM,OAAO,IAAI,eAAe,MAAM,QAAQ,MAAM,YAAY,MAAM,SAAS,CAAC;AAAA,IAChF,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ;AAAA,MAAK,IAAI,KAAK,OAAO;AAAA,QAAI,OAAO;AAAA,IACjE,OAAO;AAAA,EACR;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ;AAAA,IAAK,IAAI,MAAM,OAAO;AAAA,MAAG,OAAO;AAAA,EAClE,OAAO;AAAA;;;AC9qBR,SAAS,gBAAe,GAAG;AAAA,EAC1B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,OAAO;AAAA,IACN,UAAU,IAAI,eAAe,EAAE,KAAK,CAAC,YAAY;AAAA,MAChD,mBAAmB;AAAA,MACnB,SAAS,gBAAkB,WAAW,QAAQ,KAAK,UAAU,GAAG,WAAW,MAAM,KAAK,UAAU,GAAG,WAAW,MAAM,KAAK,UAAU,CAAC;AAAA,MACnI,CAAC;AAAA,IACH,YAAY;AAAA,MACX,GAAG,CAAC,QAAQ;AAAA,QACX,MAAM,WAAW,WAAW,MAAM;AAAA,QAClC,MAAM,IAAI,KAAK,OAAO;AAAA,QACtB,IAAI;AAAA,UAAU,EAAE,OAAO;AAAA,QACvB,OAAO,IAAI,CAAC;AAAA,QACZ,IAAI;AAAA,UAAU,OAAO,SAAS;AAAA,QAC9B,OAAO,IAAI,eAAe;AAAA,UACzB,KAAK,CAAC,OAAO;AAAA,YACZ,OAAO,MAAM,KAAK;AAAA;AAAA,UAEnB,KAAK,GAAG;AAAA,YACP,IAAI,CAAC;AAAA,cAAU,OAAO,SAAS;AAAA;AAAA,UAEhC,KAAK,CAAC,QAAQ;AAAA,YACb,iBAAiB,MAAM,MAAM;AAAA;AAAA,QAE/B,CAAC;AAAA;AAAA,MAEF,QAAQ,GAAG;AAAA,QACV,OAAO,SAAS;AAAA;AAAA,MAEjB,KAAK,CAAC,KAAK;AAAA,QACV,iBAAiB,MAAM,GAAG;AAAA;AAAA,IAE5B;AAAA,EACD;AAAA;AAKD,eAAe,cAAc,CAAC,QAAQ;AAAA,EACrC,MAAM,SAAS,CAAC;AAAA,EAChB,MAAM,SAAS,OAAO,UAAU;AAAA,EAChC,IAAI,cAAc;AAAA,EAClB,IAAI;AAAA,IACH,OAAO,MAAM;AAAA,MACZ,QAAQ,MAAM,UAAU,MAAM,OAAO,KAAK;AAAA,MAC1C,IAAI;AAAA,QAAM;AAAA,MACV,OAAO,KAAK,KAAK;AAAA,MACjB,eAAe,MAAM;AAAA,IACtB;AAAA,IACA,MAAM,SAAS,IAAI,WAAW,WAAW;AAAA,IACzC,IAAI,SAAS;AAAA,IACb,WAAW,SAAS,QAAQ;AAAA,MAC3B,OAAO,IAAI,OAAO,MAAM;AAAA,MACxB,UAAU,MAAM;AAAA,IACjB;AAAA,IACA,OAAO;AAAA,YACN;AAAA,IACD,OAAO,YAAY;AAAA;AAAA;AAGrB,IAAM,QAAQ,CAAC,WAAW,OAAO,OAAO,IAAI,cAAgB;AAI5D,SAAS,gBAAgB,CAAC,UAAU,CAAC,GAAG;AAAA,EACvC,MAAM,WAAW,eAAe,OAAO;AAAA,EACvC,IAAI,iBAAiB;AAAA,EACrB,IAAI,UAAU;AAAA,EACd,MAAM,OAAO,CAAC,eAAe;AAAA,IAC5B,IAAI;AAAA,MAAS;AAAA,IACb,UAAU;AAAA,IACV,IAAI;AAAA,MACH,OAAO;AAAA,QAAM,IAAI,SAAS,cAAc,GAAG;AAAA,UAC1C,IAAI,gBAAgB;AAAA,YACnB,IAAI,SAAS,WAAW,CAAC,OAAO,eAAe,QAAQ,CAAC,GAAG,KAAK,MAAM,KAAK,CAAC,SAAS,eAAe;AAAA,cAAG;AAAA,UACxG,EAAO,SAAI,CAAC,SAAS,UAAU;AAAA,YAAG;AAAA,UAClC,IAAI,SAAS,eAAe,GAAG;AAAA,YAC9B,IAAI;AAAA,cACH,gBAAgB,MAAM;AAAA,cACrB,MAAM;AAAA,YACR,iBAAiB;AAAA,YACjB,IAAI,CAAC,SAAS,YAAY;AAAA,cAAG;AAAA,UAC9B;AAAA,QACD,EAAO;AAAA,UACN,MAAM,SAAS,SAAS,WAAW;AAAA,UACnC,IAAI,WAAW,QAAQ,WAAgB;AAAA,YAAG;AAAA,UAC1C,WAAW,QAAQ;AAAA,YAClB;AAAA,YACA,MAAM,IAAI,eAAe;AAAA,cACxB,KAAK,CAAC,GAAG;AAAA,gBACR,IAAI,OAAO,SAAS;AAAA,kBAAG,EAAE,MAAM;AAAA,gBAC1B;AAAA,mCAAiB;AAAA;AAAA,cAEvB,MAAM,MAAM,KAAK,UAAU;AAAA,cAC3B,MAAM,GAAG;AAAA,gBACR,iBAAiB;AAAA,gBACjB,KAAK,UAAU;AAAA;AAAA,YAEjB,CAAC;AAAA,UACF,CAAC;AAAA;AAAA,MAED,OAAO,OAAO;AAAA,MACf,IAAI;AAAA,QACH,gBAAgB,MAAM,KAAK;AAAA,QAC1B,MAAM;AAAA,MACR,iBAAiB;AAAA,MACjB,MAAM;AAAA,cACL;AAAA,MACD,UAAU;AAAA;AAAA;AAAA,EAGZ,OAAO,IAAI,gBAAgB;AAAA,IAC1B,SAAS,CAAC,OAAO,YAAY;AAAA,MAC5B,IAAI;AAAA,QACH,SAAS,MAAM,KAAK;AAAA,QACpB,KAAK,UAAU;AAAA,QACd,OAAO,OAAO;AAAA,QACf,IAAI;AAAA,UACH,gBAAgB,MAAM,KAAK;AAAA,UAC1B,MAAM;AAAA,QACR,MAAM;AAAA;AAAA;AAAA,IAGR,KAAK,CAAC,YAAY;AAAA,MACjB,IAAI;AAAA,QACH,SAAS,IAAI;AAAA,QACb,KAAK,UAAU;AAAA,QACf,SAAS,YAAY;AAAA,QACrB,IAAI,SAAS,cAAc,KAAK,CAAC,SAAS,eAAe;AAAA,UAAG,IAAI;AAAA,YAC/D,gBAAgB,MAAM;AAAA,YACrB,MAAM;AAAA,QACP,OAAO,OAAO;AAAA,QACf,IAAI;AAAA,UACH,gBAAgB,MAAM,KAAK;AAAA,UAC1B,MAAM;AAAA,QACR,MAAM;AAAA;AAAA;AAAA,EAGT,GAAQ,WAAG,EAAE,eAAe,EAAE,CAAC;AAAA;AAKhC,eAAe,OAAO,CAAC,SAAS;AAAA,EAC/B,QAAQ,UAAU,eAAe,iBAAgB;AAAA,EACjD,OAAO,YAAY;AAAA,IAClB,WAAW,SAAS,SAAS;AAAA,MAC5B,MAAM,cAAc,WAAW,IAAI,MAAM,MAAM;AAAA,MAC/C,MAAM,OAAO,UAAU,QAAQ,MAAM,OAAO,MAAM;AAAA,MAClD,IAAI,CAAC,MAAM;AAAA,QACV,MAAM,YAAY,MAAM;AAAA,QACxB;AAAA,MACD;AAAA,MACA,IAAI,gBAAgB;AAAA,QAAgB,MAAM,KAAK,OAAO,WAAW;AAAA,MAC5D,SAAI,gBAAgB;AAAA,QAAM,MAAM,KAAK,OAAO,EAAE,OAAO,WAAW;AAAA,MAChE;AAAA,YAAI;AAAA,UACR,MAAM,QAAQ,MAAM,cAAc,IAAI;AAAA,UACtC,IAAI,MAAM,SAAS,GAAG;AAAA,YACrB,MAAM,SAAS,YAAY,UAAU;AAAA,YACrC,MAAM,OAAO,MAAM,KAAK;AAAA,YACxB,MAAM,OAAO,MAAM;AAAA,UACpB,EAAO;AAAA,kBAAM,YAAY,MAAM;AAAA,UAC9B,MAAM;AAAA,UACP,MAAM,IAAI,UAAU,uCAAuC,MAAM,OAAO,QAAQ;AAAA;AAAA,IAElF;AAAA,KACE,EAAE,KAAK,MAAM,WAAW,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,WAAW,MAAM,GAAG,CAAC;AAAA,EAC3E,OAAO,IAAI,WAAW,MAAM,eAAe,QAAQ,CAAC;AAAA;AAErD,eAAe,SAAS,CAAC,SAAS,UAAU,CAAC,GAAG;AAAA,EAC/C,MAAM,eAAe,mBAAmB,iBAAiB,UAAU,IAAI,eAAe,EAAE,KAAK,CAAC,YAAY;AAAA,IACzG,WAAW,QAAQ,mBAAmB,aAAa,UAAU,IAAI,WAAW,OAAO,CAAC;AAAA,IACpF,WAAW,MAAM;AAAA,IAChB,CAAC;AAAA,EACH,MAAM,UAAU,CAAC;AAAA,EACjB,MAAM,cAAc,aAAa,YAAY,iBAAiB,OAAO,CAAC;AAAA,EACtE,iBAAiB,SAAS,aAAa;AAAA,IACtC,IAAI;AAAA,IACJ,IAAI;AAAA,MACH,kBAAkB,gBAAgB,MAAM,QAAQ,OAAO;AAAA,MACtD,OAAO,OAAO;AAAA,MACf,MAAM,MAAM,KAAK,OAAO;AAAA,MACxB,MAAM;AAAA;AAAA,IAEP,IAAI,oBAAoB,MAAM;AAAA,MAC7B,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB;AAAA,IACD;AAAA,IACA,IAAI,WAAW,eAAe,GAAG;AAAA,MAChC,MAAM,MAAM,MAAM,IAAI;AAAA,MACtB,QAAQ,KAAK,EAAE,QAAQ,gBAAgB,CAAC;AAAA,IACzC,EAAO;AAAA,cAAQ,KAAK;AAAA,QACnB,QAAQ;AAAA,QACR,MAAM,MAAM,eAAe,MAAM,IAAI;AAAA,MACtC,CAAC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;AF5MR,IAAM,YAAY,UAAU,IAAI;AAAA;AAKhC,MAAM,QAAuB;AAAA,EACV;AAAA,EAEjB,WAAW,CAAC,QAAgB;AAAA,IAC1B,KAAK,UAAU;AAAA;AAAA,MAGb,MAAM,GAA+B;AAAA,IACvC,MAAM,SAAS,KAAK;AAAA,IACpB,OAAO,IAAI,eAAe;AAAA,MACxB,KAAK,CAAC,YAAY;AAAA,QAChB,WAAW,QAAQ,IAAI,WAAW,MAAM,CAAC;AAAA,QACzC,WAAW,MAAM;AAAA;AAAA,IAErB,CAAC;AAAA;AAAA,OAGG,OAAM,GAAoB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAEhB;AAQA,eAAsB,OAAO,CAAC,OAA6C;AAAA,EACzE,MAAM,UAAU,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa;AAAA,IAC7D,OAAO;AAAA,MACL,QAAQ,EAAE,MAAM,MAAM,QAAQ,QAAQ,MAAM,OAAgB;AAAA,MAC5D,MAAM,IAAI,WAAW,OAAO;AAAA,IAC9B;AAAA,GACD;AAAA,EAGD,MAAM,YAAY,MAAM,QAAQ,OAAO;AAAA,EAGvC,MAAM,aAAa,MAAM,UAAU,OAAO,KAAK,SAAS,CAAC;AAAA,EAEzD,OAAO,IAAI,QAAQ,UAAU;AAAA;;AG5CxB,SAAS,MAAM,CAAC,KAAe;AAAA,EACpC,OAAO;AAAA,IACL,UAAU,IAAI;AAAA,IACd,MAAM,IAAI;AAAA,IACV,MAAM,IAAI;AAAA,IACV,KAAK,IAAI;AAAA,EACX;AAAA;;ACJK,SAAS,QAAQ,CAAC,KAAU,KAAe;AAAA,EAChD,MAAM,MAAM,OAAO,GAAG;AAAA,EAEtB,OAAO;AAAA,IACL,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS;AAAA,EACX;AAAA;;ACjBF;AACA,sBAAS;AAIT,IAAM,cAAc,WAAU,MAAM;AAQpC,eAAsB,OAAO,CAAC,KAA2C;AAAA,EACvE,MAAM,SAAS,MAAM,IAAI,OAAO;AAAA,EAGhC,MAAM,YAAY,MAAM,YAAY,MAAM;AAAA,EAG1C,MAAM,UAAU,MAAM,UAAU,SAAS;AAAA,EAEzC,MAAM,QAAgC,CAAC;AAAA,EACvC,WAAW,SAAS,SAAS;AAAA,IAC3B,KAAK,MAAM,OAAO,SAAS,UAAU,MAAM,OAAO,SAAS,cAAc,MAAM,MAAM;AAAA,MACnF,MAAM,MAAM,OAAO,QAAQ,OAAO,KAAK,MAAM,IAAI;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;ACdF,SAAS,MAAM,CAAC,KAAkB;AAAA,EACvC,IAAI,SAAS;AAAA,EAGb,IAAI,IAAI,UAAU;AAAA,IAChB,UAAU,IAAI,WAAW;AAAA,EAC3B;AAAA,EAGA,IAAI,IAAI,MAAM;AAAA,IACZ,UAAU,IAAI,OAAO;AAAA,EACvB;AAAA,EAGA,UAAU,IAAI;AAAA,EAGd,IAAI,IAAI,OAAO,IAAI,QAAQ,UAAU;AAAA,IACnC,UAAU,MAAM,IAAI;AAAA,EACtB;AAAA,EAEA,OAAO;AAAA;;AC7BT,SAAS,iBAAiB,CAAC,KAAsB;AAAA,EAE/C,IAAI,IAAI,SAAS,GAAG,KAAK,CAAC,IAAI,SAAS,GAAG,GAAG;AAAA,IAC3C,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,IAAI,SAAS,GAAG,GAAG;AAAA,IACrB,OAAO;AAAA,EACT;AAAA,EAEA,IAAI,QAAQ,aAAa;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAkBF,SAAS,KAAK,CAAC,SAAsB;AAAA,EAC1C,IAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAAA,IAC3C,MAAM,IAAI,aAAa,sCAAsC,OAAO;AAAA,EACtE;AAAA,EAGA,IAAI,QAAQ,SAAS,GAAG,GAAG;AAAA,IACzB,MAAM,IAAI,aAAa,gEAAgE,OAAO;AAAA,EAChG;AAAA,EAIA,MAAM,iBAAiB,QAAQ,YAAY,GAAG;AAAA,EAC9C,IAAI,cAAc;AAAA,EAClB,IAAI,aAAa;AAAA,EAEjB,IAAI,mBAAmB,IAAI;AAAA,IACzB,cAAc,QAAQ,UAAU,GAAG,cAAc;AAAA,IACjD,aAAa,QAAQ,UAAU,iBAAiB,CAAC;AAAA,EACnD;AAAA,EAGA,MAAM,aAAa,WAAW,YAAY,GAAG;AAAA,EAC7C,IAAI;AAAA,EACJ,IAAI;AAAA,EAEJ,IAAI,eAAe,IAAI;AAAA,IAErB,OAAO;AAAA,IACP,MAAM;AAAA,EACR,EAAO;AAAA,IACL,OAAO,WAAW,UAAU,GAAG,UAAU;AAAA,IACzC,MAAM,WAAW,UAAU,aAAa,CAAC;AAAA;AAAA,EAG3C,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,aAAa,oBAAoB,OAAO;AAAA,EACpD;AAAA,EAEA,IAAI,CAAC,KAAK;AAAA,IACR,MAAM,IAAI,aACR,oEACA,OACF;AAAA,EACF;AAAA,EAGA,IAAI,mBAAmB,IAAI;AAAA,IACzB,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAGA,MAAM,QAAQ,YAAY,MAAM,GAAG;AAAA,EAGnC,IAAI,kBAAkB,MAAM,EAAE,GAAG;AAAA,IAC/B,MAAM,WAAW,MAAM;AAAA,IACvB,MAAM,OAAO,MAAM,SAAS,IAAI,MAAM,MAAM,CAAC,EAAE,KAAK,GAAG,IAAI;AAAA,IAC3D,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAGA,OAAO;AAAA,IACL,UAAU;AAAA,IACV,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AAAA;;AC9GF,MAAM,SAAuB;AAAA,EACV;AAAA,EAEjB,WAAW,CAAC,QAAgB;AAAA,IAC1B,KAAK,UAAU;AAAA;AAAA,MAGb,MAAM,GAA+B;AAAA,IACvC,MAAM,SAAS,KAAK;AAAA,IACpB,OAAO,IAAI,eAAe;AAAA,MACxB,KAAK,CAAC,YAAY;AAAA,QAChB,WAAW,QAAQ,IAAI,WAAW,MAAM,CAAC;AAAA,QACzC,WAAW,MAAM;AAAA;AAAA,IAErB,CAAC;AAAA;AAAA,OAGG,OAAM,GAAoB;AAAA,IAC9B,OAAO,KAAK;AAAA;AAEhB;AAQO,SAAS,IAAI,CAAC,QAAqB;AAAA,EACxC,OAAO,IAAI,SAAQ,MAAM;AAAA;",
19
+ "debugId": "E36D0778C816F02964756E2164756E21",
20
20
  "names": []
21
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@resourcexjs/core",
3
- "version": "2.5.0",
3
+ "version": "2.5.1",
4
4
  "description": "ResourceX Core - Resource management layer",
5
5
  "keywords": [
6
6
  "resourcex",
@@ -12,7 +12,7 @@
12
12
  "url": "git+https://github.com/Deepractice/ResourceX.git",
13
13
  "directory": "packages/core"
14
14
  },
15
- "license": "MIT",
15
+ "license": "Apache-2.0",
16
16
  "engines": {
17
17
  "node": ">=22.0.0"
18
18
  },