@spicenet-io/spiceflow-core 0.3.15 → 0.3.17

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 (49) hide show
  1. package/package.json +1 -1
  2. package/dist/abis/delegate.d.ts +0 -419
  3. package/dist/abis/delegate.d.ts.map +0 -1
  4. package/dist/abis/erc20.d.ts +0 -130
  5. package/dist/abis/erc20.d.ts.map +0 -1
  6. package/dist/abis/index.d.ts +0 -5
  7. package/dist/abis/index.d.ts.map +0 -1
  8. package/dist/abis/uniV3.d.ts +0 -93
  9. package/dist/abis/uniV3.d.ts.map +0 -1
  10. package/dist/abis/wcbtc.d.ts +0 -58
  11. package/dist/abis/wcbtc.d.ts.map +0 -1
  12. package/dist/authorization.d.ts +0 -44
  13. package/dist/authorization.d.ts.map +0 -1
  14. package/dist/chains/index.d.ts +0 -25
  15. package/dist/chains/index.d.ts.map +0 -1
  16. package/dist/chains/list.d.ts +0 -3
  17. package/dist/chains/list.d.ts.map +0 -1
  18. package/dist/chains/types.d.ts +0 -30
  19. package/dist/chains/types.d.ts.map +0 -1
  20. package/dist/config.d.ts +0 -9
  21. package/dist/config.d.ts.map +0 -1
  22. package/dist/core.d.ts +0 -49
  23. package/dist/core.d.ts.map +0 -1
  24. package/dist/http.d.ts +0 -17
  25. package/dist/http.d.ts.map +0 -1
  26. package/dist/index.cjs +0 -1518
  27. package/dist/index.d.ts +0 -14
  28. package/dist/index.d.ts.map +0 -1
  29. package/dist/index.js +0 -1437
  30. package/dist/logos.d.ts +0 -12
  31. package/dist/logos.d.ts.map +0 -1
  32. package/dist/relayer.d.ts +0 -22
  33. package/dist/relayer.d.ts.map +0 -1
  34. package/dist/rfqt.d.ts +0 -17
  35. package/dist/rfqt.d.ts.map +0 -1
  36. package/dist/status.d.ts +0 -10
  37. package/dist/status.d.ts.map +0 -1
  38. package/dist/swap.d.ts +0 -31
  39. package/dist/swap.d.ts.map +0 -1
  40. package/dist/tokens/index.d.ts +0 -17
  41. package/dist/tokens/index.d.ts.map +0 -1
  42. package/dist/tokens/list.d.ts +0 -3
  43. package/dist/tokens/list.d.ts.map +0 -1
  44. package/dist/tokens/types.d.ts +0 -33
  45. package/dist/tokens/types.d.ts.map +0 -1
  46. package/dist/types.d.ts +0 -66
  47. package/dist/types.d.ts.map +0 -1
  48. package/dist/utils.d.ts +0 -11
  49. package/dist/utils.d.ts.map +0 -1
