@pluv/crdt-loro 4.1.0 → 5.0.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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @pluv/crdt-loro
2
2
 
3
+ ## 5.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @pluv/crdt@5.0.1
8
+ - @pluv/types@5.0.1
9
+
10
+ ## 5.0.0
11
+
12
+ ### Patch Changes
13
+
14
+ - @pluv/crdt@5.0.0
15
+ - @pluv/types@5.0.0
16
+
3
17
  ## 4.1.0
4
18
 
5
19
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pluv/crdt-loro",
3
- "version": "4.1.0",
3
+ "version": "5.0.1",
4
4
  "description": "loro for @pluv/io",
5
5
  "author": {
6
6
  "email": "david@pluv.io",
@@ -20,21 +20,21 @@
20
20
  "access": "public"
21
21
  },
22
22
  "dependencies": {
23
- "@types/node": "^25.9.3",
24
- "js-base64": "^3.7.8",
25
- "@pluv/crdt": "^4.1.0",
26
- "@pluv/types": "^4.1.0"
23
+ "@pluv/crdt": "^5.0.1",
24
+ "@pluv/types": "^5.0.1",
25
+ "@types/node": "^26.2.0",
26
+ "js-base64": "^3.9.3"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "loro-crdt": "^1.0.0"
30
30
  },
31
31
  "devDependencies": {
32
- "eslint": "^10.5.0",
33
- "loro-crdt": "^1.13.2",
34
- "tsdown": "0.22.2",
35
- "typescript": "^5.9.3",
36
- "eslint-config-pluv": "^4.1.0",
37
- "@pluv/tsconfig": "^4.1.0"
32
+ "@pluv/tsconfig": "^5.0.1",
33
+ "eslint": "^10.9.0",
34
+ "eslint-config-pluv": "^5.0.1",
35
+ "loro-crdt": "^1.14.1",
36
+ "tsdown": "0.22.14",
37
+ "typescript": "^5.9.3"
38
38
  },
39
39
  "exports": {
40
40
  ".": {
package/src/counter.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LoroCounter } from "@loro-runtime";
1
+ import { LoroCounter } from "loro-crdt";
2
2
  import { LoroType } from "./types";
3
3
 
4
4
  export const counter = (): LoroCounter => {
@@ -6,7 +6,7 @@ import type {
6
6
  } from "@pluv/crdt";
7
7
  import type { CrdtDocLike } from "@pluv/types";
8
8
  import { fromUint8Array, toUint8Array } from "js-base64";
9
- import type { Container } from "@loro-runtime";
9
+ import type { Container } from "loro-crdt";
10
10
  import {
11
11
  LoroCounter,
12
12
  LoroDoc,
@@ -17,7 +17,7 @@ import {
17
17
  LoroText,
18
18
  LoroTree,
19
19
  UndoManager,
20
- } from "@loro-runtime";
20
+ } from "loro-crdt";
21
21
  import type { LoroType } from "../types";
22
22
  import type { LoroBuilder } from "./builder";
23
23
  import { builder } from "./builder";
@@ -1,5 +1,5 @@
1
1
  import { AbstractCrdtDocFactory } from "@pluv/crdt";
2
- import type { LoroDoc } from "@loro-runtime";
2
+ import type { LoroDoc } from "loro-crdt";
3
3
  import type { LoroType } from "../types";
4
4
  import { CrdtLoroDoc } from "./CrdtLoroDoc";
5
5
  import type { LoroBuilder } from "./builder";
@@ -6,8 +6,8 @@ import type {
6
6
  LoroMap,
7
7
  LoroMovableList,
8
8
  LoroText,
9
- } from "@loro-runtime";
10
- import { isContainer } from "@loro-runtime";
9
+ } from "loro-crdt";
10
+ import { isContainer } from "loro-crdt";
11
11
  import type { LoroType } from "../types";
12
12
 
13
13
  export type LoroBuilder = ReturnType<typeof builder>;
package/src/list.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Container } from "@loro-runtime";
2
- import { LoroList, isContainer } from "@loro-runtime";
1
+ import type { Container } from "loro-crdt";
2
+ import { LoroList, isContainer } from "loro-crdt";
3
3
  import type { LoroType } from "./types";
