@spicenet-io/spiceflow-core 0.1.2 → 0.2.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.
Files changed (43) hide show
  1. package/dist/abis/delegate.d.ts +419 -0
  2. package/dist/abis/delegate.d.ts.map +1 -0
  3. package/dist/abis/erc20.d.ts +130 -0
  4. package/dist/abis/erc20.d.ts.map +1 -0
  5. package/dist/abis/index.d.ts +4 -0
  6. package/dist/abis/index.d.ts.map +1 -0
  7. package/dist/abis/wcbtc.d.ts +58 -0
  8. package/dist/abis/wcbtc.d.ts.map +1 -0
  9. package/dist/authorization.d.ts +23 -37
  10. package/dist/authorization.d.ts.map +1 -1
  11. package/dist/chains/index.d.ts +10 -0
  12. package/dist/chains/index.d.ts.map +1 -0
  13. package/dist/chains/list.d.ts +3 -0
  14. package/dist/chains/list.d.ts.map +1 -0
  15. package/dist/chains/types.d.ts +19 -0
  16. package/dist/chains/types.d.ts.map +1 -0
  17. package/dist/config.d.ts +0 -6
  18. package/dist/config.d.ts.map +1 -1
  19. package/dist/core.d.ts +3 -15
  20. package/dist/core.d.ts.map +1 -1
  21. package/dist/index.cjs +851 -41
  22. package/dist/index.d.ts +5 -6
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +817 -38
  25. package/dist/logos.d.ts +10 -0
  26. package/dist/logos.d.ts.map +1 -0
  27. package/dist/relayer.d.ts +0 -9
  28. package/dist/relayer.d.ts.map +1 -1
  29. package/dist/rfqt.d.ts +0 -10
  30. package/dist/rfqt.d.ts.map +1 -1
  31. package/dist/status.d.ts +0 -7
  32. package/dist/status.d.ts.map +1 -1
  33. package/dist/tokens/index.d.ts +13 -0
  34. package/dist/tokens/index.d.ts.map +1 -0
  35. package/dist/tokens/list.d.ts +3 -0
  36. package/dist/tokens/list.d.ts.map +1 -0
  37. package/dist/tokens/types.d.ts +33 -0
  38. package/dist/tokens/types.d.ts.map +1 -0
  39. package/dist/types.d.ts +12 -14
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/utils.d.ts +11 -0
  42. package/dist/utils.d.ts.map +1 -0
  43. package/package.json +6 -2
@@ -1,58 +1,44 @@
1
1
  import type { Address, Hash, PublicClient } from "viem";
