@rool-dev/sdk 0.10.2 → 0.11.0-dev.7c05180

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +438 -1236
  2. package/dist/channel.d.ts +41 -129
  3. package/dist/channel.d.ts.map +1 -1
  4. package/dist/channel.js +216 -391
  5. package/dist/channel.js.map +1 -1
  6. package/dist/client.d.ts +3 -55
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +7 -93
  9. package/dist/client.js.map +1 -1
  10. package/dist/graphql.d.ts +4 -46
  11. package/dist/graphql.d.ts.map +1 -1
  12. package/dist/graphql.js +27 -250
  13. package/dist/graphql.js.map +1 -1
  14. package/dist/index.d.ts +3 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/path.d.ts +6 -0
  19. package/dist/path.d.ts.map +1 -0
  20. package/dist/path.js +47 -0
  21. package/dist/path.js.map +1 -0
  22. package/dist/reroute.d.ts +22 -0
  23. package/dist/reroute.d.ts.map +1 -0
  24. package/dist/reroute.js +61 -0
  25. package/dist/reroute.js.map +1 -0
  26. package/dist/rest.d.ts +9 -0
  27. package/dist/rest.d.ts.map +1 -1
  28. package/dist/rest.js +33 -1
  29. package/dist/rest.js.map +1 -1
  30. package/dist/space.d.ts +4 -14
  31. package/dist/space.d.ts.map +1 -1
  32. package/dist/space.js +30 -50
  33. package/dist/space.js.map +1 -1
  34. package/dist/subscription.d.ts.map +1 -1
  35. package/dist/subscription.js +23 -33
  36. package/dist/subscription.js.map +1 -1
  37. package/dist/types.d.ts +36 -212
  38. package/dist/types.d.ts.map +1 -1
  39. package/dist/webdav.d.ts +31 -21
  40. package/dist/webdav.d.ts.map +1 -1
  41. package/dist/webdav.js +58 -57
  42. package/dist/webdav.js.map +1 -1
  43. package/package.json +2 -1
  44. package/dist/apps.d.ts +0 -30
  45. package/dist/apps.d.ts.map +0 -1
  46. package/dist/apps.js +0 -81
  47. package/dist/apps.js.map +0 -1
  48. package/dist/locations.d.ts +0 -34
  49. package/dist/locations.d.ts.map +0 -1
  50. package/dist/locations.js +0 -90
  51. package/dist/locations.js.map +0 -1
  52. package/dist/machine.d.ts +0 -16
  53. package/dist/machine.d.ts.map +0 -1
  54. package/dist/machine.js +0 -51
  55. package/dist/machine.js.map +0 -1