4
4
 
5
5
  export const list = <T extends unknown>(
package/src/map.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Container } from "@loro-runtime";
2
- import { LoroMap, isContainer } from "@loro-runtime";
1
+ import type { Container } from "loro-crdt";
2
+ import { LoroMap, isContainer } from "loro-crdt";
3
3
  import type { LoroType } from "./types";
4
4
 
5
5
  export const map = <T extends unknown>(
@@ -1,5 +1,5 @@
1
- import type { Container } from "@loro-runtime";
2
- import { isContainer, LoroMovableList } from "@loro-runtime";
1
+ import type { Container } from "loro-crdt";
2
+ import { isContainer, LoroMovableList } from "loro-crdt";
3
3
  import type { LoroType } from "./types";
4
4
 
5
5
  export const movableList = <T extends unknown>(value: T[] | readonly T[] = []) => {
package/src/object.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Container } from "@loro-runtime";
2
- import { LoroMap, isContainer } from "@loro-runtime";
1
+ import type { Container } from "loro-crdt";
2
+ import { LoroMap, isContainer } from "loro-crdt";
3
3
  import type { LoroType } from "./types";
4
4
 
5
5
  export const object = <T extends Record<string, any>>(value: T): LoroType<LoroMap<T>, T> => {
package/src/text.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LoroText } from "@loro-runtime";
1
+ import { LoroText } from "loro-crdt";
2
2
  import type { LoroType } from "./types";
3
3
 
4
4
  export const text = (value: string = ""): LoroType<LoroText, string> => {
package/src/tree.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LoroTree } from "@loro-runtime";
1
+ import { LoroTree } from "loro-crdt";
2
2
 
3
3
  export const tree = <T extends Record<string, unknown>>() => {
4
4
  const container = new LoroTree<T>();
@@ -1,8 +1,3 @@
1
1
  {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "paths": {
5
- "@loro-runtime": ["./src/loro-runtime.bundler.ts"]
6
- }
7
- }
2
+ "extends": "./tsconfig.json"
8
3
  }
package/tsconfig.json CHANGED
@@ -1,11 +1,8 @@
1
1
  {
2
2
  "extends": "@pluv/tsconfig/library.json",
3
3
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
4
- "exclude": ["node_modules"],
4
+ "exclude": ["node_modules", "dist", "tsdown*.ts"],
5
5
  "compilerOptions": {
6
- "lib": ["dom", "esnext"],
7
- "paths": {
8
- "@loro-runtime": ["./src/loro-runtime.browser.ts"]
9
- }
6
+ "lib": ["dom", "esnext"]
10
7
  }
11
8
  }
@@ -1,8 +1,3 @@
1
1
  {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "paths": {
5
- "@loro-runtime": ["./src/loro-runtime.node.ts"]
6
- }
7
- }
2
+ "extends": "./tsconfig.json"
8
3
  }
@@ -2,9 +2,6 @@ import { defineConfig } from "tsdown";
2
2
 
