@hyperlane-xyz/cli 5.6.0-superchain.1 → 5.6.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/dist/cli.js +0 -2
- package/dist/cli.js.map +1 -1
- package/dist/src/check/warp.d.ts +7 -0
- package/dist/src/check/warp.d.ts.map +1 -0
- package/dist/src/check/warp.js +23 -0
- package/dist/src/check/warp.js.map +1 -0
- package/dist/src/commands/config.js +4 -4
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/core.d.ts +5 -0
- package/dist/src/commands/core.d.ts.map +1 -1
- package/dist/src/commands/core.js +53 -31
- package/dist/src/commands/core.js.map +1 -1
- package/dist/src/commands/options.d.ts +7 -1
- package/dist/src/commands/options.d.ts.map +1 -1
- package/dist/src/commands/options.js +9 -6
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/warp.d.ts +5 -0
- package/dist/src/commands/warp.d.ts.map +1 -1
- package/dist/src/commands/warp.js +65 -77
- package/dist/src/commands/warp.js.map +1 -1
- package/dist/src/config/agent.js +1 -0
- package/dist/src/config/agent.js.map +1 -1
- package/dist/src/config/chain.d.ts.map +1 -1
- package/dist/src/config/chain.js +12 -4
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/core.d.ts +0 -108
- package/dist/src/config/core.d.ts.map +1 -1
- package/dist/src/config/hooks.d.ts +0 -548
- package/dist/src/config/hooks.d.ts.map +1 -1
- package/dist/src/config/hooks.js +5 -1
- package/dist/src/config/hooks.js.map +1 -1
- package/dist/src/config/ism.d.ts +0 -10
- package/dist/src/config/ism.d.ts.map +1 -1
- package/dist/src/config/ism.js +10 -2
- package/dist/src/config/ism.js.map +1 -1
- package/dist/src/config/multisig.d.ts.map +1 -1
- package/dist/src/config/multisig.js +3 -1
- package/dist/src/config/multisig.js.map +1 -1
- package/dist/src/config/warp.d.ts.map +1 -1
- package/dist/src/config/warp.js +79 -12
- package/dist/src/config/warp.js.map +1 -1
- package/dist/src/deploy/agent.js +5 -1
- package/dist/src/deploy/agent.js.map +1 -1
- package/dist/src/deploy/warp.d.ts.map +1 -1
- package/dist/src/deploy/warp.js +73 -66
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/logger.d.ts +1 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +3 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/read/core.d.ts +9 -0
- package/dist/src/read/core.d.ts.map +1 -0
- package/dist/src/read/core.js +19 -0
- package/dist/src/read/core.js.map +1 -0
- package/dist/src/read/warp.d.ts +10 -0
- package/dist/src/read/warp.d.ts.map +1 -0
- package/dist/src/read/warp.js +59 -0
- package/dist/src/read/warp.js.map +1 -0
- package/dist/src/send/transfer.d.ts +3 -0
- package/dist/src/send/transfer.d.ts.map +1 -1
- package/dist/src/send/transfer.js +4 -1
- package/dist/src/send/transfer.js.map +1 -1
- package/dist/src/tests/commands/helpers.d.ts +11 -0
- package/dist/src/tests/commands/helpers.d.ts.map +1 -1
- package/dist/src/tests/commands/helpers.js +35 -2
- package/dist/src/tests/commands/helpers.js.map +1 -1
- package/dist/src/tests/commands/warp.d.ts +1 -0
- package/dist/src/tests/commands/warp.d.ts.map +1 -1
- package/dist/src/tests/commands/warp.js +16 -0
- package/dist/src/tests/commands/warp.js.map +1 -1
- package/dist/src/tests/warp-apply.e2e-test.js +37 -3
- package/dist/src/tests/warp-apply.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-deploy.e2e-test.d.ts +2 -0
- package/dist/src/tests/warp-deploy.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/warp-deploy.e2e-test.js +72 -0
- package/dist/src/tests/warp-deploy.e2e-test.js.map +1 -0
- package/dist/src/utils/chains.d.ts +26 -1
- package/dist/src/utils/chains.d.ts.map +1 -1
- package/dist/src/utils/chains.js +39 -14
- package/dist/src/utils/chains.js.map +1 -1
- package/dist/src/utils/input.d.ts +59 -0
- package/dist/src/utils/input.d.ts.map +1 -1
- package/dist/src/utils/input.js +288 -1
- package/dist/src/utils/input.js.map +1 -1
- package/dist/src/utils/output.d.ts +12 -0
- package/dist/src/utils/output.d.ts.map +1 -0
- package/dist/src/utils/output.js +44 -0
- package/dist/src/utils/output.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +9 -5
- package/dist/src/commands/superchain.d.ts +0 -6
- package/dist/src/commands/superchain.d.ts.map +0 -1
- package/dist/src/commands/superchain.js +0 -84
- package/dist/src/commands/superchain.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../../src/tests/commands/warp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAQ3D;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../../src/tests/commands/warp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAQ3D;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,uCAS7D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,WAAW,SAAK,uCAWjB;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,uCAUvB;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,uCAYrB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAIhC"}
|
|
@@ -6,8 +6,10 @@ $.verbose = true;
|
|
|
6
6
|
* Deploys the Warp route to the specified chain using the provided config.
|
|
7
7
|
*/
|
|
8
8
|
export async function hyperlaneWarpDeploy(warpCorePath) {
|
|
9
|
+
// --overrides is " " to allow local testing to work
|
|
9
10
|
return $ `yarn workspace @hyperlane-xyz/cli run hyperlane warp deploy \
|
|
10
11
|
--registry ${REGISTRY_PATH} \
|
|
12
|
+
--overrides " " \
|
|
11
13
|
--config ${warpCorePath} \
|
|
12
14
|
--key ${ANVIL_KEY} \
|
|
13
15
|
--verbosity debug \
|
|
@@ -19,6 +21,7 @@ export async function hyperlaneWarpDeploy(warpCorePath) {
|
|
|
19
21
|
export async function hyperlaneWarpApply(warpDeployPath, warpCorePath, strategyUrl = '') {
|
|
20
22
|
return $ `yarn workspace @hyperlane-xyz/cli run hyperlane warp apply \
|
|
21
23
|
--registry ${REGISTRY_PATH} \
|
|
24
|
+
--overrides " " \
|
|
22
25
|
--config ${warpDeployPath} \
|
|
23
26
|
--warp ${warpCorePath} \
|
|
24
27
|
--key ${ANVIL_KEY} \
|
|
@@ -29,12 +32,25 @@ export async function hyperlaneWarpApply(warpDeployPath, warpCorePath, strategyU
|
|
|
29
32
|
export async function hyperlaneWarpRead(chain, warpAddress, warpDeployPath) {
|
|
30
33
|
return $ `yarn workspace @hyperlane-xyz/cli run hyperlane warp read \
|
|
31
34
|
--registry ${REGISTRY_PATH} \
|
|
35
|
+
--overrides " " \
|
|
32
36
|
--address ${warpAddress} \
|
|
33
37
|
--chain ${chain} \
|
|
34
38
|
--key ${ANVIL_KEY} \
|
|
35
39
|
--verbosity debug \
|
|
36
40
|
--config ${warpDeployPath}`;
|
|
37
41
|
}
|
|
42
|
+
export async function hyperlaneWarpSendRelay(origin, destination, warpCorePath) {
|
|
43
|
+
return $ `yarn workspace @hyperlane-xyz/cli run hyperlane warp send \
|
|
44
|
+
--relay \
|
|
45
|
+
--registry ${REGISTRY_PATH} \
|
|
46
|
+
--overrides " " \
|
|
47
|
+
--origin ${origin} \
|
|
48
|
+
--destination ${destination} \
|
|
49
|
+
--warp ${warpCorePath} \
|
|
50
|
+
--key ${ANVIL_KEY} \
|
|
51
|
+
--verbosity debug \
|
|
52
|
+
--yes`;
|
|
53
|
+
}
|
|
38
54
|
/**
|
|
39
55
|
* Reads the Warp route deployment config to specified output path.
|
|
40
56
|
* @param warpCorePath path to warp core
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../../src/tests/commands/warp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC;AAIvB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEhF,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AAEjB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,YAAoB;IAC5D,OAAO,CAAC,CAAA;qBACW,aAAa
|
|
1
|
+
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../../src/tests/commands/warp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC;AAIvB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEhF,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;AAEjB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,YAAoB;IAC5D,oDAAoD;IACpD,OAAO,CAAC,CAAA;qBACW,aAAa;;mBAEf,YAAY;gBACf,SAAS;;cAEX,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAAsB,EACtB,YAAoB,EACpB,WAAW,GAAG,EAAE;IAEhB,OAAO,CAAC,CAAA;qBACW,aAAa;;mBAEf,cAAc;iBAChB,YAAY;gBACb,SAAS;;qBAEJ,WAAW;cAClB,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,WAAmB,EACnB,cAAsB;IAEtB,OAAO,CAAC,CAAA;qBACW,aAAa;;oBAEd,WAAW;kBACb,KAAK;gBACP,SAAS;;mBAEN,cAAc,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,WAAmB,EACnB,YAAoB;IAEpB,OAAO,CAAC,CAAA;;qBAEW,aAAa;;mBAEf,MAAM;wBACD,WAAW;iBAClB,YAAY;gBACb,SAAS;;cAEX,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,YAAoB,EACpB,cAAsB;IAEtB,MAAM,WAAW,GAAG,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,iBAAiB,CAAC,KAAK,EAAE,WAAY,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,cAAc,CAAC,cAAc,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { Wallet } from 'ethers';
|
|
|
3
3
|
import { TokenType, } from '@hyperlane-xyz/sdk';
|
|
4
4
|
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
5
5
|
import { ANVIL_KEY, REGISTRY_PATH, deployOrUseExistingCore, extendWarpConfig, getChainId, updateOwner, } from './commands/helpers.js';
|
|
6
|
-
import { hyperlaneWarpDeploy, readWarpConfig } from './commands/warp.js';
|
|
6
|
+
import { hyperlaneWarpApply, hyperlaneWarpDeploy, readWarpConfig, } from './commands/warp.js';
|
|
7
7
|
const CHAIN_NAME_2 = 'anvil2';
|
|
8
8
|
const CHAIN_NAME_3 = 'anvil3';
|
|
9
9
|
const BURN_ADDRESS = '0x0000000000000000000000000000000000000001';
|
|
@@ -13,7 +13,7 @@ const WARP_CONFIG_PATH_EXAMPLE = `${EXAMPLES_PATH}/warp-route-deployment.yaml`;
|
|
|
13
13
|
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
14
14
|
const WARP_CONFIG_PATH_2 = `${TEMP_PATH}/anvil2/warp-route-deployment-anvil2.yaml`;
|
|
15
15
|
const WARP_CORE_CONFIG_PATH_2 = `${REGISTRY_PATH}/deployments/warp_routes/ETH/anvil2-config.yaml`;
|
|
16
|
-
const TEST_TIMEOUT =
|
|
16
|
+
const TEST_TIMEOUT = 100000; // Long timeout since these tests can take a while
|
|
17
17
|
describe('WarpApply e2e tests', async function () {
|
|
18
18
|
let chain2Addresses = {};
|
|
19
19
|
this.timeout(TEST_TIMEOUT);
|
|
@@ -38,7 +38,7 @@ describe('WarpApply e2e tests', async function () {
|
|
|
38
38
|
const warpConfigPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
39
39
|
await updateOwner(BURN_ADDRESS, CHAIN_NAME_2, warpConfigPath, WARP_CORE_CONFIG_PATH_2);
|
|
40
40
|
const { stdout } = await updateOwner(BURN_ADDRESS, CHAIN_NAME_2, warpConfigPath, WARP_CORE_CONFIG_PATH_2);
|
|
41
|
-
expect(stdout).to.include('Warp config
|
|
41
|
+
expect(stdout).to.include('Warp config is the same as target. No updates needed.');
|
|
42
42
|
});
|
|
43
43
|
it('should extend an existing warp route', async () => {
|
|
44
44
|
// Read existing config into a file
|
|
@@ -107,5 +107,39 @@ describe('WarpApply e2e tests', async function () {
|
|
|
107
107
|
const remoteRouterKeys2 = Object.keys(updatedWarpDeployConfig2[CHAIN_NAME_3].remoteRouters);
|
|
108
108
|
expect(remoteRouterKeys2).to.include(chain1Id);
|
|
109
109
|
});
|
|
110
|
+
it('should extend an existing warp route and update the owner', async () => {
|
|
111
|
+
const warpDeployPath = `${TEMP_PATH}/warp-route-deployment-2.yaml`;
|
|
112
|
+
// Burn anvil2 owner in config
|
|
113
|
+
const warpDeployConfig = await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2, warpDeployPath);
|
|
114
|
+
warpDeployConfig[CHAIN_NAME_2].owner = BURN_ADDRESS;
|
|
115
|
+
// Extend with new config
|
|
116
|
+
const randomOwner = new Wallet(ANVIL_KEY).address;
|
|
117
|
+
const extendedConfig = {
|
|
118
|
+
decimals: 18,
|
|
119
|
+
mailbox: chain2Addresses.mailbox,
|
|
120
|
+
name: 'Ether',
|
|
121
|
+
owner: randomOwner,
|
|
122
|
+
symbol: 'ETH',
|
|
123
|
+
totalSupply: 0,
|
|
124
|
+
type: TokenType.native,
|
|
125
|
+
};
|
|
126
|
+
warpDeployConfig[CHAIN_NAME_3] = extendedConfig;
|
|
127
|
+
writeYamlOrJson(warpDeployPath, warpDeployConfig);
|
|
128
|
+
await hyperlaneWarpApply(warpDeployPath, WARP_CORE_CONFIG_PATH_2);
|
|
129
|
+
const COMBINED_WARP_CORE_CONFIG_PATH = `${REGISTRY_PATH}/deployments/warp_routes/ETH/anvil2-anvil3-config.yaml`;
|
|
130
|
+
const updatedWarpDeployConfig_2 = await readWarpConfig(CHAIN_NAME_2, COMBINED_WARP_CORE_CONFIG_PATH, warpDeployPath);
|
|
131
|
+
const updatedWarpDeployConfig_3 = await readWarpConfig(CHAIN_NAME_3, COMBINED_WARP_CORE_CONFIG_PATH, warpDeployPath);
|
|
132
|
+
// Check that anvil2 owner is burned
|
|
133
|
+
expect(updatedWarpDeployConfig_2.anvil2.owner).to.equal(BURN_ADDRESS);
|
|
134
|
+
// Also, anvil3 owner is not burned
|
|
135
|
+
expect(updatedWarpDeployConfig_3.anvil3.owner).to.equal(randomOwner);
|
|
136
|
+
// Check that both chains enrolled
|
|
137
|
+
const chain2Id = await getChainId(CHAIN_NAME_2, ANVIL_KEY);
|
|
138
|
+
const chain3Id = await getChainId(CHAIN_NAME_3, ANVIL_KEY);
|
|
139
|
+
const remoteRouterKeys2 = Object.keys(updatedWarpDeployConfig_2[CHAIN_NAME_2].remoteRouters);
|
|
140
|
+
const remoteRouterKeys3 = Object.keys(updatedWarpDeployConfig_3[CHAIN_NAME_3].remoteRouters);
|
|
141
|
+
expect(remoteRouterKeys2).to.include(chain3Id);
|
|
142
|
+
expect(remoteRouterKeys3).to.include(chain2Id);
|
|
143
|
+
});
|
|
110
144
|
});
|
|
111
145
|
//# sourceMappingURL=warp-apply.e2e-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp-apply.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-apply.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAEL,SAAS,GAEV,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EACL,SAAS,EACT,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"warp-apply.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-apply.e2e-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-deploy.e2e-test.d.ts","sourceRoot":"","sources":["../../../src/tests/warp-deploy.e2e-test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as chai from 'chai';
|
|
2
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
3
|
+
import { TokenType } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { WarpSendLogs } from '../send/transfer.js';
|
|
5
|
+
import { writeYamlOrJson } from '../utils/files.js';
|
|
6
|
+
import { ANVIL_KEY, REGISTRY_PATH, deploy4626Vault, deployOrUseExistingCore, deployToken, sendWarpRouteMessageRoundTrip, } from './commands/helpers.js';
|
|
7
|
+
import { hyperlaneWarpDeploy, readWarpConfig } from './commands/warp.js';
|
|
8
|
+
chai.use(chaiAsPromised);
|
|
9
|
+
const expect = chai.expect;
|
|
10
|
+
chai.should();
|
|
11
|
+
const CHAIN_NAME_2 = 'anvil2';
|
|
12
|
+
const CHAIN_NAME_3 = 'anvil3';
|
|
13
|
+
const EXAMPLES_PATH = './examples';
|
|
14
|
+
const TEMP_PATH = '/tmp'; // /temp gets removed at the end of all-test.sh
|
|
15
|
+
const CORE_CONFIG_PATH = `${EXAMPLES_PATH}/core-config.yaml`;
|
|
16
|
+
const WARP_CONFIG_PATH = `${TEMP_PATH}/warp-route-deployment-deploy.yaml`;
|
|
17
|
+
const WARP_CORE_CONFIG_PATH_2_3 = `${REGISTRY_PATH}/deployments/warp_routes/VAULT/anvil2-anvil3-config.yaml`;
|
|
18
|
+
const TEST_TIMEOUT = 60000; // Long timeout since these tests can take a while
|
|
19
|
+
describe('WarpDeploy e2e tests', async function () {
|
|
20
|
+
let chain2Addresses = {};
|
|
21
|
+
let token;
|
|
22
|
+
let vault;
|
|
23
|
+
this.timeout(TEST_TIMEOUT);
|
|
24
|
+
before(async function () {
|
|
25
|
+
chain2Addresses = await deployOrUseExistingCore(CHAIN_NAME_2, CORE_CONFIG_PATH, ANVIL_KEY);
|
|
26
|
+
await deployOrUseExistingCore(CHAIN_NAME_3, CORE_CONFIG_PATH, ANVIL_KEY);
|
|
27
|
+
token = await deployToken(ANVIL_KEY, CHAIN_NAME_2);
|
|
28
|
+
vault = await deploy4626Vault(ANVIL_KEY, CHAIN_NAME_2, token.address);
|
|
29
|
+
});
|
|
30
|
+
it('should only allow rebasing yield route to be deployed with rebasing synthetic', async function () {
|
|
31
|
+
const warpConfig = {
|
|
32
|
+
[CHAIN_NAME_2]: {
|
|
33
|
+
type: TokenType.collateralVaultRebase,
|
|
34
|
+
token: vault.address,
|
|
35
|
+
mailbox: chain2Addresses.mailbox,
|
|
36
|
+
owner: chain2Addresses.mailbox,
|
|
37
|
+
},
|
|
38
|
+
[CHAIN_NAME_3]: {
|
|
39
|
+
type: TokenType.synthetic,
|
|
40
|
+
mailbox: chain2Addresses.mailbox,
|
|
41
|
+
owner: chain2Addresses.mailbox,
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
writeYamlOrJson(WARP_CONFIG_PATH, warpConfig);
|
|
45
|
+
await hyperlaneWarpDeploy(WARP_CONFIG_PATH).should.be.rejected; // TODO: revisit this to figure out how to parse the error.
|
|
46
|
+
});
|
|
47
|
+
it(`should be able to bridge between ${TokenType.collateralVaultRebase} and ${TokenType.syntheticRebase}`, async function () {
|
|
48
|
+
const warpConfig = {
|
|
49
|
+
[CHAIN_NAME_2]: {
|
|
50
|
+
type: TokenType.collateralVaultRebase,
|
|
51
|
+
token: vault.address,
|
|
52
|
+
mailbox: chain2Addresses.mailbox,
|
|
53
|
+
owner: chain2Addresses.mailbox,
|
|
54
|
+
},
|
|
55
|
+
[CHAIN_NAME_3]: {
|
|
56
|
+
type: TokenType.syntheticRebase,
|
|
57
|
+
mailbox: chain2Addresses.mailbox,
|
|
58
|
+
owner: chain2Addresses.mailbox,
|
|
59
|
+
collateralChainName: CHAIN_NAME_2,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
writeYamlOrJson(WARP_CONFIG_PATH, warpConfig);
|
|
63
|
+
await hyperlaneWarpDeploy(WARP_CONFIG_PATH);
|
|
64
|
+
// Check collateralRebase
|
|
65
|
+
const collateralRebaseConfig = (await readWarpConfig(CHAIN_NAME_2, WARP_CORE_CONFIG_PATH_2_3, WARP_CONFIG_PATH))[CHAIN_NAME_2];
|
|
66
|
+
expect(collateralRebaseConfig.type).to.equal(TokenType.collateralVaultRebase);
|
|
67
|
+
// Try to send a transaction
|
|
68
|
+
const { stdout } = await sendWarpRouteMessageRoundTrip(CHAIN_NAME_2, CHAIN_NAME_3, WARP_CORE_CONFIG_PATH_2_3);
|
|
69
|
+
expect(stdout).to.include(WarpSendLogs.SUCCESS);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=warp-deploy.e2e-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-deploy.e2e-test.js","sourceRoot":"","sources":["../../../src/tests/warp-deploy.e2e-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,WAAW,EACX,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;AAEd,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC;AAE9B,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,+CAA+C;AAEzE,MAAM,gBAAgB,GAAG,GAAG,aAAa,mBAAmB,CAAC;AAC7D,MAAM,gBAAgB,GAAG,GAAG,SAAS,oCAAoC,CAAC;AAC1E,MAAM,yBAAyB,GAAG,GAAG,aAAa,0DAA0D,CAAC;AAE7G,MAAM,YAAY,GAAG,KAAM,CAAC,CAAC,kDAAkD;AAC/E,QAAQ,CAAC,sBAAsB,EAAE,KAAK;IACpC,IAAI,eAAe,GAAmB,EAAE,CAAC;IACzC,IAAI,KAAU,CAAC;IACf,IAAI,KAAU,CAAC;IAEf,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE3B,MAAM,CAAC,KAAK;QACV,eAAe,GAAG,MAAM,uBAAuB,CAC7C,YAAY,EACZ,gBAAgB,EAChB,SAAS,CACV,CAAC;QAEF,MAAM,uBAAuB,CAAC,YAAY,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEzE,KAAK,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACnD,KAAK,GAAG,MAAM,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK;QACvF,MAAM,UAAU,GAA0B;YACxC,CAAC,YAAY,CAAC,EAAE;gBACd,IAAI,EAAE,SAAS,CAAC,qBAAqB;gBACrC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,KAAK,EAAE,eAAe,CAAC,OAAO;aAC/B;YACD,CAAC,YAAY,CAAC,EAAE;gBACd,IAAI,EAAE,SAAS,CAAC,SAAS;gBACzB,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,KAAK,EAAE,eAAe,CAAC,OAAO;aAC/B;SACF,CAAC;QAEF,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,2DAA2D;IAC7H,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,SAAS,CAAC,qBAAqB,QAAQ,SAAS,CAAC,eAAe,EAAE,EAAE,KAAK;QAC9G,MAAM,UAAU,GAA0B;YACxC,CAAC,YAAY,CAAC,EAAE;gBACd,IAAI,EAAE,SAAS,CAAC,qBAAqB;gBACrC,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,KAAK,EAAE,eAAe,CAAC,OAAO;aAC/B;YACD,CAAC,YAAY,CAAC,EAAE;gBACd,IAAI,EAAE,SAAS,CAAC,eAAe;gBAC/B,OAAO,EAAE,eAAe,CAAC,OAAO;gBAChC,KAAK,EAAE,eAAe,CAAC,OAAO;gBAC9B,mBAAmB,EAAE,YAAY;aAClC;SACF,CAAC;QAEF,eAAe,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAE5C,yBAAyB;QACzB,MAAM,sBAAsB,GAAG,CAC7B,MAAM,cAAc,CAClB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,CACjB,CACF,CAAC,YAAY,CAAC,CAAC;QAEhB,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAC1C,SAAS,CAAC,qBAAqB,CAChC,CAAC;QAEF,4BAA4B;QAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,6BAA6B,CACpD,YAAY,EACZ,YAAY,EACZ,yBAAyB,CAC1B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk';
|
|
2
2
|
export declare function runSingleChainSelectionStep(chainMetadata: ChainMap<ChainMetadata>, message?: string): Promise<string>;
|
|
3
|
-
|
|
3
|
+
type RunMultiChainSelectionStepOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* The metadata of the chains that will be displayed to the user
|
|
6
|
+
*/
|
|
7
|
+
chainMetadata: ChainMap<ChainMetadata>;
|
|
8
|
+
/**
|
|
9
|
+
* The message to display to the user
|
|
10
|
+
*
|
|
11
|
+
* @default 'Select chains'
|
|
12
|
+
*/
|
|
13
|
+
message?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The minimum number of chains that must be selected
|
|
16
|
+
*
|
|
17
|
+
* @default 0
|
|
18
|
+
*/
|
|
19
|
+
requireNumber?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Whether to ask for confirmation after the selection
|
|
22
|
+
*
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
requiresConfirmation?: boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare function runMultiChainSelectionStep({ chainMetadata, message, requireNumber, requiresConfirmation, }: RunMultiChainSelectionStepOptions): Promise<string[]>;
|
|
28
|
+
export {};
|
|
4
29
|
//# sourceMappingURL=chains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAY7D,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,OAAO,SAAiB,mBAczB;AAED,KAAK,iCAAiC,GAAG;IACvC;;OAEG;IACH,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAEvC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,wBAAsB,0BAA0B,CAAC,EAC/C,aAAa,EACb,OAAyB,EACzB,aAAiB,EACjB,oBAA4B,GAC7B,EAAE,iCAAiC,qBAmDnC"}
|
package/dist/src/utils/chains.js
CHANGED
|
@@ -1,36 +1,59 @@
|
|
|
1
|
-
import { Separator,
|
|
1
|
+
import { Separator, confirm } from '@inquirer/prompts';
|
|
2
2
|
import select from '@inquirer/select';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { toTitleCase } from '@hyperlane-xyz/utils';
|
|
5
|
-
import { log
|
|
5
|
+
import { log } from '../logger.js';
|
|
6
6
|
import { calculatePageSize } from './cli-options.js';
|
|
7
|
+
import { searchableCheckBox } from './input.js';
|
|
7
8
|
// A special value marker to indicate user selected
|
|
8
9
|
// a new chain in the list
|
|
9
10
|
const NEW_CHAIN_MARKER = '__new__';
|
|
10
11
|
export async function runSingleChainSelectionStep(chainMetadata, message = 'Select chain') {
|
|
11
12
|
const networkType = await selectNetworkType();
|
|
12
|
-
const choices = getChainChoices(chainMetadata, networkType);
|
|
13
|
+
const { choices, networkTypeSeparator } = getChainChoices(chainMetadata, networkType);
|
|
13
14
|
const chain = (await select({
|
|
14
15
|
message,
|
|
15
|
-
choices,
|
|
16
|
+
choices: [networkTypeSeparator, ...choices],
|
|
16
17
|
pageSize: calculatePageSize(2),
|
|
17
18
|
}));
|
|
18
19
|
handleNewChain([chain]);
|
|
19
20
|
return chain;
|
|
20
21
|
}
|
|
21
|
-
export async function runMultiChainSelectionStep(chainMetadata, message = 'Select chains', requireNumber = 0) {
|
|
22
|
+
export async function runMultiChainSelectionStep({ chainMetadata, message = 'Select chains', requireNumber = 0, requiresConfirmation = false, }) {
|
|
22
23
|
const networkType = await selectNetworkType();
|
|
23
|
-
const choices = getChainChoices(chainMetadata, networkType);
|
|
24
|
+
const { choices, networkTypeSeparator } = getChainChoices(chainMetadata, networkType);
|
|
25
|
+
let currentChoiceSelection = new Set();
|
|
24
26
|
while (true) {
|
|
25
|
-
|
|
26
|
-
const chains = (await checkbox({
|
|
27
|
+
const chains = await searchableCheckBox({
|
|
27
28
|
message,
|
|
28
|
-
|
|
29
|
+
selectableOptionsSeparator: networkTypeSeparator,
|
|
30
|
+
choices: choices.map((choice) => currentChoiceSelection.has(choice.name)
|
|
31
|
+
? { ...choice, checked: true }
|
|
32
|
+
: choice),
|
|
33
|
+
instructions: `Use TAB key to select at least ${requireNumber} chains, then press ENTER to proceed. Type to search for a specific chain.`,
|
|
34
|
+
theme: {
|
|
35
|
+
style: {
|
|
36
|
+
// The leading space is needed because the help tip will be tightly close to the message header
|
|
37
|
+
helpTip: (text) => ` ${chalk.bgYellow(text)}`,
|
|
38
|
+
},
|
|
39
|
+
helpMode: 'always',
|
|
40
|
+
},
|
|
29
41
|
pageSize: calculatePageSize(2),
|
|
30
|
-
|
|
42
|
+
validate: (answer) => {
|
|
43
|
+
if (answer.length < requireNumber) {
|
|
44
|
+
return `Please select at least ${requireNumber} chains`;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
47
|
+
},
|
|
48
|
+
});
|
|
31
49
|
handleNewChain(chains);
|
|
32
|
-
|
|
33
|
-
|
|
50
|
+
const confirmed = requiresConfirmation
|
|
51
|
+
? await confirm({
|
|
52
|
+
message: `Is this chain selection correct?: ${chalk.cyan(chains.join(', '))}`,
|
|
53
|
+
})
|
|
54
|
+
: true;
|
|
55
|
+
if (!confirmed) {
|
|
56
|
+
currentChoiceSelection = new Set(chains);
|
|
34
57
|
continue;
|
|
35
58
|
}
|
|
36
59
|
return chains;
|
|
@@ -52,10 +75,12 @@ function getChainChoices(chainMetadata, networkType) {
|
|
|
52
75
|
const filteredChains = chains.filter((c) => networkType === 'mainnet' ? !c.isTestnet : !!c.isTestnet);
|
|
53
76
|
const choices = [
|
|
54
77
|
{ name: '(New custom chain)', value: NEW_CHAIN_MARKER },
|
|
55
|
-
new Separator(`--${toTitleCase(networkType)} Chains--`),
|
|
56
78
|
...chainsToChoices(filteredChains),
|
|
57
79
|
];
|
|
58
|
-
return
|
|
80
|
+
return {
|
|
81
|
+
choices,
|
|
82
|
+
networkTypeSeparator: new Separator(`--${toTitleCase(networkType)} Chains--`),
|
|
83
|
+
};
|
|
59
84
|
}
|
|
60
85
|
function handleNewChain(chainNames) {
|
|
61
86
|
if (chainNames.includes(NEW_CHAIN_MARKER)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,66 @@
|
|
|
1
|
+
import { Separator } from '@inquirer/core';
|
|
2
|
+
import { WarpCoreConfig } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { CommandContext } from '../context/types.js';
|
|
1
4
|
export declare function detectAndConfirmOrPrompt(detect: () => Promise<string | undefined>, prompt: string, label: string, source?: string): Promise<string>;
|
|
2
5
|
export declare function inputWithInfo({ message, info, defaultAnswer, }: {
|
|
3
6
|
message: string;
|
|
4
7
|
info?: string;
|
|
5
8
|
defaultAnswer?: string;
|
|
6
9
|
}): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Gets a {@link WarpCoreConfig} based on the provided path or prompts the user to choose one:
|
|
12
|
+
* - if `symbol` is provided the user will have to select one of the available warp routes.
|
|
13
|
+
* - if `warp` is provided the config will be read by the provided file path.
|
|
14
|
+
* - if none is provided the CLI will exit.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getWarpCoreConfigOrExit({ context, symbol, warp, }: {
|
|
17
|
+
context: CommandContext;
|
|
18
|
+
symbol?: string;
|
|
19
|
+
warp?: string;
|
|
20
|
+
}): Promise<WarpCoreConfig>;
|
|
21
|
+
export type SearchableCheckboxChoice<Value> = {
|
|
22
|
+
value: Value;
|
|
23
|
+
name?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
short?: string;
|
|
26
|
+
disabled?: boolean | string;
|
|
27
|
+
checked?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare const searchableCheckBox: <Value>(config: {
|
|
30
|
+
message: string;
|
|
31
|
+
prefix?: string | undefined;
|
|
32
|
+
pageSize?: number | undefined;
|
|
33
|
+
instructions?: string | undefined;
|
|
34
|
+
choices: readonly SearchableCheckboxChoice<Value>[];
|
|
35
|
+
loop?: boolean | undefined;
|
|
36
|
+
required?: boolean | undefined;
|
|
37
|
+
selectableOptionsSeparator?: Separator | undefined;
|
|
38
|
+
validate?: ((choices: readonly SearchableCheckboxChoice<Value>[]) => boolean | string | Promise<string | boolean>) | undefined;
|
|
39
|
+
theme?: {
|
|
40
|
+
icon?: {
|
|
41
|
+
checked?: string | undefined;
|
|
42
|
+
unchecked?: string | undefined;
|
|
43
|
+
cursor?: string | undefined;
|
|
44
|
+
} | undefined;
|
|
45
|
+
style?: {
|
|
46
|
+
disabledChoice?: {} | undefined;
|
|
47
|
+
renderSelectedChoices?: {} | undefined;
|
|
48
|
+
description?: {} | undefined;
|
|
49
|
+
helpTip?: {} | undefined;
|
|
50
|
+
answer?: {} | undefined;
|
|
51
|
+
message?: {} | undefined;
|
|
52
|
+
error?: {} | undefined;
|
|
53
|
+
defaultAnswer?: {} | undefined;
|
|
54
|
+
help?: {} | undefined;
|
|
55
|
+
highlight?: {} | undefined;
|
|
56
|
+
key?: {} | undefined;
|
|
57
|
+
} | undefined;
|
|
58
|
+
helpMode?: "always" | "never" | "auto" | undefined;
|
|
59
|
+
prefix?: string | undefined;
|
|
60
|
+
spinner?: {
|
|
61
|
+
interval?: number | undefined;
|
|
62
|
+
frames?: (string | undefined)[] | undefined;
|
|
63
|
+
} | undefined;
|
|
64
|
+
} | undefined;
|
|
65
|
+
}, context?: import("@inquirer/type").Context | undefined) => import("@inquirer/type").CancelablePromise<Value[]>;
|
|
7
66
|
//# sourceMappingURL=input.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/utils/input.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/utils/input.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAYV,MAAM,gBAAgB,CAAC;AAOxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAMrD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAMD,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,IAA6C,EAC7C,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,OAAO,EACP,MAAM,EACN,IAAI,GACL,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,cAAc,CAAC,CAY1B;AAgDD,MAAM,MAAM,wBAAwB,CAAC,KAAK,IAAI;IAC5C,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAwRF,eAAO,MAAM,kBAAkB;aA/QpB,MAAM;;;;;;;;yEAUV,OAAO,GAAG,MAAM,GAAG,QAAQ,MAAM,GAAG,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;iHA+ZlD,CAAC"}
|