@wormhole-foundation/sdk-solana-core 4.22.0-beta.0 → 5.0.0-beta.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/package.json +11 -29
- package/dist/cjs/core.d.ts +0 -34
- package/dist/cjs/core.d.ts.map +0 -1
- package/dist/cjs/core.js +0 -252
- package/dist/cjs/core.js.map +0 -1
- package/dist/cjs/index.d.ts +0 -5
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -38
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/postMessageLayout.d.ts +0 -67
- package/dist/cjs/postMessageLayout.d.ts.map +0 -1
- package/dist/cjs/postMessageLayout.js +0 -24
- package/dist/cjs/postMessageLayout.js.map +0 -1
- package/dist/cjs/types.d.ts +0 -613
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -615
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/utils/accounts/claim.d.ts +0 -6
- package/dist/cjs/utils/accounts/claim.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/claim.js +0 -31
- package/dist/cjs/utils/accounts/claim.js.map +0 -1
- package/dist/cjs/utils/accounts/config.d.ts +0 -19
- package/dist/cjs/utils/accounts/config.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/config.js +0 -52
- package/dist/cjs/utils/accounts/config.js.map +0 -1
- package/dist/cjs/utils/accounts/emitter.d.ts +0 -10
- package/dist/cjs/utils/accounts/emitter.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/emitter.js +0 -22
- package/dist/cjs/utils/accounts/emitter.js.map +0 -1
- package/dist/cjs/utils/accounts/feeCollector.d.ts +0 -3
- package/dist/cjs/utils/accounts/feeCollector.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/feeCollector.js +0 -9
- package/dist/cjs/utils/accounts/feeCollector.js.map +0 -1
- package/dist/cjs/utils/accounts/guardianSet.d.ts +0 -14
- package/dist/cjs/utils/accounts/guardianSet.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/guardianSet.js +0 -49
- package/dist/cjs/utils/accounts/guardianSet.js.map +0 -1
- package/dist/cjs/utils/accounts/index.d.ts +0 -10
- package/dist/cjs/utils/accounts/index.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/index.js +0 -26
- package/dist/cjs/utils/accounts/index.js.map +0 -1
- package/dist/cjs/utils/accounts/postedVaa.d.ts +0 -5
- package/dist/cjs/utils/accounts/postedVaa.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/postedVaa.js +0 -9
- package/dist/cjs/utils/accounts/postedVaa.js.map +0 -1
- package/dist/cjs/utils/accounts/sequence.d.ts +0 -15
- package/dist/cjs/utils/accounts/sequence.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/sequence.js +0 -42
- package/dist/cjs/utils/accounts/sequence.js.map +0 -1
- package/dist/cjs/utils/accounts/signatureSet.d.ts +0 -12
- package/dist/cjs/utils/accounts/signatureSet.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/signatureSet.js +0 -31
- package/dist/cjs/utils/accounts/signatureSet.js.map +0 -1
- package/dist/cjs/utils/accounts/upgrade.d.ts +0 -3
- package/dist/cjs/utils/accounts/upgrade.d.ts.map +0 -1
- package/dist/cjs/utils/accounts/upgrade.js +0 -9
- package/dist/cjs/utils/accounts/upgrade.js.map +0 -1
- package/dist/cjs/utils/coder/accounts.d.ts +0 -27
- package/dist/cjs/utils/coder/accounts.d.ts.map +0 -1
- package/dist/cjs/utils/coder/accounts.js +0 -64
- package/dist/cjs/utils/coder/accounts.js.map +0 -1
- package/dist/cjs/utils/coder/events.d.ts +0 -7
- package/dist/cjs/utils/coder/events.d.ts.map +0 -1
- package/dist/cjs/utils/coder/events.js +0 -11
- package/dist/cjs/utils/coder/events.js.map +0 -1
- package/dist/cjs/utils/coder/idl.d.ts +0 -9
- package/dist/cjs/utils/coder/idl.d.ts.map +0 -1
- package/dist/cjs/utils/coder/idl.js +0 -120
- package/dist/cjs/utils/coder/idl.js.map +0 -1
- package/dist/cjs/utils/coder/index.d.ts +0 -16
- package/dist/cjs/utils/coder/index.d.ts.map +0 -1
- package/dist/cjs/utils/coder/index.js +0 -39
- package/dist/cjs/utils/coder/index.js.map +0 -1
- package/dist/cjs/utils/coder/instruction.d.ts +0 -27
- package/dist/cjs/utils/coder/instruction.d.ts.map +0 -1
- package/dist/cjs/utils/coder/instruction.js +0 -110
- package/dist/cjs/utils/coder/instruction.js.map +0 -1
- package/dist/cjs/utils/coder/state.d.ts +0 -9
- package/dist/cjs/utils/coder/state.d.ts.map +0 -1
- package/dist/cjs/utils/coder/state.js +0 -14
- package/dist/cjs/utils/coder/state.js.map +0 -1
- package/dist/cjs/utils/coder/types.d.ts +0 -9
- package/dist/cjs/utils/coder/types.d.ts.map +0 -1
- package/dist/cjs/utils/coder/types.js +0 -14
- package/dist/cjs/utils/coder/types.js.map +0 -1
- package/dist/cjs/utils/cpi.d.ts +0 -52
- package/dist/cjs/utils/cpi.d.ts.map +0 -1
- package/dist/cjs/utils/cpi.js +0 -48
- package/dist/cjs/utils/cpi.js.map +0 -1
- package/dist/cjs/utils/index.d.ts +0 -5
- package/dist/cjs/utils/index.d.ts.map +0 -1
- package/dist/cjs/utils/index.js +0 -21
- package/dist/cjs/utils/index.js.map +0 -1
- package/dist/cjs/utils/instructions/feeTransfer.d.ts +0 -3
- package/dist/cjs/utils/instructions/feeTransfer.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/feeTransfer.js +0 -14
- package/dist/cjs/utils/instructions/feeTransfer.js.map +0 -1
- package/dist/cjs/utils/instructions/governance.d.ts +0 -53
- package/dist/cjs/utils/instructions/governance.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/governance.js +0 -111
- package/dist/cjs/utils/instructions/governance.js.map +0 -1
- package/dist/cjs/utils/instructions/index.d.ts +0 -7
- package/dist/cjs/utils/instructions/index.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/index.js +0 -23
- package/dist/cjs/utils/instructions/index.js.map +0 -1
- package/dist/cjs/utils/instructions/initialize.d.ts +0 -16
- package/dist/cjs/utils/instructions/initialize.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/initialize.js +0 -37
- package/dist/cjs/utils/instructions/initialize.js.map +0 -1
- package/dist/cjs/utils/instructions/postMessage.d.ts +0 -17
- package/dist/cjs/utils/instructions/postMessage.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/postMessage.js +0 -41
- package/dist/cjs/utils/instructions/postMessage.js.map +0 -1
- package/dist/cjs/utils/instructions/postVaa.d.ts +0 -29
- package/dist/cjs/utils/instructions/postVaa.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/postVaa.js +0 -53
- package/dist/cjs/utils/instructions/postVaa.js.map +0 -1
- package/dist/cjs/utils/instructions/secp256k1.d.ts +0 -31
- package/dist/cjs/utils/instructions/secp256k1.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/secp256k1.js +0 -111
- package/dist/cjs/utils/instructions/secp256k1.js.map +0 -1
- package/dist/cjs/utils/instructions/verifySignature.d.ts +0 -33
- package/dist/cjs/utils/instructions/verifySignature.d.ts.map +0 -1
- package/dist/cjs/utils/instructions/verifySignature.js +0 -91
- package/dist/cjs/utils/instructions/verifySignature.js.map +0 -1
- package/dist/cjs/utils/program.d.ts +0 -9
- package/dist/cjs/utils/program.d.ts.map +0 -1
- package/dist/cjs/utils/program.js +0 -21
- package/dist/cjs/utils/program.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wormhole-foundation/sdk-solana-core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-beta.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/wormhole-foundation/wormhole-sdk-ts.git"
|
|
@@ -13,13 +13,12 @@
|
|
|
13
13
|
"test": "__tests__"
|
|
14
14
|
},
|
|
15
15
|
"license": "Apache-2.0",
|
|
16
|
-
"main": "./dist/
|
|
17
|
-
"types": "./dist/
|
|
16
|
+
"main": "./dist/esm/index.js",
|
|
17
|
+
"types": "./dist/esm/index.d.ts",
|
|
18
18
|
"module": "./dist/esm/index.js",
|
|
19
19
|
"description": "SDK for Solana, used in conjunction with @wormhole-foundation/sdk",
|
|
20
20
|
"files": [
|
|
21
|
-
"dist/esm"
|
|
22
|
-
"dist/cjs"
|
|
21
|
+
"dist/esm"
|
|
23
22
|
],
|
|
24
23
|
"keywords": [
|
|
25
24
|
"wormhole",
|
|
@@ -29,24 +28,22 @@
|
|
|
29
28
|
"solana"
|
|
30
29
|
],
|
|
31
30
|
"engines": {
|
|
32
|
-
"node": ">=
|
|
31
|
+
"node": ">=20.19"
|
|
33
32
|
},
|
|
34
33
|
"sideEffects": [
|
|
35
|
-
"./dist/cjs/index.js",
|
|
36
34
|
"./dist/esm/index.js"
|
|
37
35
|
],
|
|
38
36
|
"scripts": {
|
|
39
|
-
"build:cjs": "tsc -p ./tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
|
|
40
37
|
"build:esm": "tsc -p ./tsconfig.esm.json",
|
|
41
|
-
"build": "npm run build:esm
|
|
38
|
+
"build": "npm run build:esm",
|
|
42
39
|
"rebuild": "npm run clean && npm run build",
|
|
43
40
|
"clean": "rm -rf ./dist && rm -rf ./.turbo",
|
|
44
41
|
"lint": "npm run prettier && eslint --fix ./src --ext .ts",
|
|
45
42
|
"prettier": "prettier --write ./src"
|
|
46
43
|
},
|
|
47
44
|
"dependencies": {
|
|
48
|
-
"@wormhole-foundation/sdk-connect": "
|
|
49
|
-
"@wormhole-foundation/sdk-solana": "
|
|
45
|
+
"@wormhole-foundation/sdk-connect": "5.0.0-beta.0",
|
|
46
|
+
"@wormhole-foundation/sdk-solana": "5.0.0-beta.0",
|
|
50
47
|
"@coral-xyz/borsh": "0.29.0",
|
|
51
48
|
"@coral-xyz/anchor": "0.29.0",
|
|
52
49
|
"@solana/web3.js": "^1.95.8"
|
|
@@ -54,24 +51,9 @@
|
|
|
54
51
|
"type": "module",
|
|
55
52
|
"exports": {
|
|
56
53
|
".": {
|
|
57
|
-
"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"types": "./dist/cjs/index.d.ts",
|
|
61
|
-
"default": "./dist/cjs/index.js"
|
|
62
|
-
},
|
|
63
|
-
"import": {
|
|
64
|
-
"types": "./dist/esm/index.d.ts",
|
|
65
|
-
"default": "./dist/esm/index.js"
|
|
66
|
-
},
|
|
67
|
-
"require": {
|
|
68
|
-
"types": "./dist/cjs/index.d.ts",
|
|
69
|
-
"default": "./dist/cjs/index.js"
|
|
70
|
-
},
|
|
71
|
-
"default": {
|
|
72
|
-
"types": "./dist/cjs/index.d.ts",
|
|
73
|
-
"default": "./dist/cjs/index.js"
|
|
74
|
-
}
|
|
54
|
+
"types": "./dist/esm/index.d.ts",
|
|
55
|
+
"import": "./dist/esm/index.js",
|
|
56
|
+
"default": "./dist/esm/index.js"
|
|
75
57
|
}
|
|
76
58
|
}
|
|
77
59
|
}
|
package/dist/cjs/core.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import type { Program } from '@coral-xyz/anchor';
|
|
2
|
-
import type { Connection, PublicKey, TransactionResponse, VersionedTransactionResponse } from '@solana/web3.js';
|
|
3
|
-
import type { ChainId, ChainsConfig, Contracts, Network, Platform, UniversalAddress, VAA, WormholeCore, WormholeMessageId } from '@wormhole-foundation/sdk-connect';
|
|
4
|
-
import type { AnySolanaAddress, SolanaChains } from '@wormhole-foundation/sdk-solana';
|
|
5
|
-
import { SolanaUnsignedTransaction } from '@wormhole-foundation/sdk-solana';
|
|
6
|
-
import type { Wormhole as WormholeCoreContract } from './types.js';
|
|
7
|
-
import type { BridgeData } from './utils/index.js';
|
|
8
|
-
export declare class SolanaWormholeCore<N extends Network, C extends SolanaChains> implements WormholeCore<N, C> {
|
|
9
|
-
readonly network: N;
|
|
10
|
-
readonly chain: C;
|
|
11
|
-
readonly connection: Connection;
|
|
12
|
-
readonly contracts: Contracts;
|
|
13
|
-
readonly chainId: ChainId;
|
|
14
|
-
readonly coreBridge: Program<WormholeCoreContract>;
|
|
15
|
-
readonly address: string;
|
|
16
|
-
protected bridgeData?: BridgeData;
|
|
17
|
-
constructor(network: N, chain: C, connection: Connection, contracts: Contracts);
|
|
18
|
-
getGuardianSet(index: number): Promise<WormholeCore.GuardianSet>;
|
|
19
|
-
static fromRpc<N extends Network>(connection: Connection, config: ChainsConfig<N, Platform>): Promise<SolanaWormholeCore<N, "Solana" | "Pythnet" | "Fogo">>;
|
|
20
|
-
private ensureBridgeConfig;
|
|
21
|
-
getMessageFee(): Promise<bigint>;
|
|
22
|
-
getGuardianSetIndex(): Promise<number>;
|
|
23
|
-
publishMessage(sender: AnySolanaAddress, message: Uint8Array, nonce: number, consistencyLevel: number): AsyncGenerator<SolanaUnsignedTransaction<N, C>, void, unknown>;
|
|
24
|
-
verifyMessage(sender: AnySolanaAddress, vaa: VAA): AsyncGenerator<SolanaUnsignedTransaction<N, C>, void, unknown>;
|
|
25
|
-
postVaa(sender: AnySolanaAddress, vaa: VAA): AsyncGenerator<SolanaUnsignedTransaction<N, C>, void, unknown>;
|
|
26
|
-
static parseSequenceFromLog(coreBridgeAddress: string, transaction: VersionedTransactionResponse | TransactionResponse): [UniversalAddress, bigint][];
|
|
27
|
-
private getMessageAccountKeys;
|
|
28
|
-
private findInstructions;
|
|
29
|
-
parsePostMessageAccount(messageAccount: PublicKey): Promise<VAA<"Uint8Array">>;
|
|
30
|
-
parseTransaction(txid: string): Promise<WormholeMessageId[]>;
|
|
31
|
-
parseMessages(txid: string): Promise<VAA<"Uint8Array">[]>;
|
|
32
|
-
private createUnsignedTx;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=core.d.ts.map
|
package/dist/cjs/core.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAEV,UAAU,EAGV,SAAS,EACT,mBAAmB,EACnB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,EACP,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAM1C,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EAEb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGL,yBAAyB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAcnD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CACvE,YAAW,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;IAQ3B,QAAQ,CAAC,OAAO,EAAE,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS;IAT/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;gBAGvB,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;IAkBzB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;WAazD,OAAO,CAAC,CAAC,SAAS,OAAO,EACpC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC;YAiBrB,kBAAkB;IAS1B,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhC,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC,cAAc,CACnB,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM;IA8BnB,aAAa,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG;IAIhD,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG;IAkDjD,MAAM,CAAC,oBAAoB,CACzB,iBAAiB,EAAE,MAAM,EACzB,WAAW,EAAE,4BAA4B,GAAG,mBAAmB,GAC9D,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE;YAgDjB,qBAAqB;YAoCrB,gBAAgB;IAqCxB,uBAAuB,CAAC,cAAc,EAAE,SAAS;IA2BjD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAmD5D,aAAa,CAAC,IAAI,EAAE,MAAM;IAwBhC,OAAO,CAAC,gBAAgB;CAazB"}
|
package/dist/cjs/core.js
DELETED
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SolanaWormholeCore = void 0;
|
|
4
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
-
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
6
|
-
const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
|
|
7
|
-
const postMessageLayout_js_1 = require("./postMessageLayout.js");
|
|
8
|
-
const index_js_1 = require("./utils/index.js");
|
|
9
|
-
const SOLANA_SEQ_LOG = 'Program log: Sequence: ';
|
|
10
|
-
class SolanaWormholeCore {
|
|
11
|
-
network;
|
|
12
|
-
chain;
|
|
13
|
-
connection;
|
|
14
|
-
contracts;
|
|
15
|
-
chainId;
|
|
16
|
-
coreBridge;
|
|
17
|
-
address;
|
|
18
|
-
bridgeData;
|
|
19
|
-
constructor(network, chain, connection, contracts) {
|
|
20
|
-
this.network = network;
|
|
21
|
-
this.chain = chain;
|
|
22
|
-
this.connection = connection;
|
|
23
|
-
this.contracts = contracts;
|
|
24
|
-
this.chainId = (0, sdk_connect_1.toChainId)(chain);
|
|
25
|
-
const coreBridgeAddress = contracts.coreBridge;
|
|
26
|
-
if (!coreBridgeAddress)
|
|
27
|
-
throw new Error(`CoreBridge contract Address for chain ${chain} not found`);
|
|
28
|
-
this.address = coreBridgeAddress;
|
|
29
|
-
this.coreBridge = (0, index_js_1.createReadOnlyWormholeProgramInterface)(coreBridgeAddress, connection);
|
|
30
|
-
}
|
|
31
|
-
async getGuardianSet(index) {
|
|
32
|
-
const gs = await (0, index_js_1.getGuardianSet)(this.connection, this.coreBridge.programId, index);
|
|
33
|
-
return {
|
|
34
|
-
index: gs.index,
|
|
35
|
-
keys: gs.keys.map((k) => k.toString('hex')),
|
|
36
|
-
expiry: BigInt(gs.expirationTime),
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
static async fromRpc(connection, config) {
|
|
40
|
-
const [network, chain] = await sdk_solana_1.SolanaPlatform.chainFromRpc(connection);
|
|
41
|
-
const conf = config[chain];
|
|
42
|
-
if (conf.network !== network)
|
|
43
|
-
throw new Error(`Network mismatch for chain ${chain}: ${conf.network} != ${network}`);
|
|
44
|
-
return new SolanaWormholeCore(network, chain, connection, config[chain].contracts);
|
|
45
|
-
}
|
|
46
|
-
async ensureBridgeConfig() {
|
|
47
|
-
// cache lookups since this should not change frequently
|
|
48
|
-
if (!this.bridgeData)
|
|
49
|
-
this.bridgeData = await (0, index_js_1.getWormholeBridgeData)(this.connection, this.coreBridge.programId);
|
|
50
|
-
}
|
|
51
|
-
async getMessageFee() {
|
|
52
|
-
await this.ensureBridgeConfig();
|
|
53
|
-
return this.bridgeData.config.fee;
|
|
54
|
-
}
|
|
55
|
-
async getGuardianSetIndex() {
|
|
56
|
-
await this.ensureBridgeConfig();
|
|
57
|
-
return this.bridgeData.guardianSetIndex;
|
|
58
|
-
}
|
|
59
|
-
async *publishMessage(sender, message, nonce, consistencyLevel) {
|
|
60
|
-
const messageAccount = web3_js_1.Keypair.generate();
|
|
61
|
-
const payer = new sdk_solana_1.SolanaAddress(sender).unwrap();
|
|
62
|
-
const postMsgIx = (0, index_js_1.createPostMessageInstruction)(this.connection, this.coreBridge.programId, payer, messageAccount.publicKey, message, nonce, consistencyLevel);
|
|
63
|
-
const fee = await this.getMessageFee();
|
|
64
|
-
const feeTransferIx = (0, index_js_1.createBridgeFeeTransferInstruction)(this.coreBridge.programId, payer, fee);
|
|
65
|
-
const transaction = new web3_js_1.Transaction();
|
|
66
|
-
transaction.feePayer = payer;
|
|
67
|
-
transaction.add(feeTransferIx, postMsgIx);
|
|
68
|
-
yield this.createUnsignedTx({ transaction, signers: [messageAccount] }, 'Core.PublishMessage');
|
|
69
|
-
}
|
|
70
|
-
async *verifyMessage(sender, vaa) {
|
|
71
|
-
yield* this.postVaa(sender, vaa);
|
|
72
|
-
}
|
|
73
|
-
async *postVaa(sender, vaa) {
|
|
74
|
-
const postedVaaAddress = (0, index_js_1.derivePostedVaaKey)(this.coreBridge.programId, Buffer.from(vaa.hash));
|
|
75
|
-
// no need to do anything else, this vaa is posted
|
|
76
|
-
const isPosted = await this.connection.getAccountInfo(postedVaaAddress);
|
|
77
|
-
if (isPosted)
|
|
78
|
-
return;
|
|
79
|
-
const senderAddr = new sdk_solana_1.SolanaAddress(sender).unwrap();
|
|
80
|
-
const signatureSet = web3_js_1.Keypair.generate();
|
|
81
|
-
const verifySignaturesInstructions = await (0, index_js_1.createVerifySignaturesInstructions)(this.connection, this.coreBridge.programId, senderAddr, vaa, signatureSet.publicKey);
|
|
82
|
-
// Create a new transaction for every 2 instructions
|
|
83
|
-
for (let i = 0; i < verifySignaturesInstructions.length; i += 2) {
|
|
84
|
-
const verifySigTx = new web3_js_1.Transaction().add(...verifySignaturesInstructions.slice(i, i + 2));
|
|
85
|
-
verifySigTx.feePayer = senderAddr;
|
|
86
|
-
yield this.createUnsignedTx({ transaction: verifySigTx, signers: [signatureSet] }, 'Core.VerifySignature', true);
|
|
87
|
-
}
|
|
88
|
-
// Finally create the VAA posting transaction
|
|
89
|
-
const postVaaTx = new web3_js_1.Transaction().add((0, index_js_1.createPostVaaInstruction)(this.connection, this.coreBridge.programId, senderAddr, vaa, signatureSet.publicKey));
|
|
90
|
-
postVaaTx.feePayer = senderAddr;
|
|
91
|
-
yield this.createUnsignedTx({ transaction: postVaaTx }, 'Core.PostVAA');
|
|
92
|
-
}
|
|
93
|
-
static parseSequenceFromLog(coreBridgeAddress, transaction) {
|
|
94
|
-
const { meta, transaction: { message }, } = transaction;
|
|
95
|
-
if (!meta?.innerInstructions?.length)
|
|
96
|
-
return [];
|
|
97
|
-
// Only consider transactions where the core bridge is in static keys
|
|
98
|
-
const accounts = message.staticAccountKeys;
|
|
99
|
-
if (accounts.filter((pk) => pk.toString() === coreBridgeAddress).length === 0)
|
|
100
|
-
return [];
|
|
101
|
-
// Do we have a sequence in the log?
|
|
102
|
-
const sequence = meta?.logMessages
|
|
103
|
-
?.filter((msg) => msg.startsWith(SOLANA_SEQ_LOG))?.[0]
|
|
104
|
-
?.replace(SOLANA_SEQ_LOG, '');
|
|
105
|
-
if (!sequence)
|
|
106
|
-
return [];
|
|
107
|
-
const bridgeIx = [];
|
|
108
|
-
for (const inner of meta?.innerInstructions) {
|
|
109
|
-
const instructions = inner.instructions;
|
|
110
|
-
// find the instruction where the programId equals the
|
|
111
|
-
// Wormhole ProgramId
|
|
112
|
-
bridgeIx.push(...instructions.filter((i) => {
|
|
113
|
-
return (i.programIdIndex in accounts &&
|
|
114
|
-
accounts[i.programIdIndex].toString() === coreBridgeAddress);
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
if (bridgeIx.length < 1)
|
|
118
|
-
return [];
|
|
119
|
-
if (accounts.length < 3)
|
|
120
|
-
return [];
|
|
121
|
-
return bridgeIx
|
|
122
|
-
.map((ix) => {
|
|
123
|
-
const emitter = new sdk_solana_1.SolanaAddress(accounts[ix.accounts[2]]).toUniversalAddress();
|
|
124
|
-
return [emitter, BigInt(sequence)];
|
|
125
|
-
})
|
|
126
|
-
.filter((x) => x !== null);
|
|
127
|
-
}
|
|
128
|
-
async getMessageAccountKeys(response) {
|
|
129
|
-
// Resolve any LUT accounts if necessary
|
|
130
|
-
let accounts;
|
|
131
|
-
// a string type is indicative of a 'legacy' transaction
|
|
132
|
-
if (typeof response.transaction.message.version !== 'string') {
|
|
133
|
-
if (response.meta.loadedAddresses) {
|
|
134
|
-
accounts = response.transaction.message.getAccountKeys({
|
|
135
|
-
accountKeysFromLookups: response.meta.loadedAddresses,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
const atls = await Promise.all(response.transaction.message.addressTableLookups.map(async (atl) => {
|
|
140
|
-
const lut = await this.connection.getAddressLookupTable(atl.accountKey);
|
|
141
|
-
if (!lut || !lut.value)
|
|
142
|
-
throw new Error('Could not resolve lookup table: ' + atl.accountKey.toBase58());
|
|
143
|
-
return lut.value;
|
|
144
|
-
}));
|
|
145
|
-
accounts = response.transaction.message.getAccountKeys({
|
|
146
|
-
addressLookupTableAccounts: atls,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
accounts = response.transaction.message.getAccountKeys();
|
|
152
|
-
}
|
|
153
|
-
return accounts;
|
|
154
|
-
}
|
|
155
|
-
async findInstructions(accounts, response) {
|
|
156
|
-
const { meta, transaction: { message }, } = response;
|
|
157
|
-
const programId = this.coreBridge.programId;
|
|
158
|
-
const iix = meta.innerInstructions
|
|
159
|
-
?.flatMap((ix) => ix.instructions.filter(
|
|
160
|
-
// find the instructions where the programId equals the Wormhole ProgramId
|
|
161
|
-
(i) => programId.toString() === accounts.get(i.programIdIndex).toString()))
|
|
162
|
-
.map((ix) => {
|
|
163
|
-
// map over inner ixs to put it in the same format as the compiled instructions
|
|
164
|
-
// from the message
|
|
165
|
-
return {
|
|
166
|
-
programIdIndex: ix.programIdIndex,
|
|
167
|
-
accountKeyIndexes: ix.accounts,
|
|
168
|
-
};
|
|
169
|
-
});
|
|
170
|
-
const cix = message.compiledInstructions.filter((i) => programId.toString() === accounts.get(i.programIdIndex).toString());
|
|
171
|
-
// find the instruction where the programId equals the Wormhole ProgramId
|
|
172
|
-
return [...iix, ...cix];
|
|
173
|
-
}
|
|
174
|
-
async parsePostMessageAccount(messageAccount) {
|
|
175
|
-
const acctInfo = await this.connection.getAccountInfo(messageAccount);
|
|
176
|
-
if (!acctInfo?.data)
|
|
177
|
-
throw new Error('No data found in message account');
|
|
178
|
-
const { timestamp, emitterAddress, emitterChain, consistencyLevel, sequence, nonce, payload, } = (0, postMessageLayout_js_1.deserializePostMessage)(new Uint8Array(acctInfo?.data));
|
|
179
|
-
return (0, sdk_connect_1.createVAA)('Uint8Array', {
|
|
180
|
-
guardianSet: await this.getGuardianSetIndex(),
|
|
181
|
-
emitterChain: (0, sdk_connect_1.toChain)(emitterChain),
|
|
182
|
-
timestamp,
|
|
183
|
-
emitterAddress,
|
|
184
|
-
consistencyLevel,
|
|
185
|
-
sequence,
|
|
186
|
-
nonce,
|
|
187
|
-
payload,
|
|
188
|
-
signatures: [],
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
async parseTransaction(txid) {
|
|
192
|
-
const response = await this.connection.getTransaction(txid, {
|
|
193
|
-
maxSupportedTransactionVersion: 0,
|
|
194
|
-
});
|
|
195
|
-
if (!response || !response.meta || !response.meta.innerInstructions)
|
|
196
|
-
throw new Error('transaction not found');
|
|
197
|
-
try {
|
|
198
|
-
// The sequence is frequently found in the log, pull from there if we can
|
|
199
|
-
const loggedSeqs = SolanaWormholeCore.parseSequenceFromLog(this.coreBridge.programId.toBase58(), response);
|
|
200
|
-
if (loggedSeqs.length > 0) {
|
|
201
|
-
const [emitter, seq] = loggedSeqs[0];
|
|
202
|
-
return [
|
|
203
|
-
{
|
|
204
|
-
chain: this.chain,
|
|
205
|
-
emitter: emitter,
|
|
206
|
-
sequence: seq,
|
|
207
|
-
},
|
|
208
|
-
];
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
catch {
|
|
212
|
-
// but since the account keys may need to be resolved, it could fail
|
|
213
|
-
}
|
|
214
|
-
const accounts = await this.getMessageAccountKeys(response);
|
|
215
|
-
// Otherwise we need to get it from the message account
|
|
216
|
-
const bridgeInstructions = await this.findInstructions(accounts, response);
|
|
217
|
-
if (!bridgeInstructions || bridgeInstructions.length === 0)
|
|
218
|
-
throw new Error('no bridge messages found');
|
|
219
|
-
const messagePromises = bridgeInstructions.map(async (bi) => {
|
|
220
|
-
const messageAcct = accounts.get(bi.accountKeyIndexes[1]);
|
|
221
|
-
const vaa = await this.parsePostMessageAccount(messageAcct);
|
|
222
|
-
return {
|
|
223
|
-
chain: vaa.emitterChain,
|
|
224
|
-
emitter: vaa.emitterAddress,
|
|
225
|
-
sequence: vaa.sequence,
|
|
226
|
-
};
|
|
227
|
-
});
|
|
228
|
-
return await Promise.all(messagePromises);
|
|
229
|
-
}
|
|
230
|
-
async parseMessages(txid) {
|
|
231
|
-
const response = await this.connection.getTransaction(txid, {
|
|
232
|
-
maxSupportedTransactionVersion: 0,
|
|
233
|
-
});
|
|
234
|
-
if (!response || !response.meta || !response.meta.innerInstructions)
|
|
235
|
-
throw new Error('transaction not found');
|
|
236
|
-
// Otherwise we need to get it from the message account
|
|
237
|
-
const accounts = await this.getMessageAccountKeys(response);
|
|
238
|
-
const bridgeInstructions = await this.findInstructions(accounts, response);
|
|
239
|
-
if (!bridgeInstructions || bridgeInstructions.length === 0)
|
|
240
|
-
throw new Error('no bridge messages found');
|
|
241
|
-
const messagePromises = bridgeInstructions.map(async (bi) => {
|
|
242
|
-
const messageAcct = accounts.get(bi.accountKeyIndexes[1]);
|
|
243
|
-
return await this.parsePostMessageAccount(messageAcct);
|
|
244
|
-
});
|
|
245
|
-
return await Promise.all(messagePromises);
|
|
246
|
-
}
|
|
247
|
-
createUnsignedTx(txReq, description, parallelizable = false) {
|
|
248
|
-
return new sdk_solana_1.SolanaUnsignedTransaction(txReq, this.network, this.chain, description, parallelizable);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
exports.SolanaWormholeCore = SolanaWormholeCore;
|
|
252
|
-
//# sourceMappingURL=core.js.map
|
package/dist/cjs/core.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
DELETED
package/dist/cjs/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
|
package/dist/cjs/index.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
-
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.utils = void 0;
|
|
30
|
-
const sdk_solana_1 = require("@wormhole-foundation/sdk-solana");
|
|
31
|
-
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
32
|
-
const core_js_1 = require("./core.js");
|
|
33
|
-
(0, sdk_connect_1.registerProtocol)(sdk_solana_1._platform, 'WormholeCore', core_js_1.SolanaWormholeCore);
|
|
34
|
-
__exportStar(require("./core.js"), exports);
|
|
35
|
-
__exportStar(require("./types.js"), exports);
|
|
36
|
-
exports.utils = __importStar(require("./utils/index.js"));
|
|
37
|
-
__exportStar(require("./postMessageLayout.js"), exports);
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA4D;AAC5D,kEAAoE;AACpE,uCAA+C;AAE/C,IAAA,8BAAgB,EAAC,sBAAS,EAAE,cAAc,EAAE,4BAAkB,CAAC,CAAC;AAEhE,4CAA0B;AAC1B,6CAA2B;AAC3B,0DAA0C;AAC1C,yDAAuC"}
|
package/dist/cjs/package.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"type":"commonjs"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { LayoutToType } from '@wormhole-foundation/sdk-connect';
|
|
2
|
-
/** Binary layout for postMessage account */
|
|
3
|
-
export declare const postMessageLayout: readonly [{
|
|
4
|
-
readonly name: "discriminator";
|
|
5
|
-
readonly binary: "bytes";
|
|
6
|
-
readonly size: 4;
|
|
7
|
-
}, {
|
|
8
|
-
readonly name: "consistencyLevel";
|
|
9
|
-
readonly binary: "uint";
|
|
10
|
-
readonly size: 1;
|
|
11
|
-
readonly endianness: "little";
|
|
12
|
-
}, {
|
|
13
|
-
readonly binary: "bytes";
|
|
14
|
-
readonly size: 32;
|
|
15
|
-
readonly custom: {
|
|
16
|
-
to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
|
|
17
|
-
from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
|
|
18
|
-
};
|
|
19
|
-
readonly name: "emitterAuthority";
|
|
20
|
-
}, {
|
|
21
|
-
readonly name: "messageStatus";
|
|
22
|
-
readonly binary: "uint";
|
|
23
|
-
readonly size: 1;
|
|
24
|
-
readonly endianness: "little";
|
|
25
|
-
}, {
|
|
26
|
-
readonly name: "gap";
|
|
27
|
-
readonly binary: "uint";
|
|
28
|
-
readonly size: 3;
|
|
29
|
-
}, {
|
|
30
|
-
readonly name: "timestamp";
|
|
31
|
-
readonly binary: "uint";
|
|
32
|
-
readonly size: 4;
|
|
33
|
-
readonly endianness: "little";
|
|
34
|
-
}, {
|
|
35
|
-
readonly name: "nonce";
|
|
36
|
-
readonly binary: "uint";
|
|
37
|
-
readonly size: 4;
|
|
38
|
-
readonly endianness: "little";
|
|
39
|
-
}, {
|
|
40
|
-
readonly name: "sequence";
|
|
41
|
-
readonly binary: "uint";
|
|
42
|
-
readonly size: 8;
|
|
43
|
-
readonly endianness: "little";
|
|
44
|
-
}, {
|
|
45
|
-
readonly name: "emitterChain";
|
|
46
|
-
readonly binary: "uint";
|
|
47
|
-
readonly size: 2;
|
|
48
|
-
readonly endianness: "little";
|
|
49
|
-
}, {
|
|
50
|
-
readonly binary: "bytes";
|
|
51
|
-
readonly size: 32;
|
|
52
|
-
readonly custom: {
|
|
53
|
-
to: (val: Uint8Array) => import("@wormhole-foundation/sdk-connect").UniversalAddress;
|
|
54
|
-
from: (val: import("@wormhole-foundation/sdk-connect").UniversalAddress) => Uint8Array;
|
|
55
|
-
};
|
|
56
|
-
readonly name: "emitterAddress";
|
|
57
|
-
}, {
|
|
58
|
-
readonly name: "payloadLength";
|
|
59
|
-
readonly binary: "uint";
|
|
60
|
-
readonly size: 4;
|
|
61
|
-
readonly endianness: "little";
|
|
62
|
-
}, {
|
|
63
|
-
readonly name: "payload";
|
|
64
|
-
readonly binary: "bytes";
|
|
65
|
-
}];
|
|
66
|
-
export declare function deserializePostMessage(data: Uint8Array): LayoutToType<typeof postMessageLayout>;
|
|
67
|
-
//# sourceMappingURL=postMessageLayout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postMessageLayout.d.ts","sourceRoot":"","sources":["../../src/postMessageLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAM7E,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaH,CAAC;AAE5B,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,UAAU,GACf,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAExC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deserializePostMessage = exports.postMessageLayout = void 0;
|
|
4
|
-
const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
|
|
5
|
-
/** Binary layout for postMessage account */
|
|
6
|
-
exports.postMessageLayout = [
|
|
7
|
-
{ name: 'discriminator', binary: 'bytes', size: 4 },
|
|
8
|
-
{ name: 'consistencyLevel', binary: 'uint', size: 1, endianness: 'little' },
|
|
9
|
-
{ name: 'emitterAuthority', ...sdk_connect_1.layoutItems.universalAddressItem },
|
|
10
|
-
{ name: 'messageStatus', binary: 'uint', size: 1, endianness: 'little' },
|
|
11
|
-
{ name: 'gap', binary: 'uint', size: 3 },
|
|
12
|
-
{ name: 'timestamp', binary: 'uint', size: 4, endianness: 'little' },
|
|
13
|
-
{ name: 'nonce', binary: 'uint', size: 4, endianness: 'little' },
|
|
14
|
-
{ name: 'sequence', binary: 'uint', size: 8, endianness: 'little' },
|
|
15
|
-
{ name: 'emitterChain', binary: 'uint', size: 2, endianness: 'little' },
|
|
16
|
-
{ name: 'emitterAddress', ...sdk_connect_1.layoutItems.universalAddressItem },
|
|
17
|
-
{ name: 'payloadLength', binary: 'uint', size: 4, endianness: 'little' },
|
|
18
|
-
{ name: 'payload', binary: 'bytes' },
|
|
19
|
-
];
|
|
20
|
-
function deserializePostMessage(data) {
|
|
21
|
-
return (0, sdk_connect_1.deserializeLayout)(exports.postMessageLayout, data);
|
|
22
|
-
}
|
|
23
|
-
exports.deserializePostMessage = deserializePostMessage;
|
|
24
|
-
//# sourceMappingURL=postMessageLayout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postMessageLayout.js","sourceRoot":"","sources":["../../src/postMessageLayout.ts"],"names":[],"mappings":";;;AACA,kEAG0C;AAE1C,4CAA4C;AAC/B,QAAA,iBAAiB,GAAG;IAC/B,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IAC3E,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,yBAAW,CAAC,oBAAoB,EAAE;IACjE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE;IACxC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACpE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IAChE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACnE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACvE,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,yBAAW,CAAC,oBAAoB,EAAE;IAC/D,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE;IACxE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;CACX,CAAC;AAE5B,SAAgB,sBAAsB,CACpC,IAAgB;IAEhB,OAAO,IAAA,+BAAiB,EAAC,yBAAiB,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAJD,wDAIC"}
|