@@ -1,58 +0,0 @@
1
- export declare const WCBTC_ABI: readonly [{
2
- readonly inputs: readonly [];
3
- readonly name: "name";
4
- readonly outputs: readonly [{
5
- readonly type: "string";
6
- }];
7
- readonly stateMutability: "view";
8
- readonly type: "function";
9
- }, {
10
- readonly inputs: readonly [];
11
- readonly name: "symbol";
12
- readonly outputs: readonly [{
13
- readonly type: "string";
14
- }];
15
- readonly stateMutability: "view";
16
- readonly type: "function";
17
- }, {
18
- readonly inputs: readonly [];
19
- readonly name: "decimals";
20
- readonly outputs: readonly [{
21
- readonly type: "uint8";
22
- }];
23
- readonly stateMutability: "view";
24
- readonly type: "function";
25
- }, {
26
- readonly inputs: readonly [{
27
- readonly name: "account";
28
- readonly type: "address";
29
- }];
30
- readonly name: "balanceOf";
31
- readonly outputs: readonly [{
32
- readonly type: "uint256";
33
- }];
34
- readonly stateMutability: "view";
35
- readonly type: "function";
36
- }, {
37
- readonly inputs: readonly [];
38
- readonly name: "deposit";
39
- readonly outputs: readonly [];
40
- readonly stateMutability: "payable";
41
- readonly type: "function";
42
- }, {
43
- readonly inputs: readonly [{
44
- readonly name: "amount";
45
- readonly type: "uint256";
46
- }];
47
- readonly name: "withdraw";
48
- readonly outputs: readonly [];
49
- readonly stateMutability: "nonpayable";
50
- readonly type: "function";
51
- }, {
52
- readonly stateMutability: "payable";
53
- readonly type: "receive";
54
- }, {
55
- readonly stateMutability: "payable";
56
- readonly type: "fallback";
57
- }];
58
- //# sourceMappingURL=wcbtc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wcbtc.d.ts","sourceRoot":"","sources":["../../src/abis/wcbtc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASZ,CAAC"}
@@ -1,44 +0,0 @@
1
- import type { Address, Hash, PublicClient } from "viem";
2
- import type { Call } from "./types.js";
3
- export declare const ChainBatchHashAbi: readonly [{
4
- readonly name: "chainId";
5
- readonly type: "uint256";
6
- }, {
7
- readonly name: "calls";
8
- readonly type: "tuple[]";
9
- readonly components: readonly [{
10
- readonly name: "to";
11
- readonly type: "address";
12
- }, {
13
- readonly name: "value";
14
- readonly type: "uint256";
15
- }, {
16
- readonly name: "data";
17
- readonly type: "bytes";
18
- }];
19
- }];
20
- export declare const IntentHashAbi: readonly [{
21
- readonly type: "string";
22
- }, {
23
- readonly type: "uint256";
24
- }, {
25
- readonly type: "uint256";
26
- }, {
27
- readonly type: "bytes32[]";
28
- }];
29
- export interface ChainBatchInput {
30
- chainId: bigint | number;
31
- calls: Call[];
32
- }
33
- export interface ChainBatch {
34
- hash: Hash;
35
- chainId: bigint;
36
- calls: Call[];
37
- }
38
- export declare function hashChainBatches(chainCalls: ChainBatchInput[]): ChainBatch[];
39
- export declare function getIntentHash(signatureType: string, nbf: bigint, exp: bigint, chainBatches: {
40
- hash: Hash;
41
- }[]): Hash;
42
- export declare function getAccountNonce(address: Address, publicClient: PublicClient): Promise<number>;
43
- export declare function getRecentBlock(publicClient: PublicClient): Promise<bigint>;
44
- //# sourceMappingURL=authorization.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAO,YAAY,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAQvC,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAGpB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;EAKhB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAQ5E;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,GAC7B,IAAI,CAKN;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnG;AAED,wBAAsB,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF"}
@@ -1,25 +0,0 @@
1
- export type { Network, ChainMeta, ChainType } from "./types.js";
2
- export { CHAINS } from "./list.js";
3
- import type { Network, ChainMeta } from "./types.js";
4
- import { type Chain } from "viem";
5
- export declare function getChainMeta(chainId: number): ChainMeta | undefined;
6
- export declare function getChainsByNetwork(network: Network): ChainMeta[];
7
- export declare function getChainIdsByNetwork(network: Network): number[];
8
- export declare function getMainnetChains(): ChainMeta[];
9
- export declare function getTestnetChains(): ChainMeta[];
10
- /** Returns ALL chains for a network including non-EVM (StarkNet). */
11
- export declare function getAllChainsByNetwork(network: Network): ChainMeta[];
12
- export declare function getDelegateContract(chainId: number): `0x${string}` | undefined;
13
- export declare const VIEM_CHAINS: Record<number, Chain>;
14
- export declare function getViemChain(chainId: number): Chain | undefined;
15
- export declare function requireViemChain(chainId: number): Chain;
16
- export declare function isStarknetChain(chainId: number): boolean;
17
- /**
18
- * StarkNet Mainnet chain ID as a JS number.
19
- * NOTE: This value exceeds MAX_SAFE_INTEGER and is JS-rounded,
20
- * but it's consistent with how CHAINS keys are stored.
21
- * Use this constant everywhere instead of the hex literal 0x534e5f4d41494e
22
- * to ensure consistent rounding across the codebase.
23
- */
24
- export declare const STARKNET_MAINNET_CHAIN_ID: number;
25
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chains/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAErD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAE/C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAIhE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAE/D;AAED,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAED,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAEnE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,GAAG,SAAS,CAE9E;AA8BD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAI7C,CAAC;AAEF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAE/D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAKvD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAyB,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ChainMeta } from "./types.js";
2
- export declare const CHAINS: Record<number, ChainMeta>;
3
- //# sourceMappingURL=list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/chains/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAoM5C,CAAC"}
@@ -1,30 +0,0 @@
1
- export type Network = "mainnet" | "testnet";
2
- export type ChainType = "evm" | "starknet";
3
- /**
4
- * NOTE on StarkNet chain IDs: StarkNet uses hex felt values like 0x534e5f4d41494e
5
- * which exceed Number.MAX_SAFE_INTEGER. JS rounds these silently when used as numbers.
6
- * The `id` field uses the JS-rounded value for object key consistency (JS always rounds
7
- * the same way). Use `chainIdHex` for accurate hex representation when interacting
8
- * with StarkNet RPCs or wallets.
9
- */
10
- export interface ChainMeta {
11
- id: number;
12
- name: string;
13
- displayName: string;
14
- network: Network;
15
- nativeCurrency: {
16
- name: string;
17
- symbol: string;
18
- decimals: number;
19
- };
20
- chainType?: ChainType;
21
- /** Hex string chain ID for non-EVM chains where numeric ID exceeds MAX_SAFE_INTEGER */
22
- chainIdHex?: string;
23
- delegateContract?: `0x${string}`;
24
- blockExplorer: string;
25
- rpcUrl: string;
26
- logo: string;
27
- wrappedNativeTokenAddress?: `0x${string}`;
28
- moralisId?: string;
29
- }
30
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chains/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
package/dist/config.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import type { PublicClient } from "viem";
2
- export declare const SPICENET_NATIVE_CHAIN_ID = 4321;
3
- export declare function isSpicenetChainId(chainId: bigint | number | string): boolean;
4
- export interface SpiceFlowConfig {
5
- txApiUrl: string;
6
- delegateAddressForChain: (chainId: number) => `0x${string}`;
7
- publicClientForChain: (chainId: number) => PublicClient;
8
- }
9
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAE5E;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,KAAK,MAAM,EAAE,CAAC;IAC5D,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,YAAY,CAAC;CACzD"}
package/dist/core.d.ts DELETED
@@ -1,49 +0,0 @@
1
- import type { PublicClient } from "viem";
2
- import { hashChainBatches } from "./authorization.js";
3
- import type { SpiceFlowConfig } from "./config.js";
4
- import type { Authorization, Call } from "./types.js";
5
- export interface Signers {
6
- authorizationSigner: (args: {
7
- contractAddress: `0x${string}`;
8
- chainId: number;
9
- nonce: number;
10
- address: `0x${string}`;
11
- }) => Promise<Authorization>;
12
- messageSigner: (digest: `0x${string}`) => Promise<`0x${string}`>;
13
- }
14
- export declare class SpiceFlowCore {
15
- private cfg;
16
- private signers;
17
- constructor(cfg: SpiceFlowConfig, signers: Signers);
18
- getConfig(): SpiceFlowConfig;
19
- getClient(chainId: number): PublicClient;
20
- signDelegations(params: {
21
- user: `0x${string}`;
22
- delegations: {
23
- chainId: number;
24
- contractAddress: `0x${string}`;
25
- nonce?: number;
26
- }[];
27
- }): Promise<Authorization[]>;
28
- buildChainBatches(nbf: bigint, exp: bigint, callsByChain: {
29
- chainId: number;
30
- calls: Call[];
31
- recentBlock?: bigint;
32
- }[], signatureType?: string): Promise<{
33
- chainBatches: import("./authorization.js").ChainBatch[];
34
- digest: `0x${string}`;
35
- }>;
36
- signIntent(digest: `0x${string}`): Promise<`0x${string}`>;
37
- submitIntent(req: {
38
- user: `0x${string}`;
39
- authorization: Authorization[];
40
- chainBatches: ReturnType<typeof hashChainBatches>;
41
- tokenAddress: `0x${string}`;
42
- tokenAmount: bigint;
43
- nbf: bigint;
44
- exp: bigint;
45
- signatureType?: string;
46
- signature?: `0x${string}`;
47
- }): Promise<import("./relayer.js").RelayerSubmitResponse>;
48
- }
49
- //# sourceMappingURL=core.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAmC,gBAAgB,EAAiB,MAAM,oBAAoB,CAAC;AACtG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGtD,MAAM,WAAW,OAAO;IACtB,mBAAmB,EAAE,CAAC,IAAI,EAAE;QAAE,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IAClJ,aAAa,EAAE,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;CAClE;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,GAAG;IAAmB,OAAO,CAAC,OAAO;gBAArC,GAAG,EAAE,eAAe,EAAU,OAAO,EAAE,OAAO;IAElE,SAAS,IAAI,eAAe;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IAElC,eAAe,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAa9J,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACxE,aAAa,GAAE,MAAgB;;;;IAS3B,UAAU,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAEzD,YAAY,CAAC,GAAG,EAAE;QACtB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACpB,aAAa,EAAE,aAAa,EAAE,CAAC;QAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;QAClD,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;QAC5B,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KAC3B;CAYF"}
package/dist/http.d.ts DELETED
@@ -1,17 +0,0 @@
1
- export type RetryOptions = {
2
- retries?: number;
3
- backoffMs?: number;
4
- maxBackoffMs?: number;
5
- jitter?: boolean;
6
- idempotencyKey?: string;
7
- retryOn?: (errOrRes: Error | Response) => boolean;
8
- signal?: AbortSignal;
9
- };
10
- export declare class HttpError extends Error {
11
- status: number;
12
- code?: string;
13
- body?: unknown;
14
- constructor(message: string, status: number, code?: string, body?: unknown);
15
- }
16
- export declare function fetchWithRetry(url: string, init?: RequestInit, opts?: RetryOptions): Promise<Response>;
17
- //# sourceMappingURL=http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,qBAAa,SAAU,SAAQ,KAAK;IAGzB,MAAM,EAAE,MAAM;IACd,IAAI,CAAC,EAAE,MAAM;IACb,IAAI,CAAC,EAAE,OAAO;gBAHrB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO;CAIxB;AAMD,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,WAAgB,EACtB,IAAI,GAAE,YAAiB,GACtB,OAAO,CAAC,QAAQ,CAAC,CA6CnB"}