@xyo-network/boundwitness-loader 6.0.3 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -38,10 +38,12 @@ bun add {{name}}
38
38
 
39
39
  See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
40
40
 
41
+ ## Credits
41
42
 
43
+ [Made with 🔥 and ❄️ by XYO Foundation](https://xyo.network)
42
44
 
43
- [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
44
45
  [npm-badge]: https://img.shields.io/npm/v/@xyo-network/boundwitness-loader.svg
45
46
  [npm-link]: https://www.npmjs.com/package/@xyo-network/boundwitness-loader
46
47
  [license-badge]: https://img.shields.io/npm/l/@xyo-network/boundwitness-loader.svg
47
48
  [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
49
+ [logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/boundwitness-loader",
3
- "version": "6.0.3",
3
+ "version": "6.1.0",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -34,8 +34,8 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "@xyo-network/archivist-model": "~6.0.3",
38
- "@xyo-network/archivist-memory": "~6.0.3"
37
+ "@xyo-network/archivist-memory": "~6.1.0",
38
+ "@xyo-network/archivist-model": "~6.1.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@bitauth/libauth": "~3.0.0",
@@ -45,16 +45,14 @@
45
45
  "@opentelemetry/sdk-trace-base": "^2.7.1",
46
46
  "@scure/base": "~2.2.0",
47
47
  "@scure/bip39": "~2.2.0",
48
- "@xylabs/geo": "^6.0.7",
49
- "@xylabs/sdk-js": "^6.0.7",
50
- "@xylabs/threads": "^6.0.7",
51
- "@xylabs/toolchain": "~8.1.15",
52
- "@xylabs/tsconfig": "~8.1.15",
53
- "@xyo-network/sdk-protocol-js": "~6.0.8",
48
+ "@xylabs/geo": "^6.1.0",
49
+ "@xylabs/sdk-js": "^6.1.0",
50
+ "@xylabs/threads": "^6.1.0",
51
+ "@xylabs/toolchain": "^8.1.20",
52
+ "@xylabs/tsconfig": "^8.1.20",
53
+ "@xyo-network/sdk-protocol-js": "^6.1.0",
54
54
  "ajv": "^8.20.0",
55
55
  "async-mutex": "^0.5.0",
56
- "bn.js": "^5.2.3",
57
- "buffer": "^6.0.3",
58
56
  "debug": "~4.4.3",
59
57
  "eslint": "^10.4.1",
60
58
  "ethers": "^6.16.0",
@@ -62,7 +60,6 @@
62
60
  "idb": "^8.0.3",
63
61
  "lru-cache": "^11.5.1",
64
62
  "observable-fns": "~0.6.1",
65
- "pako": "~2.1.0",
66
63
  "typescript": "~6.0.3",
67
64
  "vite": "^8.0.16",
68
65
  "vitest": "~4.1.8",
@@ -80,21 +77,21 @@
80
77
  "@xylabs/geo": "^6.0",
81
78
  "@xylabs/sdk-js": "^6.0",
82
79
  "@xylabs/threads": "^6.0",
83
- "@xyo-network/sdk-protocol-js": "~6.0",
80
+ "@xyo-network/sdk-protocol-js": "^6.1",
84
81
  "ajv": "^8.20",
85
82
  "async-mutex": "^0.5",
86
- "bn.js": "^5.2",
87
- "buffer": "^6.0",
88
83
  "debug": "~4.4",
89
84
  "ethers": "^6.16",
90
85
  "hash-wasm": "~4.12",
91
86
  "idb": "^8.0",
92
87
  "lru-cache": "^11.3",
93
88
  "observable-fns": "~0.6",
94
- "pako": "~2.1",
95
89
  "webextension-polyfill": "^0.12",
96
90
  "zod": "^4.4"
97
91
  },
92
+ "engines": {
93
+ "node": "^24"
94
+ },
98
95
  "publishConfig": {
99
96
  "access": "public"
100
97
  }
@@ -1,21 +0,0 @@
1
- import type { BaseParams, Hash } from '@xylabs/sdk-js';
2
- import { Base } from '@xylabs/sdk-js';
3
- import type { ArchivistInstance } from '@xyo-network/archivist-model';
4
- import type { Payload } from '@xyo-network/sdk-protocol-js';
5
- export interface PayloadWorkingSet {
6
- archivists?: ArchivistInstance[];
7
- huriEndpoints?: string[];
8
- payloads?: Payload[];
9
- }
10
- export interface BoundWitnessLoaderParams extends BaseParams {
11
- cache?: ArchivistInstance;
12
- workingSet: PayloadWorkingSet;
13
- }
14
- export declare class BoundWitnessLoader extends Base<BoundWitnessLoaderParams> {
15
- private _cache?;
16
- private _createCacheMutex;
17
- load(hash: Hash | Hash[]): Promise<Payload[]>;
18
- private getCache;
19
- private getPayload;
20
- }
21
- //# sourceMappingURL=Loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../src/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAU,MAAM,gBAAgB,CAAA;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAM3D,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,UAAU;IAC1D,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,UAAU,EAAE,iBAAiB,CAAA;CAC9B;AAED,qBAAa,kBAAmB,SAAQ,IAAI,CAAC,wBAAwB,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,iBAAiB,CAAc;IAEjC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAYrC,QAAQ;YAQR,UAAU;CAuBzB"}
@@ -1,2 +0,0 @@
1
- export * from './Loader.ts';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -1,56 +0,0 @@
1
- // src/Loader.ts
2
- import { Base, exists } from "@xylabs/sdk-js";
3
- import { MemoryArchivist } from "@xyo-network/archivist-memory";
4
- import {
5
- asBoundWitness,
6
- Huri,
7
- isAnyPayload
8
- } from "@xyo-network/sdk-protocol-js";
9
- import { Mutex } from "async-mutex";
10
- var BoundWitnessLoader = class extends Base {
11
- _cache;
12
- _createCacheMutex = new Mutex();
13
- async load(hash) {
14
- if (Array.isArray(hash)) {
15
- return (await Promise.all(hash.map((h) => this.load(h)))).flat();
16
- }
17
- const bw = asBoundWitness(await this.getPayload(hash));
18
- if (bw) {
19
- const payloads = (await Promise.all(bw.payload_hashes.map((hash2) => this.getPayload(hash2)))).filter(exists);
20
- return [bw, ...payloads];
21
- }
22
- return [];
23
- }
24
- async getCache() {
25
- return await this._createCacheMutex.runExclusive(async () => {
26
- this._cache = this._cache ?? this.params.cache ?? await MemoryArchivist.create({ account: "random" });
27
- if (this.params.workingSet.payloads) await this._cache.insert(this.params.workingSet.payloads);
28
- return this._cache;
29
- });
30
- }
31
- async getPayload(hash) {
32
- const cache = await this.getCache();
33
- const payloadFromCache = (await cache.get([hash])).at(0);
34
- if (isAnyPayload(payloadFromCache)) {
35
- return payloadFromCache;
36
- }
37
- for (const archivist of this.params.workingSet.archivists ?? []) {
38
- const payloadFromArchivist = await archivist.get([hash]);
39
- if (isAnyPayload(payloadFromArchivist)) {
40
- await cache.insert([payloadFromArchivist]);
41
- return payloadFromArchivist;
42
- }
43
- }
44
- for (const huriEndpoint of this.params.workingSet.huriEndpoints ?? []) {
45
- const payloadFromHuri = await new Huri(hash, { archivistUri: huriEndpoint }).fetch();
46
- if (isAnyPayload(payloadFromHuri)) {
47
- await cache.insert([payloadFromHuri]);
48
- return payloadFromHuri;
49
- }
50
- }
51
- }
52
- };
53
- export {
54
- BoundWitnessLoader
55
- };
56
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/Loader.ts"],
4
- "sourcesContent": ["import type { BaseParams, Hash } from '@xylabs/sdk-js'\nimport { Base, exists } from '@xylabs/sdk-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/sdk-protocol-js'\nimport {\n asBoundWitness, Huri, isAnyPayload,\n} from '@xyo-network/sdk-protocol-js'\nimport { Mutex } from 'async-mutex'\n\nexport interface PayloadWorkingSet {\n archivists?: ArchivistInstance[]\n huriEndpoints?: string[]\n payloads?: Payload[]\n}\n\nexport interface BoundWitnessLoaderParams extends BaseParams {\n cache?: ArchivistInstance\n workingSet: PayloadWorkingSet\n}\n\nexport class BoundWitnessLoader extends Base<BoundWitnessLoaderParams> {\n private _cache?: ArchivistInstance\n private _createCacheMutex = new Mutex()\n\n async load(hash: Hash | Hash[]): Promise<Payload[]> {\n if (Array.isArray(hash)) {\n return (await Promise.all(hash.map(h => this.load(h)))).flat()\n }\n const bw = asBoundWitness(await this.getPayload(hash))\n if (bw) {\n const payloads = (await Promise.all(bw.payload_hashes.map(hash => this.getPayload(hash)))).filter(exists)\n return [bw, ...payloads]\n }\n return []\n }\n\n private async getCache() {\n return await this._createCacheMutex.runExclusive(async () => {\n this._cache = this._cache ?? this.params.cache ?? (await MemoryArchivist.create({ account: 'random' }))\n if (this.params.workingSet.payloads) await this._cache.insert(this.params.workingSet.payloads)\n return this._cache\n })\n }\n\n private async getPayload(hash: Hash): Promise<Payload | undefined> {\n const cache = await this.getCache()\n const payloadFromCache = (await cache.get([hash])).at(0)\n if (isAnyPayload(payloadFromCache)) {\n return payloadFromCache\n }\n\n for (const archivist of this.params.workingSet.archivists ?? []) {\n const payloadFromArchivist = await archivist.get([hash])\n if (isAnyPayload(payloadFromArchivist)) {\n await cache.insert([payloadFromArchivist])\n return payloadFromArchivist\n }\n }\n\n for (const huriEndpoint of this.params.workingSet.huriEndpoints ?? []) {\n const payloadFromHuri = await new Huri(hash, { archivistUri: huriEndpoint }).fetch()\n if (isAnyPayload(payloadFromHuri)) {\n await cache.insert([payloadFromHuri])\n return payloadFromHuri\n }\n }\n }\n}\n"],
5
- "mappings": ";AACA,SAAS,MAAM,cAAc;AAC7B,SAAS,uBAAuB;AAGhC;AAAA,EACE;AAAA,EAAgB;AAAA,EAAM;AAAA,OACjB;AACP,SAAS,aAAa;AAaf,IAAM,qBAAN,cAAiC,KAA+B;AAAA,EAC7D;AAAA,EACA,oBAAoB,IAAI,MAAM;AAAA,EAEtC,MAAM,KAAK,MAAyC;AAClD,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,cAAQ,MAAM,QAAQ,IAAI,KAAK,IAAI,OAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,IAC/D;AACA,UAAM,KAAK,eAAe,MAAM,KAAK,WAAW,IAAI,CAAC;AACrD,QAAI,IAAI;AACN,YAAM,YAAY,MAAM,QAAQ,IAAI,GAAG,eAAe,IAAI,CAAAA,UAAQ,KAAK,WAAWA,KAAI,CAAC,CAAC,GAAG,OAAO,MAAM;AACxG,aAAO,CAAC,IAAI,GAAG,QAAQ;AAAA,IACzB;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAc,WAAW;AACvB,WAAO,MAAM,KAAK,kBAAkB,aAAa,YAAY;AAC3D,WAAK,SAAS,KAAK,UAAU,KAAK,OAAO,SAAU,MAAM,gBAAgB,OAAO,EAAE,SAAS,SAAS,CAAC;AACrG,UAAI,KAAK,OAAO,WAAW,SAAU,OAAM,KAAK,OAAO,OAAO,KAAK,OAAO,WAAW,QAAQ;AAC7F,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,WAAW,MAA0C;AACjE,UAAM,QAAQ,MAAM,KAAK,SAAS;AAClC,UAAM,oBAAoB,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACvD,QAAI,aAAa,gBAAgB,GAAG;AAClC,aAAO;AAAA,IACT;AAEA,eAAW,aAAa,KAAK,OAAO,WAAW,cAAc,CAAC,GAAG;AAC/D,YAAM,uBAAuB,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC;AACvD,UAAI,aAAa,oBAAoB,GAAG;AACtC,cAAM,MAAM,OAAO,CAAC,oBAAoB,CAAC;AACzC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,eAAW,gBAAgB,KAAK,OAAO,WAAW,iBAAiB,CAAC,GAAG;AACrE,YAAM,kBAAkB,MAAM,IAAI,KAAK,MAAM,EAAE,cAAc,aAAa,CAAC,EAAE,MAAM;AACnF,UAAI,aAAa,eAAe,GAAG;AACjC,cAAM,MAAM,OAAO,CAAC,eAAe,CAAC;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": ["hash"]
7
- }
@@ -1,21 +0,0 @@
1
- import type { BaseParams, Hash } from '@xylabs/sdk-js';
2
- import { Base } from '@xylabs/sdk-js';
3
- import type { ArchivistInstance } from '@xyo-network/archivist-model';
4
- import type { Payload } from '@xyo-network/sdk-protocol-js';
5
- export interface PayloadWorkingSet {
6
- archivists?: ArchivistInstance[];
7
- huriEndpoints?: string[];
8
- payloads?: Payload[];
9
- }
10
- export interface BoundWitnessLoaderParams extends BaseParams {
11
- cache?: ArchivistInstance;
12
- workingSet: PayloadWorkingSet;
13
- }
14
- export declare class BoundWitnessLoader extends Base<BoundWitnessLoaderParams> {
15
- private _cache?;
16
- private _createCacheMutex;
17
- load(hash: Hash | Hash[]): Promise<Payload[]>;
18
- private getCache;
19
- private getPayload;
20
- }
21
- //# sourceMappingURL=Loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Loader.d.ts","sourceRoot":"","sources":["../../src/Loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,IAAI,EAAU,MAAM,gBAAgB,CAAA;AAE7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAM3D,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,UAAU;IAC1D,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,UAAU,EAAE,iBAAiB,CAAA;CAC9B;AAED,qBAAa,kBAAmB,SAAQ,IAAI,CAAC,wBAAwB,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,CAAmB;IAClC,OAAO,CAAC,iBAAiB,CAAc;IAEjC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAYrC,QAAQ;YAQR,UAAU;CAuBzB"}
@@ -1,2 +0,0 @@
1
- export * from './Loader.ts';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA"}
@@ -1,56 +0,0 @@
1
- // src/Loader.ts
2
- import { Base, exists } from "@xylabs/sdk-js";
3
- import { MemoryArchivist } from "@xyo-network/archivist-memory";
4
- import {
5
- asBoundWitness,
6
- Huri,
7
- isAnyPayload
8
- } from "@xyo-network/sdk-protocol-js";
9
- import { Mutex } from "async-mutex";
10
- var BoundWitnessLoader = class extends Base {
11
- _cache;
12
- _createCacheMutex = new Mutex();
13
- async load(hash) {
14
- if (Array.isArray(hash)) {
15
- return (await Promise.all(hash.map((h) => this.load(h)))).flat();
16
- }
17
- const bw = asBoundWitness(await this.getPayload(hash));
18
- if (bw) {
19
- const payloads = (await Promise.all(bw.payload_hashes.map((hash2) => this.getPayload(hash2)))).filter(exists);
20
- return [bw, ...payloads];
21
- }
22
- return [];
23
- }
24
- async getCache() {
25
- return await this._createCacheMutex.runExclusive(async () => {
26
- this._cache = this._cache ?? this.params.cache ?? await MemoryArchivist.create({ account: "random" });
27
- if (this.params.workingSet.payloads) await this._cache.insert(this.params.workingSet.payloads);
28
- return this._cache;
29
- });
30
- }
31
- async getPayload(hash) {
32
- const cache = await this.getCache();
33
- const payloadFromCache = (await cache.get([hash])).at(0);
34
- if (isAnyPayload(payloadFromCache)) {
35
- return payloadFromCache;
36
- }
37
- for (const archivist of this.params.workingSet.archivists ?? []) {
38
- const payloadFromArchivist = await archivist.get([hash]);
39
- if (isAnyPayload(payloadFromArchivist)) {
40
- await cache.insert([payloadFromArchivist]);
41
- return payloadFromArchivist;
42
- }
43
- }
44
- for (const huriEndpoint of this.params.workingSet.huriEndpoints ?? []) {
45
- const payloadFromHuri = await new Huri(hash, { archivistUri: huriEndpoint }).fetch();
46
- if (isAnyPayload(payloadFromHuri)) {
47
- await cache.insert([payloadFromHuri]);
48
- return payloadFromHuri;
49
- }
50
- }
51
- }
52
- };
53
- export {
54
- BoundWitnessLoader
55
- };
56
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/Loader.ts"],
4
- "sourcesContent": ["import type { BaseParams, Hash } from '@xylabs/sdk-js'\nimport { Base, exists } from '@xylabs/sdk-js'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Payload } from '@xyo-network/sdk-protocol-js'\nimport {\n asBoundWitness, Huri, isAnyPayload,\n} from '@xyo-network/sdk-protocol-js'\nimport { Mutex } from 'async-mutex'\n\nexport interface PayloadWorkingSet {\n archivists?: ArchivistInstance[]\n huriEndpoints?: string[]\n payloads?: Payload[]\n}\n\nexport interface BoundWitnessLoaderParams extends BaseParams {\n cache?: ArchivistInstance\n workingSet: PayloadWorkingSet\n}\n\nexport class BoundWitnessLoader extends Base<BoundWitnessLoaderParams> {\n private _cache?: ArchivistInstance\n private _createCacheMutex = new Mutex()\n\n async load(hash: Hash | Hash[]): Promise<Payload[]> {\n if (Array.isArray(hash)) {\n return (await Promise.all(hash.map(h => this.load(h)))).flat()\n }\n const bw = asBoundWitness(await this.getPayload(hash))\n if (bw) {\n const payloads = (await Promise.all(bw.payload_hashes.map(hash => this.getPayload(hash)))).filter(exists)\n return [bw, ...payloads]\n }\n return []\n }\n\n private async getCache() {\n return await this._createCacheMutex.runExclusive(async () => {\n this._cache = this._cache ?? this.params.cache ?? (await MemoryArchivist.create({ account: 'random' }))\n if (this.params.workingSet.payloads) await this._cache.insert(this.params.workingSet.payloads)\n return this._cache\n })\n }\n\n private async getPayload(hash: Hash): Promise<Payload | undefined> {\n const cache = await this.getCache()\n const payloadFromCache = (await cache.get([hash])).at(0)\n if (isAnyPayload(payloadFromCache)) {\n return payloadFromCache\n }\n\n for (const archivist of this.params.workingSet.archivists ?? []) {\n const payloadFromArchivist = await archivist.get([hash])\n if (isAnyPayload(payloadFromArchivist)) {\n await cache.insert([payloadFromArchivist])\n return payloadFromArchivist\n }\n }\n\n for (const huriEndpoint of this.params.workingSet.huriEndpoints ?? []) {\n const payloadFromHuri = await new Huri(hash, { archivistUri: huriEndpoint }).fetch()\n if (isAnyPayload(payloadFromHuri)) {\n await cache.insert([payloadFromHuri])\n return payloadFromHuri\n }\n }\n }\n}\n"],
5
- "mappings": ";AACA,SAAS,MAAM,cAAc;AAC7B,SAAS,uBAAuB;AAGhC;AAAA,EACE;AAAA,EAAgB;AAAA,EAAM;AAAA,OACjB;AACP,SAAS,aAAa;AAaf,IAAM,qBAAN,cAAiC,KAA+B;AAAA,EAC7D;AAAA,EACA,oBAAoB,IAAI,MAAM;AAAA,EAEtC,MAAM,KAAK,MAAyC;AAClD,QAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,cAAQ,MAAM,QAAQ,IAAI,KAAK,IAAI,OAAK,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;AAAA,IAC/D;AACA,UAAM,KAAK,eAAe,MAAM,KAAK,WAAW,IAAI,CAAC;AACrD,QAAI,IAAI;AACN,YAAM,YAAY,MAAM,QAAQ,IAAI,GAAG,eAAe,IAAI,CAAAA,UAAQ,KAAK,WAAWA,KAAI,CAAC,CAAC,GAAG,OAAO,MAAM;AACxG,aAAO,CAAC,IAAI,GAAG,QAAQ;AAAA,IACzB;AACA,WAAO,CAAC;AAAA,EACV;AAAA,EAEA,MAAc,WAAW;AACvB,WAAO,MAAM,KAAK,kBAAkB,aAAa,YAAY;AAC3D,WAAK,SAAS,KAAK,UAAU,KAAK,OAAO,SAAU,MAAM,gBAAgB,OAAO,EAAE,SAAS,SAAS,CAAC;AACrG,UAAI,KAAK,OAAO,WAAW,SAAU,OAAM,KAAK,OAAO,OAAO,KAAK,OAAO,WAAW,QAAQ;AAC7F,aAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,WAAW,MAA0C;AACjE,UAAM,QAAQ,MAAM,KAAK,SAAS;AAClC,UAAM,oBAAoB,MAAM,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACvD,QAAI,aAAa,gBAAgB,GAAG;AAClC,aAAO;AAAA,IACT;AAEA,eAAW,aAAa,KAAK,OAAO,WAAW,cAAc,CAAC,GAAG;AAC/D,YAAM,uBAAuB,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC;AACvD,UAAI,aAAa,oBAAoB,GAAG;AACtC,cAAM,MAAM,OAAO,CAAC,oBAAoB,CAAC;AACzC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,eAAW,gBAAgB,KAAK,OAAO,WAAW,iBAAiB,CAAC,GAAG;AACrE,YAAM,kBAAkB,MAAM,IAAI,KAAK,MAAM,EAAE,cAAc,aAAa,CAAC,EAAE,MAAM;AACnF,UAAI,aAAa,eAAe,GAAG;AACjC,cAAM,MAAM,OAAO,CAAC,eAAe,CAAC;AACpC,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;",
6
- "names": ["hash"]
7
- }