3
3
  export default defineConfig({
4
4
  entry: { browser: "src/index.ts" },
5
- alias: {
6
- "@loro-runtime": "./src/loro-runtime.browser.ts",
7
- },
8
5
  format: ["esm"],
9
6
  target: "esnext",
10
7
  sourcemap: true,
@@ -2,9 +2,20 @@ import { defineConfig } from "tsdown";
2
2
 
3
3
  export default defineConfig({
4
4
  entry: { bundler: "src/index.ts" },
5
- alias: {
6
- "@loro-runtime": "./src/loro-runtime.bundler.ts",
7
- },
5
+ plugins: [
6
+ {
7
+ name: "rewrite-loro-import",
8
+ renderChunk(code) {
9
+ return {
10
+ code: code.replaceAll(
11
+ /from\s*["']loro-crdt["']/g,
12
+ 'from "loro-crdt/bundler"',
13
+ ),
14
+ map: null,
15
+ };
16
+ },
17
+ },
18
+ ],
8
19
  format: ["esm"],
9
20
  target: "esnext",
10
21
  sourcemap: true,
package/tsdown.config.ts CHANGED
@@ -1,5 +1,5 @@
1
- import browserConfig from "./tsdown.browser.config.ts";
2
- import bundlerConfig from "./tsdown.bundler.config.ts";
3
- import nodeConfig from "./tsdown.node.config.ts";
1
+ import browserConfig from "./tsdown.browser.config";
2
+ import bundlerConfig from "./tsdown.bundler.config";
3
+ import nodeConfig from "./tsdown.node.config";
4
4
 
5
5
  export default [browserConfig, bundlerConfig, nodeConfig];
@@ -2,9 +2,20 @@ import { defineConfig } from "tsdown";
2
2
 
3
3
  export default defineConfig({
4
4
  entry: { node: "src/index.ts" },
5
- alias: {
6
- "@loro-runtime": "./src/loro-runtime.node.ts",
7
- },
5
+ plugins: [
6
+ {
7
+ name: "rewrite-loro-import",
8
+ renderChunk(code) {
9
+ return {
10
+ code: code.replaceAll(
11
+ /from\s*["']loro-crdt["']/g,
12
+ 'from "loro-crdt/nodejs"',
13
+ ),
14
+ map: null,
15
+ };
16
+ },
17
+ },
18
+ ],
8
19
  format: ["esm"],
9
20
  target: "esnext",
10
21
  sourcemap: true,
@@ -1,39 +0,0 @@
1
- $ tsdown --config tsdown.browser.config.ts && tsdown --config tsdown.bundler.config.ts && tsdown --config tsdown.node.config.ts
2
- ℹ tsdown v0.22.2 powered by rolldown v1.1.1
3
- ℹ config file: /home/runner/work/pluv/pluv/packages/crdt-loro/tsdown.browser.config.ts
4
- ℹ entry: src/index.ts
5
- ℹ target: esnext
6
- ℹ tsconfig: tsconfig.json
7
- ℹ Build start
8
- ℹ dist/browser.mjs  8.99 kB │ gzip: 2.27 kB
9
- ℹ dist/browser.mjs.map 21.63 kB │ gzip: 4.93 kB
10
- ℹ dist/browser.d.mts.map  2.70 kB │ gzip: 0.91 kB
11
- ℹ dist/rolldown-runtime-BBjsoOtd.mjs  1.11 kB │ gzip: 0.54 kB
12
- ℹ dist/browser.d.mts  4.88 kB │ gzip: 1.30 kB
13
- ℹ 5 files, total: 39.31 kB
14
- [PLUGIN_TIMINGS] Your build spent significant time in plugins. Here is a breakdown:
15
- - rolldown-plugin-dts:generate (65%)
16
- - tsdown:deps (20%)
17
- See https://rolldown.rs/options/checks#plugintimings for more details.
18
-
19
- ✔ Build complete in 3319ms
20
- ℹ tsdown v0.22.2 powered by rolldown v1.1.1
21
- ℹ config file: /home/runner/work/pluv/pluv/packages/crdt-loro/tsdown.bundler.config.ts
22
- ℹ entry: src/index.ts
23
- ℹ target: esnext
24
- ℹ tsconfig: tsconfig.bundler.build.json
25
- ℹ Build start
26
- ℹ dist/bundler.mjs 10.00 kB │ gzip: 2.65 kB
27
- ℹ dist/bundler.mjs.map 21.66 kB │ gzip: 4.93 kB
28
- ℹ 2 files, total: 31.66 kB
29
- ✔ Build complete in 106ms
30
- ℹ tsdown v0.22.2 powered by rolldown v1.1.1
31
- ℹ config file: /home/runner/work/pluv/pluv/packages/crdt-loro/tsdown.node.config.ts
32
- ℹ entry: src/index.ts
33
- ℹ target: esnext
34
- ℹ tsconfig: tsconfig.node.build.json
35
- ℹ Build start
36
- ℹ dist/node.mjs  9.91 kB │ gzip: 2.65 kB
37
- ℹ dist/node.mjs.map 21.66 kB │ gzip: 4.93 kB
38
- ℹ 2 files, total: 31.56 kB
39
- ✔ Build complete in 68ms
@@ -1,95 +0,0 @@
1
- import { AbstractCrdtDocFactory, CrdtType, DocApplyEncodedStateParams, DocBatchApplyEncodedStateParams, DocSubscribeCallbackParams, InferCrdtJson } from "@pluv/crdt";
2
- import { CrdtDocLike } from "@pluv/types";
3
-
4
- //#region src/loro-runtime.browser.d.ts
5
-
6
- import * as import_loro_crdt from "loro-crdt";
7
- //#endregion
8
- //#region src/counter.d.ts
9
- declare const counter: () => loro_runtime_browser_d_exports.LoroCounter;
10
- //#endregion
11
- //#region src/types.d.ts
12
- type LoroType<TValue extends unknown, TJson extends unknown = any> = TValue & CrdtType<TValue, TJson> & {
13
- toJSON?: () => any;
14
- toString?: () => string;
15
- };
16
- //#endregion
17
- //#region src/doc/builder.d.ts
18
- type LoroBuilder = ReturnType<typeof builder>;
19
- declare const builder: (doc: loro_runtime_browser_d_exports.LoroDoc) => {
20
- counter(name: string): loro_runtime_browser_d_exports.LoroCounter;
21
- list<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<loro_runtime_browser_d_exports.LoroList<T>, T[]>;
22
- map<T extends Record<string, unknown>>(name: string, value?: T): LoroType<loro_runtime_browser_d_exports.LoroMap<T>, T>;
23
- moveableList<T extends unknown>(name: string, value?: T[] | readonly T[]): LoroType<loro_runtime_browser_d_exports.LoroMovableList<T>, T[]>;
24
- text(name: string, value?: string): LoroType<loro_runtime_browser_d_exports.LoroText, string>;
25
- tree(name: string): import("loro-crdt").LoroTree<Record<string, unknown>>;
26
- };
27
- //#endregion
28
- //#region src/doc/CrdtLoroDoc.d.ts
29
- type CrdtLoroDocParams<TStorage extends Record<string, LoroType<any, any>>> = (builder: LoroBuilder) => TStorage;
30
- declare class CrdtLoroDoc<TStorage extends Record<string, LoroType<any, any>>> implements CrdtDocLike<loro_runtime_browser_d_exports.LoroDoc, TStorage> {
31
- #private;
32
- value: loro_runtime_browser_d_exports.LoroDoc;
33
- constructor(params?: CrdtLoroDocParams<TStorage>);
34
- applyEncodedState(params: DocApplyEncodedStateParams): this;
35
- batchApplyEncodedState(params: DocBatchApplyEncodedStateParams): this;
36
- canRedo(): boolean;
37
- canUndo(): boolean;
38
- destroy(): void;
39
- get(key?: undefined): TStorage;
40
- get<TKey extends keyof TStorage>(key: TKey): TStorage[TKey];
41
- getEncodedState(): string;
42
- toJson(): InferCrdtJson<TStorage>;
43
- toJson<TKey extends keyof TStorage>(type: TKey): InferCrdtJson<TStorage[TKey]>;
44
- isEmpty(): boolean;
45
- rebuildStorage(reference: TStorage): this;
46
- redo(): this;
47
- subscribe(listener: (params: DocSubscribeCallbackParams<loro_runtime_browser_d_exports.LoroDoc, TStorage>) => void): () => void;
48
- track(): this;
49
- /**
50
- * @description Unlike Yjs, this method is required to be called after each loro operation.
51
- * @date January 12, 2025
52
- */
53
- transact(fn: () => void): this;
54
- undo(): this;
55
- }
56
- //#endregion
57
- //#region src/doc/CrdtLoroDocFactory.d.ts
58
- declare class CrdtLoroDocFactory<TStorage extends Record<string, LoroType<any, any>>> extends AbstractCrdtDocFactory<loro_runtime_browser_d_exports.LoroDoc, TStorage> {
59
- readonly _initialStorage: (builder: LoroBuilder) => TStorage;
60
- constructor(initialStorage?: (builder: LoroBuilder) => TStorage);
61
- getEmpty(): CrdtLoroDoc<TStorage>;
62
- getFactory(initialStorage?: ((builder: LoroBuilder) => TStorage) | undefined): CrdtLoroDocFactory<TStorage>;
63
- getInitialized(initialStorage?: (builder: LoroBuilder) => TStorage): CrdtLoroDoc<TStorage>;
64
- }
65
- //#endregion
66
- //#region src/doc/doc.d.ts
67
- declare const doc: <TStorage extends Record<string, LoroType<any, any>>>(value?: (builder: LoroBuilder) => TStorage) => CrdtLoroDocFactory<TStorage>;
68
- //#endregion
69
- //#region src/list.d.ts
70
- declare const list: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<loro_runtime_browser_d_exports.LoroList<T>, T[]>;
71
- //#endregion
72
- //#region src/map.d.ts
73
- declare const map: <T extends unknown>(value?: readonly (readonly [key: string, value: T])[]) => LoroType<loro_runtime_browser_d_exports.LoroMap<Record<string, T>>, Record<string, T>>;
74
- //#endregion
75
- //#region src/movableList.d.ts
76
- declare const movableList: <T extends unknown>(value?: T[] | readonly T[]) => LoroType<loro_runtime_browser_d_exports.LoroMovableList<T>, T[]>;
77
- //#endregion
78
- //#region src/object.d.ts
79
- declare const object: <T extends Record<string, any>>(value: T) => LoroType<loro_runtime_browser_d_exports.LoroMap<T>, T>;
80
- //#endregion
81
- //#region src/text.d.ts
82
- declare const text: (value?: string) => LoroType<loro_runtime_browser_d_exports.LoroText, string>;
83
- //#endregion
84
- //#region src/tree.d.ts
85
- declare const tree: <T extends Record<string, unknown>>() => loro_runtime_browser_d_exports.LoroTree<T>;
86
- declare namespace loro_d_exports {
87
- export { CrdtLoroDoc, LoroBuilder, LoroType, counter, doc, kind, list, map, movableList, object, text, tree };
88
- }
89
- declare const kind: "loro";
90
- //#endregion
91
- //#region src/index.d.ts
92
- type LoroLibraryType = typeof loro_d_exports;
93
- //#endregion
94
- export { LoroLibraryType, loro_d_exports as loro };
95
- //# sourceMappingURL=browser.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.d.mts","names":[],"sources":["../src/loro-runtime.browser.ts","../src/counter.ts","../src/types.ts","../src/doc/builder.ts","../src/doc/CrdtLoroDoc.ts","../src/doc/CrdtLoroDocFactory.ts","../src/doc/doc.ts","../src/list.ts","../src/map.ts","../src/movableList.ts","../src/object.ts","../src/text.ts","../src/tree.ts","../src/loro.ts","../src/index.ts"],"mappings":";;;;;;;;cCGa,OAAA,QAAc,8BAAA,CAAA,WAI1B;;;KCLW,QAAA,wDAAgE,MAAA,GACxE,QAAA,CAAS,MAAA,EAAQ,KAAA;EACb,MAAA;EACA,QAAA;AAAA;;;KCOI,WAAA,GAAc,UAAU,QAAQ,OAAA;AAAA,cAE/B,OAAA,GAAW,GAAA,EAAK,8BAAA,CAAA,OAAA;yBAEE,8BAAA,CAAA,WAAA;0BAGD,IAAA,UACN,KAAA,GACL,CAAA,cAAe,CAAA,KACvB,QAAA,CAAS,8BAAA,CAAA,QAAA,CAAS,CAAA,GAAI,CAAA;gBAUX,MAAA,mBAAuB,IAAA,UACrB,KAAA,GACL,CAAA,GACR,QAAA,CAAS,8BAAA,CAAA,OAAA,CAAQ,CAAA,GAAI,CAAA;kCAUM,IAAA,UACd,KAAA,GACL,CAAA,cAAe,CAAA,KACvB,QAAA,CAAS,8BAAA,CAAA,eAAA,CAAgB,CAAA,GAAI,CAAA;qBAUf,KAAA,YAAuB,QAAA,CAAS,8BAAA,CAAA,QAAA;0CAOhC,QAAA,CAAA,MAAA;AAAA;;;KCrCb,iBAAA,kBAAmC,MAAA,SAAe,QAAA,gBAC1D,OAAA,EAAS,WAAA,KACR,QAAA;AAAA,cAEQ,WAAA,kBACQ,MAAA,SAAe,QAAA,wBACvB,WAAA,CAAY,8BAAA,CAAA,OAAA,EAAS,QAAA;EAAA;EACvB,KAAA,EAAO,8BAAA,CAAA,OAAA;cAKF,MAAA,GAAQ,iBAAA,CAAkB,QAAA;EAiB/B,iBAAA,CAAkB,MAAA,EAAQ,0BAAA;EAW1B,sBAAA,CAAuB,MAAA,EAAQ,+BAAA;EAkC/B,OAAA;EAMA,OAAA;EAMA,OAAA;EAIA,GAAA,CAAI,GAAA,eAAkB,QAAA;EACtB,GAAA,oBAAuB,QAAA,EAAU,GAAA,EAAK,IAAA,GAAO,QAAA,CAAS,IAAA;EAOtD,eAAA;EAIA,MAAA,IAAU,aAAA,CAAc,QAAA;EACxB,MAAA,oBAA0B,QAAA,EAAU,IAAA,EAAM,IAAA,GAAO,aAAA,CAAc,QAAA,CAAS,IAAA;EAqBxE,OAAA;EAMA,cAAA,CAAe,SAAA,EAAW,QAAA;EAwB1B,IAAA;EAMA,SAAA,CACH,QAAA,GAAW,MAAA,EAAQ,0BAAA,CAA2B,8BAAA,CAAA,OAAA,EAAS,QAAA;EA6BpD,KAAA;EFvNP;;;;EE2OO,QAAA,CAAS,EAAA;EAQT,IAAA;AAAA;;;cChPE,kBAAA,kBACQ,MAAA,SAAe,QAAA,qBAC1B,sBAAA,CAAuB,8BAAA,CAAA,OAAA,EAAS,QAAA;EAAA,SACtB,eAAA,GAAkB,OAAA,EAAS,WAAA,KAAgB,QAAA;cAE/C,cAAA,IAAiB,OAAA,EAAS,WAAA,KAAgB,QAAA;EAM/C,QAAA,IAAY,WAAA,CAAY,QAAA;EAIxB,UAAA,CACH,cAAA,KAAmB,OAAA,EAAS,WAAA,KAAgB,QAAA,gBAC7C,kBAAA,CAAmB,QAAA;EAIf,cAAA,CACH,cAAA,IAAkB,OAAA,EAAS,WAAA,KAAgB,QAAA,GAC5C,WAAA,CAAY,QAAA;AAAA;;;cCzBN,GAAA,oBAAwB,MAAA,SAAe,QAAA,aAChD,KAAA,IAAQ,OAAA,EAAS,WAAA,KAAgB,QAAA,KAClC,kBAAA,CAAmB,QAAA;;;cCFT,IAAA,sBACT,KAAA,GAAO,CAAA,cAAe,CAAA,OACvB,QAAA,CAAS,8BAAA,CAAA,QAAA,CAAS,CAAA,GAAI,CAAA;;;cCFZ,GAAA,sBACT,KAAA,uBAA2B,GAAA,UAAa,KAAA,EAAO,CAAA,SAChD,QAAA,CAAS,8BAAA,CAAA,OAAA,CAAQ,MAAA,SAAe,CAAA,IAAK,MAAA,SAAe,CAAA;;;cCF1C,WAAA,sBAAkC,KAAA,GAAO,CAAA,cAAe,CAAA,OAQlC,QAAA,CAAS,8BAAA,CAAA,eAAA,CAAgB,CAAA,GAAI,CAAA;;;cCRnD,MAAA,aAAoB,MAAA,eAAqB,KAAA,EAAO,CAAA,KAAI,QAAA,CAAS,8BAAA,CAAA,OAAA,CAAQ,CAAA,GAAI,CAAA;;;cCDzE,IAAA,GAAQ,KAAA,cAAqB,QAAQ,CAAC,8BAAA,CAAA,QAAA;;;cCDtC,IAAA,aAAkB,MAAA,wBAAuB,8BAAA,CAAA,QAAA,CAAA,CAAA;AAAA;;;cCQzC,IAAA;;;KCND,eAAA,UAAyB,cAAI"}