package/dist/apps.js DELETED
@@ -1,81 +0,0 @@
1
- // =============================================================================
2
- // Extensions Client
3
- // REST API wrapper for user extension management (upload/delete/list/get)
4
- // =============================================================================
5
- function normalizeExtensionInfo(raw) {
6
- return { ...raw, published: raw.published ?? false, marketplaceExtensionId: raw.marketplaceExtensionId ?? null };
7
- }
8
- export class ExtensionsClient {
9
- config;
10
- constructor(config) {
11
- this.config = config;
12
- }
13
- async getHeaders() {
14
- const tokens = await this.config.authManager.getTokens();
15
- if (!tokens)
16
- throw new Error('Not authenticated');
17
- return { Authorization: `Bearer ${tokens.accessToken}`, 'X-Rool-Token': tokens.roolToken };
18
- }
19
- /**
20
- * List all user extensions.
21
- */
22
- async list() {
23
- const response = await fetch(this.config.extensionsUrl, {
24
- method: 'GET',
25
- headers: await this.getHeaders(),
26
- });
27
- if (!response.ok) {
28
- throw new Error(`Failed to list extensions: ${response.status} ${response.statusText}`);
29
- }
30
- const rows = await response.json();
31
- return rows.map(normalizeExtensionInfo);
32
- }
33
- /**
34
- * Get info for a specific user extension.
35
- */
36
- async get(extensionId) {
37
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
38
- method: 'GET',
39
- headers: await this.getHeaders(),
40
- });
41
- if (response.status === 404)
42
- return null;
43
- if (!response.ok) {
44
- throw new Error(`Failed to get extension: ${response.status} ${response.statusText}`);
45
- }
46
- return normalizeExtensionInfo(await response.json());
47
- }
48
- /**
49
- * Upload or update a user extension bundle.
50
- * @param extensionId - URL-safe identifier for the extension
51
- * @param options - Bundle zip file (must include index.html and manifest.json)
52
- */
53
- async upload(extensionId, options) {
54
- const formData = new FormData();
55
- formData.append('bundle', options.bundle);
56
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
57
- method: 'POST',
58
- headers: await this.getHeaders(),
59
- body: formData,
60
- });
61
- if (!response.ok) {
62
- const errorBody = await response.json().catch(() => ({}));
63
- const errorMessage = errorBody.error || `${response.status} ${response.statusText}`;
64
- throw new Error(`Failed to upload extension: ${errorMessage}`);
65
- }
66
- return normalizeExtensionInfo(await response.json());
67
- }
68
- /**
69
- * Delete a user extension permanently.
70
- */
71
- async delete(extensionId) {
72
- const response = await fetch(`${this.config.extensionsUrl}/${encodeURIComponent(extensionId)}`, {
73
- method: 'DELETE',
74
- headers: await this.getHeaders(),
75
- });
76
- if (!response.ok && response.status !== 204) {
77
- throw new Error(`Failed to delete extension: ${response.status} ${response.statusText}`);
78
- }
79
- }
80
- }
81
- //# sourceMappingURL=apps.js.map
package/dist/apps.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- export interface ParsedLocation {
2
- collection: string;
3
- basename: string;
4
- }
5
- /**
6
- * Generate a 6-character alphanumeric basename.
7
- * 62^6 ≈ 56.8B possible values.
8
- */
9
- export declare function generateBasename(): string;
10
- /**
11
- * Build a canonical location string from a collection and basename.
12
- * Validates both parts. Throws on invalid input.
13
- */
14
- export declare function loc(collection: string, basename: string): string;
15
- /**
16
- * Parse a canonical location string into its collection and basename.
17
- * Throws on malformed input. Use {@link normalizeLocation} first if the
18
- * input might be a short form like `"article/welcome"`.
19
- */
20
- export declare function parseLocation(location: string): ParsedLocation;
21
- /**
22
- * Normalize a user-provided location to the canonical full form.
23
- *
24
- * Accepts:
25
- * - `/space/<collection>/<basename>.json` — canonical
26
- * - `<collection>/<basename>` — short form
27
- * - `<collection>/<basename>.json` — short form with extension
28
- *
29
- * Always returns the canonical form. Throws on malformed input.
30
- */
31
- export declare function normalizeLocation(input: string): string;
32
- /** Return true if `input` is a syntactically valid (full or short) location. */
33
- export declare function isLocation(input: unknown): input is string;
34
- //# sourceMappingURL=locations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locations.d.ts","sourceRoot":"","sources":["../src/locations.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAQ9D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQ1D"}
package/dist/locations.js DELETED
@@ -1,90 +0,0 @@
1
- // =============================================================================
2
- // Object location helpers
3
- //
4
- // An object lives at a "location" — a path of the form
5
- // `/space/<collection>/<basename>.json`. The collection is the parent
6
- // directory; the basename is the filename without `.json`. The two together
7
- // fully identify the object inside its space.
8
- //
9
- // Functions here normalize user-provided strings, parse locations into their
10
- // parts, and mint new locations when the caller doesn't pin a basename.
11
- // =============================================================================
12
- const COLLECTION_RE = /^[a-zA-Z][a-zA-Z0-9_-]*$/;
13
- const BASENAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
14
- const FULL_LOCATION_RE = /^\/space\/([^/]+)\/([^/]+)\.json$/;
15
- const BASENAME_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
16
- /**
17
- * Generate a 6-character alphanumeric basename.
18
- * 62^6 ≈ 56.8B possible values.
19
- */
20
- export function generateBasename() {
21
- let out = '';
22
- for (let i = 0; i < 6; i++) {
23
- out += BASENAME_CHARS[Math.floor(Math.random() * BASENAME_CHARS.length)];
24
- }
25
- return out;
26
- }
27
- /**
28
- * Build a canonical location string from a collection and basename.
29
- * Validates both parts. Throws on invalid input.
30
- */
31
- export function loc(collection, basename) {
32
- if (!COLLECTION_RE.test(collection)) {
33
- throw new Error(`Invalid collection "${collection}". Must start with a letter and contain only alphanumeric characters, hyphens, and underscores.`);
34
- }
35
- if (!BASENAME_RE.test(basename)) {
36
- throw new Error(`Invalid basename "${basename}". Must start with an alphanumeric character and contain only alphanumeric characters, hyphens, and underscores.`);
37
- }
38
- return `/space/${collection}/${basename}.json`;
39
- }
40
- /**
41
- * Parse a canonical location string into its collection and basename.
42
- * Throws on malformed input. Use {@link normalizeLocation} first if the
43
- * input might be a short form like `"article/welcome"`.
44
- */
45
- export function parseLocation(location) {
46
- const match = FULL_LOCATION_RE.exec(location);
47
- if (!match)
48
- throw new Error(`Invalid location "${location}". Expected /space/<collection>/<basename>.json.`);
49
- const [, collection, basename] = match;
50
- if (!COLLECTION_RE.test(collection) || !BASENAME_RE.test(basename)) {
51
- throw new Error(`Invalid location "${location}".`);
52
- }
53
- return { collection, basename };
54
- }
55
- /**
56
- * Normalize a user-provided location to the canonical full form.
57
- *
58
- * Accepts:
59
- * - `/space/<collection>/<basename>.json` — canonical
60
- * - `<collection>/<basename>` — short form
61
- * - `<collection>/<basename>.json` — short form with extension
62
- *
63
- * Always returns the canonical form. Throws on malformed input.
64
- */
65
- export function normalizeLocation(input) {
66
- if (input.startsWith('/space/')) {
67
- parseLocation(input); // validate
68
- return input;
69
- }
70
- // Short form: "collection/basename" or "collection/basename.json"
71
- const stripped = input.endsWith('.json') ? input.slice(0, -5) : input;
72
- const slash = stripped.indexOf('/');
73
- if (slash <= 0 || stripped.indexOf('/', slash + 1) !== -1) {
74
- throw new Error(`Invalid location "${input}". Expected /space/<collection>/<basename>.json or <collection>/<basename>.`);
75
- }
76
- return loc(stripped.slice(0, slash), stripped.slice(slash + 1));
77
- }
78
- /** Return true if `input` is a syntactically valid (full or short) location. */
79
- export function isLocation(input) {
80
- if (typeof input !== 'string')
81
- return false;
82
- try {
83
- normalizeLocation(input);
84
- return true;
85
- }
86
- catch {
87
- return false;
88
- }
89
- }
90
- //# sourceMappingURL=locations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"locations.js","sourceRoot":"","sources":["../src/locations.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0BAA0B;AAC1B,EAAE;AACF,uDAAuD;AACvD,sEAAsE;AACtE,4EAA4E;AAC5E,8CAA8C;AAC9C,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,gFAAgF;AAEhF,MAAM,aAAa,GAAG,0BAA0B,CAAC;AACjD,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAClD,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAE7D,MAAM,cAAc,GAAG,gEAAgE,CAAC;AAOxF;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,QAAgB;IACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,uBAAuB,UAAU,iGAAiG,CAAC,CAAC;IACtJ,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,kHAAkH,CAAC,CAAC;IACnK,CAAC;IACD,OAAO,UAAU,UAAU,IAAI,QAAQ,OAAO,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,kDAAkD,CAAC,CAAC;IAC7G,MAAM,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,kEAAkE;IAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACtE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,6EAA6E,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC;QACH,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/machine.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export type MachineResource = {
2
- kind: 'object';
3
- path: string;
4
- } | {
5
- kind: 'file';
6
- path: string;
7
- };
8
- /**
9
- * Resolve a Rool machine resource from either a canonical `rool-machine:/...`
10
- * URI or a bare machine path such as `/rool-drive/...`.
11
- *
12
- * Returns null for ordinary strings, malformed machine paths, and unsupported
13
- * machine areas.
14
- */
15
- export declare function resolveMachineResource(input: string): MachineResource | null;
16
- //# sourceMappingURL=machine.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAa5E"}
package/dist/machine.js DELETED
@@ -1,51 +0,0 @@
1
- const MACHINE_URI_RE = /^rool-machine(?::|%3A)(\/.+)$/i;
2
- const ROOL_DRIVE_PREFIX = '/rool-drive/';
3
- /**
4
- * Resolve a Rool machine resource from either a canonical `rool-machine:/...`
5
- * URI or a bare machine path such as `/rool-drive/...`.
6
- *
7
- * Returns null for ordinary strings, malformed machine paths, and unsupported
8
- * machine areas.
9
- */
10
- export function resolveMachineResource(input) {
11
- const path = machinePathFromInput(input);
12
- if (!path)
13
- return null;
14
- if (path.startsWith(ROOL_DRIVE_PREFIX)) {
15
- return { kind: 'file', path };
16
- }
17
- if (isObjectPath(path)) {
18
- return { kind: 'object', path };
19
- }
20
- return null;
21
- }
22
- function machinePathFromInput(input) {
23
- const match = MACHINE_URI_RE.exec(input);
24
- const encodedPath = match ? match[1] : input.startsWith('/') ? input : null;
25
- if (!encodedPath)
26
- return null;
27
- try {
28
- const path = encodedPath.split('/').map(decodeURIComponent).join('/');
29
- validateMachinePath(path);
30
- return path;
31
- }
32
- catch {
33
- return null;
34
- }
35
- }
36
- function isObjectPath(path) {
37
- return /^\/space\/[a-zA-Z][a-zA-Z0-9_-]*\/[a-zA-Z0-9][a-zA-Z0-9_-]*\.json$/.test(path);
38
- }
39
- function validateMachinePath(path) {
40
- if (!path.startsWith('/'))
41
- throw new Error('Invalid machine path');
42
- if (path.includes('\\'))
43
- throw new Error('Invalid machine path');
44
- if (/[\x00-\x1f\x7f]/.test(path))
45
- throw new Error('Invalid machine path');
46
- const parts = path.split('/').slice(1);
47
- if (parts.some((part) => part === '' || part === '.' || part === '..')) {
48
- throw new Error('Invalid machine path');
49
- }
50
- }
51
- //# sourceMappingURL=machine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"machine.js","sourceRoot":"","sources":["../src/machine.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,gCAAgC,CAAC;AACxD,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAMzC;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACjE,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}