2
- import type { ChainBatch, ChainBatchInput } from "./types.js";
3
- /**
4
- * ABI description of a single call in a chain batch.
5
- */
6
- export declare const CallAbi: {
7
- readonly type: "tuple";
8
- readonly components: readonly [{
9
- readonly name: "to";
10
- readonly type: "address";
11
- }, {
12
- readonly name: "value";
13
- readonly type: "uint";
14
- }, {
15
- readonly name: "data";
16
- readonly type: "bytes";
17
- }];
18
- };
19
- /**
20
- * ABI description of the per-chain signature components used by EIP‑7702
21
- * to derive the chain authorization hash for a batch of calls.
22
- */
23
- export declare const ChainBatchHashComponentsAbi: readonly [{
2
+ import type { Call } from "./types.js";
3
+ export declare const ChainBatchHashAbi: readonly [{
24
4
  readonly name: "chainId";
25
5
  readonly type: "uint256";
26
6
  }, {
7
+ readonly name: "calls";
27
8
  readonly type: "tuple[]";
28
9
  readonly components: readonly [{
29
10
  readonly name: "to";
30
11
  readonly type: "address";
31
12
  }, {
32
13
  readonly name: "value";
33
- readonly type: "uint";
14
+ readonly type: "uint256";
34
15
  }, {
35
16
  readonly name: "data";
36
17
  readonly type: "bytes";
37
18
  }];
38
- readonly name: "calls";
39
19
  }];
40
- /**
41
- * Hash each chain's call batch into an EIP‑7702 chain authorization tuple.
42
- */
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
+ }
43
38
  export declare function hashChainBatches(chainCalls: ChainBatchInput[]): ChainBatch[];
44
- /**
45
- * Compute the intent hash from an array of per-chain authorization hashes.
46
- */
47
- export declare function getIntentHash(nbf: bigint, exp: bigint, chainBatches: {
39
+ export declare function getIntentHash(signatureType: string, nbf: bigint, exp: bigint, chainBatches: {
48
40
  hash: Hash;
49
41
  }[]): Hash;
50
- /**
51
- * Load the account nonce to be used when signing a chain delegation.
52
- */
53
42
  export declare function getAccountNonce(address: Address, publicClient: PublicClient): Promise<number>;
54
- /**
55
- * Fetch a recent block number used as freshness bound for chain batches.
56
- */
57
43
  export declare function getRecentBlock(publicClient: PublicClient): Promise<bigint>;
58
44
  //# sourceMappingURL=authorization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../src/authorization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAExD,OAAO,KAAK,EAAQ,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;CAOV,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;EAG9B,CAAC;AAEX;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAU5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,EAAE,GAAG,IAAI,CAG5F;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhF"}
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"}
@@ -0,0 +1,10 @@
1
+ export type { Network, ChainMeta } from "./types.js";
2
+ export { CHAINS } from "./list.js";
3
+ import type { Network, ChainMeta } from "./types.js";
4
+ export declare function getChainMeta(chainId: number): ChainMeta | undefined;
5
+ export declare function getChainsByNetwork(network: Network): ChainMeta[];
6
+ export declare function getChainIdsByNetwork(network: Network): number[];
7
+ export declare function getMainnetChains(): ChainMeta[];
8
+ export declare function getTestnetChains(): ChainMeta[];
9
+ export declare function getDelegateContract(chainId: number): `0x${string}` | undefined;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/chains/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEnE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,CAEhE;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,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,GAAG,SAAS,CAE9E"}
@@ -0,0 +1,3 @@
1
+ import type { ChainMeta } from "./types.js";
2
+ export declare const CHAINS: Record<number, ChainMeta>;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
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,CAwL5C,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type Network = "mainnet" | "testnet";
2
+ export interface ChainMeta {
3
+ id: number;
4
+ name: string;
5
+ displayName: string;
6
+ network: Network;
7
+ nativeCurrency: {
8
+ name: string;
9
+ symbol: string;
10
+ decimals: number;
11
+ };
12
+ delegateContract: `0x${string}`;
13
+ blockExplorer: string;
14
+ rpcUrl: string;
15
+ logo: string;
16
+ wrappedNativeTokenAddress?: `0x${string}`;
17
+ moralisId?: string;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/chains/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5C,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,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,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 CHANGED
@@ -1,10 +1,4 @@
1
1
  import type { PublicClient } from "viem";
2
- /**
3
- * Configuration for the generic SpiceFlow core.
4
- *
5
- * Consumers provide factories/resolvers for chain-specific details
6
- * (delegate contract, viem PublicClient, and API base URL).
7
- */
8
2
  export interface SpiceFlowConfig {
9
3
  txApiUrl: string;
10
4
  delegateAddressForChain: (chainId: number) => `0x${string}`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEzC,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 CHANGED
@@ -3,14 +3,12 @@ import { hashChainBatches } from "./authorization.js";
3
3
  import type { SpiceFlowConfig } from "./config.js";
4
4
  import type { Authorization, Call } from "./types.js";
5
5
  export interface Signers {
6
- /** Sign an EIP‑7702 chain delegation for a given delegate contract & chain. */
7
6
  authorizationSigner: (args: {
8
7
  contractAddress: `0x${string}`;
9
8
  chainId: number;
10
9
  nonce: number;
11
10
  address: `0x${string}`;
12
11
  }) => Promise<Authorization>;
13
- /** Sign the final cross‑chain intent hash. */
14
12
  messageSigner: (digest: `0x${string}`) => Promise<`0x${string}`>;
15
13
  }
16
14
  export declare class SpiceFlowCore {
@@ -19,10 +17,6 @@ export declare class SpiceFlowCore {
19
17
  constructor(cfg: SpiceFlowConfig, signers: Signers);
20
18
  getConfig(): SpiceFlowConfig;
21
19
  getClient(chainId: number): PublicClient;
22
- /**
23
- * Create EIP‑7702 authorizations for one or more chains.
24
- * Will load nonces unless explicitly provided.
25
- */
26
20
  signDelegations(params: {
27
21
  user: `0x${string}`;
28
22
  delegations: {
@@ -31,22 +25,15 @@ export declare class SpiceFlowCore {
31
25
  nonce?: number;
32
26
  }[];
33
27
  }): Promise<Authorization[]>;
34
- /**
35
- * Build chain authorization batches and return the final intent digest.
36
- */
37
28
  buildChainBatches(nbf: bigint, exp: bigint, callsByChain: {
38
29
  chainId: number;
39
30
  calls: Call[];
40
31
  recentBlock?: bigint;
41
- }[]): Promise<{
42
- chainBatches: import("./types.js").ChainBatch[];
32
+ }[], signatureType?: string): Promise<{
33
+ chainBatches: import("./authorization.js").ChainBatch[];
43
34
  digest: `0x${string}`;
44
35
  }>;
45
- /** Sign the final intent hash (EIP‑7702). */
46
36
  signIntent(digest: `0x${string}`): Promise<`0x${string}`>;
47
- /**
48
- * Submit a signed intent to the SpiceFlow relayer.
49
- */
50
37
  submitIntent(req: {
51
38
  user: `0x${string}`;
52
39
  authorization: Authorization[];
@@ -55,6 +42,7 @@ export declare class SpiceFlowCore {
55
42
  tokenAmount: bigint;
56
43
  nbf: bigint;
57
44
  exp: bigint;
45
+ signatureType?: string;
58
46
  signature?: `0x${string}`;
59
47
  }): Promise<import("./relayer.js").RelayerSubmitResponse>;
60
48
  }
@@ -1 +1 @@
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,+EAA+E;IAC/E,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,8CAA8C;IAC9C,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;IAExC;;;OAGG;IACG,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;IAapK;;OAEG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE;;;;IAW1H,6CAA6C;IACvC,UAAU,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;IAE/D;;OAEG;IACG,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,SAAS,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KAC3B;CAWF"}
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"}