@miradexio/client 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -292
- package/dist/address/base58.d.ts.map +1 -1
- package/dist/address/base58.js +1 -2
- package/dist/address/base58.js.map +1 -1
- package/dist/address/bech32.d.ts +0 -8
- package/dist/address/bech32.d.ts.map +1 -1
- package/dist/address/bech32.js +3 -9
- package/dist/address/bech32.js.map +1 -1
- package/dist/address/evm.d.ts.map +1 -1
- package/dist/address/evm.js +1 -2
- package/dist/address/evm.js.map +1 -1
- package/dist/address/index.d.ts +0 -6
- package/dist/address/index.d.ts.map +1 -1
- package/dist/address/index.js +6 -9
- package/dist/address/index.js.map +1 -1
- package/dist/address/monero.d.ts +0 -10
- package/dist/address/monero.d.ts.map +1 -1
- package/dist/address/monero.js +4 -10
- package/dist/address/monero.js.map +1 -1
- package/dist/address/polkadot.d.ts +0 -5
- package/dist/address/polkadot.d.ts.map +1 -1
- package/dist/address/polkadot.js +2 -6
- package/dist/address/polkadot.js.map +1 -1
- package/dist/address/ton.d.ts +0 -6
- package/dist/address/ton.d.ts.map +1 -1
- package/dist/address/ton.js +3 -8
- package/dist/address/ton.js.map +1 -1
- package/dist/api/index.d.ts +0 -19
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +18 -37
- package/dist/api/index.js.map +1 -1
- package/dist/atomic-swap/drive.d.ts +0 -13
- package/dist/atomic-swap/drive.d.ts.map +1 -1
- package/dist/atomic-swap/drive.js +72 -114
- package/dist/atomic-swap/drive.js.map +1 -1
- package/dist/atomic-swap/extract.d.ts +0 -23
- package/dist/atomic-swap/extract.d.ts.map +1 -1
- package/dist/atomic-swap/extract.js +6 -16
- package/dist/atomic-swap/extract.js.map +1 -1
- package/dist/atomic-swap/index.d.ts +0 -7
- package/dist/atomic-swap/index.d.ts.map +1 -1
- package/dist/atomic-swap/index.js +1 -7
- package/dist/atomic-swap/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/errors.js +5 -20
- package/dist/atomic-swap/monero-sweep/errors.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.d.ts +1 -13
- package/dist/atomic-swap/monero-sweep/index.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/index.js +36 -65
- package/dist/atomic-swap/monero-sweep/index.js.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts +0 -4
- package/dist/atomic-swap/monero-sweep/ring-select.d.ts.map +1 -1
- package/dist/atomic-swap/monero-sweep/ring-select.js +9 -21
- package/dist/atomic-swap/monero-sweep/ring-select.js.map +1 -1
- package/dist/atomic-swap/presign.d.ts +0 -63
- package/dist/atomic-swap/presign.d.ts.map +1 -1
- package/dist/atomic-swap/presign.js +30 -90
- package/dist/atomic-swap/presign.js.map +1 -1
- package/dist/atomic-swap/refund.d.ts +0 -18
- package/dist/atomic-swap/refund.d.ts.map +1 -1
- package/dist/atomic-swap/refund.js +16 -32
- package/dist/atomic-swap/refund.js.map +1 -1
- package/dist/atomic-swap/run.d.ts +0 -17
- package/dist/atomic-swap/run.d.ts.map +1 -1
- package/dist/atomic-swap/run.js +11 -25
- package/dist/atomic-swap/run.js.map +1 -1
- package/dist/atomic-swap/snapshot.d.ts +0 -30
- package/dist/atomic-swap/snapshot.d.ts.map +1 -1
- package/dist/atomic-swap/snapshot.js +8 -23
- package/dist/atomic-swap/snapshot.js.map +1 -1
- package/dist/atomic-swap/submit-encsig.d.ts +0 -7
- package/dist/atomic-swap/submit-encsig.d.ts.map +1 -1
- package/dist/atomic-swap/submit-encsig.js +8 -15
- package/dist/atomic-swap/submit-encsig.js.map +1 -1
- package/dist/atomic-swap/types.d.ts +2 -55
- package/dist/atomic-swap/types.d.ts.map +1 -1
- package/dist/atomic-swap/types.js +2 -3
- package/dist/atomic-swap/types.js.map +1 -1
- package/dist/blockchain/quorum-provider.d.ts +0 -15
- package/dist/blockchain/quorum-provider.d.ts.map +1 -1
- package/dist/blockchain/quorum-provider.js +7 -9
- package/dist/blockchain/quorum-provider.js.map +1 -1
- package/dist/cooperative-redeem.d.ts +5 -14
- package/dist/cooperative-redeem.d.ts.map +1 -1
- package/dist/cooperative-redeem.js +3 -20
- package/dist/cooperative-redeem.js.map +1 -1
- package/dist/engine/blockchain-querier.d.ts +0 -22
- package/dist/engine/blockchain-querier.d.ts.map +1 -1
- package/dist/engine/engine-state.d.ts +0 -8
- package/dist/engine/engine-state.d.ts.map +1 -1
- package/dist/engine/engine-state.js.map +1 -1
- package/dist/engine/flow-context.d.ts +0 -20
- package/dist/engine/flow-context.d.ts.map +1 -1
- package/dist/engine/flow-context.js +17 -41
- package/dist/engine/flow-context.js.map +1 -1
- package/dist/engine/flows/atomic-flow-state.d.ts +8 -1
- package/dist/engine/flows/atomic-flow-state.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.d.ts +1 -28
- package/dist/engine/flows/atomic-flow.d.ts.map +1 -1
- package/dist/engine/flows/atomic-flow.js +98 -128
- package/dist/engine/flows/atomic-flow.js.map +1 -1
- package/dist/engine/flows/error-routing.d.ts +11 -0
- package/dist/engine/flows/error-routing.d.ts.map +1 -0
- package/dist/engine/flows/error-routing.js +17 -0
- package/dist/engine/flows/error-routing.js.map +1 -0
- package/dist/engine/flows/swap-flow.d.ts +0 -19
- package/dist/engine/flows/swap-flow.d.ts.map +1 -1
- package/dist/engine/flows/swap-flow.js +41 -83
- package/dist/engine/flows/swap-flow.js.map +1 -1
- package/dist/engine/miradex-engine.d.ts +1 -62
- package/dist/engine/miradex-engine.d.ts.map +1 -1
- package/dist/engine/miradex-engine.js +18 -50
- package/dist/engine/miradex-engine.js.map +1 -1
- package/dist/engine/pipeline.d.ts +0 -11
- package/dist/engine/pipeline.d.ts.map +1 -1
- package/dist/engine/pipeline.js +11 -21
- package/dist/engine/pipeline.js.map +1 -1
- package/dist/engine/platform.d.ts +0 -160
- package/dist/engine/platform.d.ts.map +1 -1
- package/dist/engine/platform.js +2 -0
- package/dist/engine/platform.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/interfaces/blockchain.d.ts +1 -13
- package/dist/interfaces/blockchain.d.ts.map +1 -1
- package/dist/interfaces/blockchain.js +1 -0
- package/dist/interfaces/blockchain.js.map +1 -1
- package/dist/interfaces/logger.d.ts +0 -6
- package/dist/interfaces/logger.d.ts.map +1 -1
- package/dist/interfaces/logger.js.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.d.ts +0 -23
- package/dist/lib/bitcoin/deposit-watcher.d.ts.map +1 -1
- package/dist/lib/bitcoin/deposit-watcher.js +7 -31
- package/dist/lib/bitcoin/deposit-watcher.js.map +1 -1
- package/dist/lib/bitcoin/script-hash.d.ts.map +1 -1
- package/dist/lib/bitcoin/script-hash.js +2 -6
- package/dist/lib/bitcoin/script-hash.js.map +1 -1
- package/dist/lib/bitcoin/sweep.d.ts +0 -30
- package/dist/lib/bitcoin/sweep.d.ts.map +1 -1
- package/dist/lib/bitcoin/sweep.js +11 -40
- package/dist/lib/bitcoin/sweep.js.map +1 -1
- package/dist/lib/bitcoin/tx-verify.d.ts +0 -28
- package/dist/lib/bitcoin/tx-verify.d.ts.map +1 -1
- package/dist/lib/bitcoin/tx-verify.js +20 -61
- package/dist/lib/bitcoin/tx-verify.js.map +1 -1
- package/dist/lib/bitcoin/wallet.d.ts +0 -38
- package/dist/lib/bitcoin/wallet.d.ts.map +1 -1
- package/dist/lib/bitcoin/wallet.js +13 -38
- package/dist/lib/bitcoin/wallet.js.map +1 -1
- package/dist/lib/crypto/bytes.d.ts +0 -14
- package/dist/lib/crypto/bytes.d.ts.map +1 -1
- package/dist/lib/crypto/bytes.js +5 -14
- package/dist/lib/crypto/bytes.js.map +1 -1
- package/dist/lib/crypto/errors.d.ts +0 -5
- package/dist/lib/crypto/errors.d.ts.map +1 -1
- package/dist/lib/crypto/errors.js +2 -5
- package/dist/lib/crypto/errors.js.map +1 -1
- package/dist/lib/crypto/libp2p-identity.d.ts +0 -15
- package/dist/lib/crypto/libp2p-identity.d.ts.map +1 -1
- package/dist/lib/crypto/libp2p-identity.js +16 -28
- package/dist/lib/crypto/libp2p-identity.js.map +1 -1
- package/dist/lib/crypto/mnemonic.d.ts +0 -9
- package/dist/lib/crypto/mnemonic.d.ts.map +1 -1
- package/dist/lib/crypto/mnemonic.js +11 -27
- package/dist/lib/crypto/mnemonic.js.map +1 -1
- package/dist/lib/crypto/platform.d.ts +0 -6
- package/dist/lib/crypto/platform.d.ts.map +1 -1
- package/dist/lib/crypto/platform.js +2 -6
- package/dist/lib/crypto/platform.js.map +1 -1
- package/dist/lib/crypto/scalars.d.ts +0 -23
- package/dist/lib/crypto/scalars.d.ts.map +1 -1
- package/dist/lib/crypto/scalars.js +10 -23
- package/dist/lib/crypto/scalars.js.map +1 -1
- package/dist/lib/crypto/types.d.ts +0 -4
- package/dist/lib/crypto/types.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.d.ts +0 -23
- package/dist/lib/crypto/wasm.d.ts.map +1 -1
- package/dist/lib/crypto/wasm.js +9 -16
- package/dist/lib/crypto/wasm.js.map +1 -1
- package/dist/lib/default-config.d.ts +1 -59
- package/dist/lib/default-config.d.ts.map +1 -1
- package/dist/lib/default-config.js +22 -61
- package/dist/lib/default-config.js.map +1 -1
- package/dist/lib/errors.d.ts +0 -54
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +12 -35
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/keystore.d.ts +0 -24
- package/dist/lib/keystore.d.ts.map +1 -1
- package/dist/lib/keystore.js +3 -10
- package/dist/lib/keystore.js.map +1 -1
- package/dist/lib/monero/output-scanner.d.ts +0 -18
- package/dist/lib/monero/output-scanner.d.ts.map +1 -1
- package/dist/lib/monero/output-scanner.js +17 -40
- package/dist/lib/monero/output-scanner.js.map +1 -1
- package/dist/lib/monero/rpc.d.ts +0 -64
- package/dist/lib/monero/rpc.d.ts.map +1 -1
- package/dist/lib/monero/rpc.js +17 -59
- package/dist/lib/monero/rpc.js.map +1 -1
- package/dist/lib/monero/verify-lock.d.ts +0 -12
- package/dist/lib/monero/verify-lock.d.ts.map +1 -1
- package/dist/lib/monero/verify-lock.js +9 -24
- package/dist/lib/monero/verify-lock.js.map +1 -1
- package/dist/lib/monero/verify-sweep.d.ts +0 -20
- package/dist/lib/monero/verify-sweep.d.ts.map +1 -1
- package/dist/lib/monero/verify-sweep.js +7 -25
- package/dist/lib/monero/verify-sweep.js.map +1 -1
- package/dist/lib/pow-solver.d.ts.map +1 -1
- package/dist/lib/pow-solver.js +3 -8
- package/dist/lib/pow-solver.js.map +1 -1
- package/dist/lib/retry.d.ts +7 -64
- package/dist/lib/retry.d.ts.map +1 -1
- package/dist/lib/retry.js +13 -13
- package/dist/lib/retry.js.map +1 -1
- package/dist/portable.d.ts.map +1 -1
- package/dist/portable.js +3 -4
- package/dist/portable.js.map +1 -1
- package/dist/quote-binding.d.ts +0 -13
- package/dist/quote-binding.d.ts.map +1 -1
- package/dist/quote-binding.js +3 -18
- package/dist/quote-binding.js.map +1 -1
- package/dist/swap-executor.d.ts +1 -5
- package/dist/swap-executor.d.ts.map +1 -1
- package/dist/swap-executor.js +1 -1
- package/dist/swap-executor.js.map +1 -1
- package/dist/types/api.d.ts +0 -6
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/api.js +6 -9
- package/dist/types/api.js.map +1 -1
- package/dist/types/errors.d.ts +0 -7
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +2 -7
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/keys.d.ts +0 -15
- package/dist/types/keys.d.ts.map +1 -1
- package/dist/types/protocol.d.ts +0 -51
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +3 -8
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/status.d.ts +2 -0
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/status.js +17 -14
- package/dist/types/status.js.map +1 -1
- package/dist/types/verification.d.ts +0 -10
- package/dist/types/verification.d.ts.map +1 -1
- package/dist/types/verification.js +7 -15
- package/dist/types/verification.js.map +1 -1
- package/dist/verification/chainflip-networks.d.ts +2 -35
- package/dist/verification/chainflip-networks.d.ts.map +1 -1
- package/dist/verification/chainflip-networks.js +12 -4
- package/dist/verification/chainflip-networks.js.map +1 -1
- package/dist/verification/chainflip.d.ts +0 -40
- package/dist/verification/chainflip.d.ts.map +1 -1
- package/dist/verification/chainflip.js +49 -129
- package/dist/verification/chainflip.js.map +1 -1
- package/dist/verification/constants.d.ts +0 -40
- package/dist/verification/constants.d.ts.map +1 -1
- package/dist/verification/constants.js +14 -40
- package/dist/verification/constants.js.map +1 -1
- package/dist/verification/index.d.ts +0 -26
- package/dist/verification/index.d.ts.map +1 -1
- package/dist/verification/index.js +8 -12
- package/dist/verification/index.js.map +1 -1
- package/dist/verification/memo.d.ts +0 -15
- package/dist/verification/memo.d.ts.map +1 -1
- package/dist/verification/memo.js +9 -27
- package/dist/verification/memo.js.map +1 -1
- package/dist/verification/near-intents.d.ts +0 -63
- package/dist/verification/near-intents.d.ts.map +1 -1
- package/dist/verification/near-intents.js +25 -67
- package/dist/verification/near-intents.js.map +1 -1
- package/dist/verification/rate-oracle.d.ts +0 -22
- package/dist/verification/rate-oracle.d.ts.map +1 -1
- package/dist/verification/rate-oracle.js +6 -11
- package/dist/verification/rate-oracle.js.map +1 -1
- package/dist/verification/thorchain-networks.d.ts +0 -27
- package/dist/verification/thorchain-networks.d.ts.map +1 -1
- package/dist/verification/thorchain-networks.js +13 -15
- package/dist/verification/thorchain-networks.js.map +1 -1
- package/dist/verification/thorchain.d.ts +0 -30
- package/dist/verification/thorchain.d.ts.map +1 -1
- package/dist/verification/thorchain.js +24 -47
- package/dist/verification/thorchain.js.map +1 -1
- package/dist/wasm-pins.d.ts +3 -3
- package/dist/wasm-pins.js +1 -1
- package/dist/wire/near-intents.zod.d.ts +0 -27
- package/dist/wire/near-intents.zod.d.ts.map +1 -1
- package/dist/wire/near-intents.zod.js +15 -23
- package/dist/wire/near-intents.zod.js.map +1 -1
- package/dist/wire/server/action.zod.d.ts +0 -10
- package/dist/wire/server/action.zod.d.ts.map +1 -1
- package/dist/wire/server/action.zod.js +8 -14
- package/dist/wire/server/action.zod.js.map +1 -1
- package/dist/wire/server/common.zod.d.ts +0 -13
- package/dist/wire/server/common.zod.d.ts.map +1 -1
- package/dist/wire/server/common.zod.js +6 -14
- package/dist/wire/server/common.zod.js.map +1 -1
- package/dist/wire/server/quotes.zod.d.ts +35 -20
- package/dist/wire/server/quotes.zod.d.ts.map +1 -1
- package/dist/wire/server/quotes.zod.js +1 -0
- package/dist/wire/server/quotes.zod.js.map +1 -1
- package/dist/wire/server/swap.zod.d.ts +0 -42
- package/dist/wire/server/swap.zod.d.ts.map +1 -1
- package/dist/wire/server/swap.zod.js +12 -26
- package/dist/wire/server/swap.zod.js.map +1 -1
- package/dist/wire/thorchain.zod.d.ts +0 -8
- package/dist/wire/thorchain.zod.d.ts.map +1 -1
- package/dist/wire/thorchain.zod.js +3 -8
- package/dist/wire/thorchain.zod.js.map +1 -1
- package/package.json +4 -4
- package/wasm/miradex-rust/README.md +3 -4
- package/wasm/miradex-rust/miradex_rust.d.ts +4 -6
- package/wasm/miradex-rust/miradex_rust.js +4 -6
- package/wasm/miradex-rust/miradex_rust_bg.wasm +0 -0
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* Two classes of error are retryable:
|
|
7
|
-
*
|
|
8
|
-
* 1. **Transient transport** — `fetch failed`, `timeout`, multi-node
|
|
9
|
-
* exhaustion, HTTP 5xx. These resolve when the upstream node recovers
|
|
10
|
-
* or another node is reached.
|
|
11
|
-
*
|
|
12
|
-
* 2. **Daemon-rejected `invalid_input` / `failed` flags** — monerod sets
|
|
13
|
-
* these when a ring member is locked, has torsion, or fails the
|
|
14
|
-
* key-image quorum check. Re-rolling the ring (which our retry path
|
|
15
|
-
* does) typically fixes the next attempt.
|
|
16
|
-
*
|
|
17
|
-
* Permanent client-side errors (commitment mismatch, schema invalid,
|
|
18
|
-
* verification failures) deliberately stay non-retryable — they will never
|
|
19
|
-
* resolve by re-trying with a different ring.
|
|
20
|
-
*/
|
|
1
|
+
// Retry classifier for sweepMonero. Two classes count as retryable:
|
|
2
|
+
// 1. transient transport (fetch/timeout/5xx/multi-node exhaustion)
|
|
3
|
+
// 2. monerod invalid_input / failed (locked ring member, torsion, key-image
|
|
4
|
+
// quorum) - a fresh ring typically resolves these
|
|
5
|
+
// Commitment / schema / verification errors stay non-retryable.
|
|
21
6
|
const RETRYABLE_PATTERNS = [
|
|
22
7
|
'fetch failed',
|
|
23
8
|
'terminated',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/errors.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,qEAAqE;AACrE,8EAA8E;AAC9E,uDAAuD;AACvD,gEAAgE;AAChE,MAAM,kBAAkB,GAAsB;IAC5C,cAAc;IACd,YAAY;IACZ,cAAc;IACd,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,QAAQ;IACR,eAAe;IACf,gBAAgB;IAChB,WAAW;IACX,QAAQ;CACT,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -4,25 +4,13 @@ export interface SweepParams {
|
|
|
4
4
|
readonly swapId: string;
|
|
5
5
|
readonly s_b: Uint8Array;
|
|
6
6
|
readonly receiveAddress: string;
|
|
7
|
-
/**
|
|
8
|
-
* Alice's 32-byte ed25519 public spend key (hex), used to prove sidecar
|
|
9
|
-
* honesty: `s_a * G == S_a_monero` must hold before sweep begins (Fix 3 /
|
|
10
|
-
* AV-invariant C.5).
|
|
11
|
-
*/
|
|
12
7
|
readonly expectedSAMonero: string;
|
|
13
8
|
/** Override the monerod nodes used for RPC calls. */
|
|
14
9
|
readonly monerodNodes?: readonly string[];
|
|
15
|
-
/**
|
|
16
|
-
* Override the unlock window passed to the gamma decoy picker. Defaults
|
|
17
|
-
* to wallet2's `DEFAULT_LOCK_WINDOW` of 10 blocks, which matches mainnet
|
|
18
|
-
* behaviour and lets the post-pick `unlocked` validation re-roll the rare
|
|
19
|
-
* locked-coinbase decoy. Set to 60 (`CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW`)
|
|
20
|
-
* on chains where every output is a coinbase (regtest, freshly-bootstrapped
|
|
21
|
-
* testnets) so the picker stays entirely inside the unlocked region.
|
|
22
|
-
*/
|
|
23
10
|
readonly unlockWindowBlocks?: number;
|
|
24
11
|
readonly onProgress?: (stage: string, detail?: string) => void;
|
|
25
12
|
readonly logger?: Logger;
|
|
13
|
+
readonly signal?: AbortSignal;
|
|
26
14
|
}
|
|
27
15
|
export interface SweepResult {
|
|
28
16
|
readonly txHash: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AA+DpD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAGhC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAI1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAoBD,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAwH3F"}
|
|
@@ -1,30 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* After the maker redeems BTC, the server reveals s_a (its key share).
|
|
5
|
-
* This module combines s_a + s_b to derive the full Monero spend key,
|
|
6
|
-
* fetches the lock transaction directly from public monerod nodes,
|
|
7
|
-
* selects decoys, builds construction data, signs via WASM, and
|
|
8
|
-
* broadcasts the raw transaction — all without server involvement
|
|
9
|
-
* beyond the initial key share retrieval.
|
|
10
|
-
*
|
|
11
|
-
* The private key s_b never leaves this process.
|
|
12
|
-
*/
|
|
1
|
+
// XMR sweep, fully client-side. Server gives us s_a after Alice redeems BTC;
|
|
2
|
+
// we combine s_a + s_b for the spend key, scan + decoy + sign + broadcast
|
|
3
|
+
// against a public monerod quorum. s_b never leaves the process.
|
|
13
4
|
import { Point } from '@noble/ed25519';
|
|
14
5
|
import { bytesToHex } from '@noble/hashes/utils.js';
|
|
15
6
|
import { noopLogger } from '../../interfaces/logger.js';
|
|
16
7
|
import { delay } from '../../lib/delay.js';
|
|
17
8
|
import { VerificationError } from '../../types/index.js';
|
|
9
|
+
import { SwapCancelledError } from '../types.js';
|
|
18
10
|
import { addScalars, hexToBytes, bytesToHex as scalarBytesToHex, bytesToBigInt, } from '../../lib/crypto/scalars.js';
|
|
19
11
|
import { wipe } from '../../lib/crypto/bytes.js';
|
|
20
12
|
import { ensureWasm, deriveKeyImages, signSweepTx, selectDecoys, computeCommitmentMask, decryptAmount, verifyCommitment, } from '../../lib/crypto/wasm.js';
|
|
21
13
|
import { verifySweepTx } from '../../lib/monero/verify-sweep.js';
|
|
22
14
|
import { scanTransactionOutputs, hexToScalar } from '../../lib/monero/output-scanner.js';
|
|
23
15
|
import { fetchTransaction, fetchOutputKeys, fetchOutputDistribution, fetchFeeEstimate, broadcastTransaction, MAINNET_NODES, STAGENET_NODES, } from '../../lib/monero/rpc.js';
|
|
24
|
-
|
|
25
|
-
* Normalise both the snake_case (s_a_hex) and camelCase (sAHex) shapes the
|
|
26
|
-
* sidecar may emit into one strongly-typed record. Unknown fields are dropped.
|
|
27
|
-
*/
|
|
16
|
+
// Sidecar emits both snake_case and camelCase; pick whichever is present.
|
|
28
17
|
function parseSweepOutputs(pd) {
|
|
29
18
|
if (!pd || typeof pd !== 'object') {
|
|
30
19
|
return { sAHex: undefined, vHex: undefined, lockTxHash: undefined, lockAddress: undefined, serverReceiveAddr: undefined };
|
|
@@ -46,40 +35,38 @@ function parseSweepOutputs(pd) {
|
|
|
46
35
|
serverReceiveAddr: pick('receive_address', 'receiveAddress'),
|
|
47
36
|
};
|
|
48
37
|
}
|
|
49
|
-
const SWEEP_SYNC_TIMEOUT_MS = 120_000;
|
|
50
38
|
const SWEEP_RETRY_INTERVAL_MS = 15_000;
|
|
51
39
|
const SWEEP_ACTION_TIMEOUT_MS = 120_000;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
* caused by unlucky decoy selection. */
|
|
40
|
+
// Covers transient monerod failures and intermittent invalid_input from
|
|
41
|
+
// unlucky decoy selection.
|
|
55
42
|
const SWEEP_MAX_ATTEMPTS = 15;
|
|
56
|
-
|
|
43
|
+
// Doubles per attempt, capped at 60s.
|
|
57
44
|
const SWEEP_RETRY_BASE_MS = 5_000;
|
|
58
|
-
|
|
59
|
-
* Measured from actual signed transactions: ~3200 bytes. */
|
|
45
|
+
// 1-in/2-out CLSAG + BP+, ring size 16. Measured ~3200 bytes from real txs.
|
|
60
46
|
const ESTIMATED_TX_SIZE = 3200;
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
// Monero "normal" priority default from cryptonote_config.h; used when
|
|
48
|
+
// get_fee_estimate RPC is unavailable.
|
|
63
49
|
const FALLBACK_FEE_PER_BYTE = 23_000;
|
|
64
|
-
|
|
50
|
+
// CLSAG + BP+ on current mainnet.
|
|
65
51
|
const RING_SIZE = 16;
|
|
66
52
|
import { validateRingMembers } from './ring-select.js';
|
|
67
53
|
import { isRetryableSweepError } from './errors.js';
|
|
68
54
|
export async function sweepMonero(api, params) {
|
|
69
|
-
const { swapId, s_b, receiveAddress, onProgress, logger: log = noopLogger } = params;
|
|
55
|
+
const { swapId, s_b, receiveAddress, onProgress, logger: log = noopLogger, signal } = params;
|
|
70
56
|
onProgress?.('Loading sweep module...');
|
|
71
57
|
log.info({ swapId }, 'Sweep: loading monero-sweep-wasm');
|
|
72
58
|
await ensureWasm();
|
|
73
59
|
log.info({ swapId }, 'Sweep: WASM module loaded');
|
|
74
60
|
onProgress?.('Loading sweep data from server...');
|
|
75
61
|
log.info({ swapId }, 'Sweep step 1: requesting redemption keys from server');
|
|
76
|
-
const syncStart = Date.now();
|
|
77
62
|
let sAHex;
|
|
78
63
|
let vHex;
|
|
79
64
|
let lockTxHash;
|
|
80
65
|
let lockAddress;
|
|
81
66
|
let serverReceiveAddr;
|
|
82
67
|
while (true) {
|
|
68
|
+
if (signal?.aborted)
|
|
69
|
+
throw new SwapCancelledError();
|
|
83
70
|
const outputsAction = await api.executeAction(swapId, { type: 'get-outputs' }, SWEEP_ACTION_TIMEOUT_MS);
|
|
84
71
|
const sweepData = parseSweepOutputs(outputsAction.protocolData);
|
|
85
72
|
sAHex = sweepData.sAHex;
|
|
@@ -89,13 +76,9 @@ export async function sweepMonero(api, params) {
|
|
|
89
76
|
serverReceiveAddr = sweepData.serverReceiveAddr;
|
|
90
77
|
if (sAHex && vHex && lockTxHash)
|
|
91
78
|
break;
|
|
92
|
-
if (Date.now() - syncStart >= SWEEP_SYNC_TIMEOUT_MS) {
|
|
93
|
-
log.error({ swapId, elapsed: Date.now() - syncStart }, 'Sweep key retrieval timed out');
|
|
94
|
-
throw new Error('Sweep key retrieval timed out');
|
|
95
|
-
}
|
|
96
79
|
onProgress?.('Waiting for sweep data...');
|
|
97
|
-
log.debug({ swapId,
|
|
98
|
-
await delay(SWEEP_RETRY_INTERVAL_MS);
|
|
80
|
+
log.debug({ swapId, hasSA: !!sAHex, hasV: !!vHex, hasHash: !!lockTxHash }, 'Not ready, retrying');
|
|
81
|
+
await delay(SWEEP_RETRY_INTERVAL_MS, signal);
|
|
99
82
|
}
|
|
100
83
|
if (!lockAddress)
|
|
101
84
|
throw new Error('Server did not return monero_lock_address');
|
|
@@ -103,9 +86,8 @@ export async function sweepMonero(api, params) {
|
|
|
103
86
|
throw new Error('Receive address mismatch — keystore and server disagree on XMR destination');
|
|
104
87
|
}
|
|
105
88
|
const s_a = hexToBytes(sAHex);
|
|
106
|
-
// AV-
|
|
107
|
-
//
|
|
108
|
-
// silently produces a tx that cannot spend the joint output.
|
|
89
|
+
// AV-C.5: sidecar's s_a must multiply to S_a_monero before we combine with
|
|
90
|
+
// s_b. Wrong s_a silently signs an unspendable sweep.
|
|
109
91
|
{
|
|
110
92
|
const s_aScalar = bytesToBigInt(s_a);
|
|
111
93
|
const s_aPoint = Point.BASE.multiply(s_aScalar);
|
|
@@ -124,7 +106,6 @@ export async function sweepMonero(api, params) {
|
|
|
124
106
|
const spendPubScalar = hexToScalar(spendKeyHex);
|
|
125
107
|
const spendPub = Point.BASE.multiply(spendPubScalar);
|
|
126
108
|
const spendPubHex = bytesToHex(spendPub.toBytes());
|
|
127
|
-
// Detect network from lock address prefix
|
|
128
109
|
const isMainnet = lockAddress.startsWith('4');
|
|
129
110
|
const monerodConfig = {
|
|
130
111
|
nodes: params.monerodNodes ?? (isMainnet ? [...MAINNET_NODES] : [...STAGENET_NODES]),
|
|
@@ -137,8 +118,7 @@ export async function sweepMonero(api, params) {
|
|
|
137
118
|
network: isMainnet ? 'mainnet' : 'stagenet',
|
|
138
119
|
nodeCount: monerodConfig.nodes.length,
|
|
139
120
|
}, 'Sweep step 1 complete: keys received, scanning lock tx');
|
|
140
|
-
// Retry
|
|
141
|
-
// (caused by unlucky decoy selection on stagenet).
|
|
121
|
+
// Retry transient network failures and the unlucky-decoy invalid_input.
|
|
142
122
|
let lastSweepError;
|
|
143
123
|
for (let attempt = 0; attempt < SWEEP_MAX_ATTEMPTS; attempt++) {
|
|
144
124
|
try {
|
|
@@ -167,8 +147,7 @@ export async function sweepMonero(api, params) {
|
|
|
167
147
|
}
|
|
168
148
|
throw lastSweepError ?? new Error('Sweep failed after all attempts');
|
|
169
149
|
}
|
|
170
|
-
|
|
171
|
-
/** Steps 2–5: fetch lock tx → select decoys → sign → broadcast. */
|
|
150
|
+
// Steps 2-5: fetch lock tx, select decoys, sign, broadcast.
|
|
172
151
|
async function sweepScanSignBroadcast(ctx) {
|
|
173
152
|
const { swapId, monerodConfig, lockTxHash, viewKeyHex, spendKeyHex, spendPubHex, receiveAddress, api, log, onProgress, unlockWindowBlocks, } = ctx;
|
|
174
153
|
const buildDecoyInput = (distribution) => JSON.stringify(unlockWindowBlocks === undefined
|
|
@@ -209,10 +188,9 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
209
188
|
}, 'Sweep step 2 complete: real output found');
|
|
210
189
|
onProgress?.('Selecting decoys...');
|
|
211
190
|
log.info({ swapId }, 'Sweep step 3: selecting decoys via WASM');
|
|
212
|
-
// Fetch cumulative output distribution for gamma selection
|
|
213
191
|
const distribution = await fetchOutputDistribution(monerodConfig);
|
|
214
192
|
log.info({ swapId, distributionLen: distribution.length }, 'Output distribution fetched');
|
|
215
|
-
//
|
|
193
|
+
// wallet2-matching gamma decoy selection in WASM.
|
|
216
194
|
const decoyResultJson = selectDecoys(realOutput.globalOutputIndex, buildDecoyInput(distribution), RING_SIZE);
|
|
217
195
|
const decoyResult = JSON.parse(decoyResultJson);
|
|
218
196
|
log.info({
|
|
@@ -221,15 +199,12 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
221
199
|
realIndexInRing: decoyResult.real_index_in_ring,
|
|
222
200
|
firstIndices: decoyResult.indices.slice(0, 4).map(String),
|
|
223
201
|
}, 'Decoys selected');
|
|
224
|
-
// Fetch ring
|
|
225
|
-
//
|
|
226
|
-
//
|
|
227
|
-
// and
|
|
228
|
-
//
|
|
229
|
-
//
|
|
230
|
-
// members per ring. Each retry is one monerod RPC + WASM decoy re-pick
|
|
231
|
-
// (~5ms), so 50 attempts per outer call is still under a second. Mainnet
|
|
232
|
-
// chains rarely need more than a couple of retries.
|
|
202
|
+
// Fetch ring members from monerod, validate (reject torsion/identity per
|
|
203
|
+
// wallet2 select_n), re-pick on any invalid slot. Cap is 50 because
|
|
204
|
+
// regtest's auto-miner spits out immature coinbase outputs at the chain
|
|
205
|
+
// tip and the gamma picker is recency-biased — a fresh draw can land
|
|
206
|
+
// several immature members per ring. ~5ms per retry, so 50 stays under 1s.
|
|
207
|
+
// Mainnet rarely needs more than a few.
|
|
233
208
|
onProgress?.('Fetching ring member keys...');
|
|
234
209
|
const MAX_RING_RETRIES = 50;
|
|
235
210
|
let currentDecoyResult = decoyResult;
|
|
@@ -254,7 +229,7 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
254
229
|
}
|
|
255
230
|
const finalDecoyResult = currentDecoyResult;
|
|
256
231
|
log.info({ swapId, ringMemberCount: ringMemberKeys.length }, 'Ring member keys fetched (all valid)');
|
|
257
|
-
//
|
|
232
|
+
// Sanity-check our commitment against on-chain.
|
|
258
233
|
const realRingMember = ringMemberKeys[finalDecoyResult.real_index_in_ring];
|
|
259
234
|
if (realRingMember) {
|
|
260
235
|
const commitmentMatch = verifyCommitment(viewKeyHex, realOutput.txPublicKey, realOutput.outputIndex, realOutput.amount, realRingMember.mask);
|
|
@@ -272,7 +247,7 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
272
247
|
'The sweep transaction would be rejected.');
|
|
273
248
|
}
|
|
274
249
|
}
|
|
275
|
-
//
|
|
250
|
+
// Mempool-adjusted fee from monerod (Feather wallet does the same).
|
|
276
251
|
let feePerByte = FALLBACK_FEE_PER_BYTE;
|
|
277
252
|
let quantizationMask = 10_000;
|
|
278
253
|
try {
|
|
@@ -284,7 +259,6 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
284
259
|
catch (err) {
|
|
285
260
|
log.warn({ swapId, error: err instanceof Error ? err.message : String(err) }, 'Fee estimate failed, using fallback');
|
|
286
261
|
}
|
|
287
|
-
// Fee = fee_per_byte * estimated_tx_size, rounded up to quantization mask
|
|
288
262
|
let networkFee = feePerByte * ESTIMATED_TX_SIZE;
|
|
289
263
|
if (quantizationMask > 0) {
|
|
290
264
|
networkFee = Math.ceil(networkFee / quantizationMask) * quantizationMask;
|
|
@@ -345,14 +319,13 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
345
319
|
fee: verification.fee,
|
|
346
320
|
amountXmr: (Number(BigInt(verification.amount)) / 1e12).toFixed(12),
|
|
347
321
|
}, 'Sweep tx verified — signing via WASM');
|
|
348
|
-
//
|
|
322
|
+
// sign_sweep_tx needs key images precomputed.
|
|
349
323
|
onProgress?.('Signing sweep transaction...');
|
|
350
324
|
const keyImagesJson = deriveKeyImages(JSON.stringify([structuredOutput]), viewKeyHex, spendKeyHex);
|
|
351
325
|
log.debug({ swapId, keyImagesJson: keyImagesJson.slice(0, 60) + '...' }, 'Key images derived');
|
|
352
|
-
// Sign
|
|
353
326
|
const rawTxHex = signSweepTx(JSON.stringify(constructionData), spendKeyHex, viewKeyHex);
|
|
354
327
|
log.info({ swapId, rawTxLen: rawTxHex.length, rawTxPrefix: rawTxHex.slice(0, 32) + '...' }, 'Transaction signed');
|
|
355
|
-
//
|
|
328
|
+
// Dump full construction data so an invalid_input rejection is debuggable.
|
|
356
329
|
log.info({
|
|
357
330
|
swapId,
|
|
358
331
|
realOutput: {
|
|
@@ -371,22 +344,20 @@ async function sweepScanSignBroadcast(ctx) {
|
|
|
371
344
|
fee: constructionData.fee,
|
|
372
345
|
destinationAmount: constructionData.destination.amount,
|
|
373
346
|
}, 'Sweep diagnostic: full construction data');
|
|
374
|
-
//
|
|
347
|
+
// Full signed tx, in case broadcast fails and someone wants to decode it.
|
|
375
348
|
log.debug({ swapId, rawTxHex }, 'Full signed transaction hex');
|
|
376
349
|
onProgress?.('Broadcasting sweep transaction...');
|
|
377
350
|
log.info({ swapId }, 'Sweep step 5: broadcasting to monerod');
|
|
378
351
|
const broadcastResult = await broadcastTransaction(monerodConfig, rawTxHex);
|
|
379
352
|
if (broadcastResult.alreadySpent) {
|
|
380
|
-
// Key image
|
|
381
|
-
// Only we have the spend key, so this is our own prior transaction.
|
|
353
|
+
// Key image is ours (only we hold the spend key); we already broadcast.
|
|
382
354
|
log.info({ swapId }, 'Sweep tx already broadcast (double_spend) — prior attempt succeeded');
|
|
383
355
|
}
|
|
384
356
|
else {
|
|
385
357
|
log.info({ swapId, txHash: broadcastResult.txHash, status: broadcastResult.status }, 'Sweep tx broadcast to network');
|
|
386
358
|
}
|
|
387
|
-
// Notify server
|
|
388
|
-
//
|
|
389
|
-
// Retry a few times — without this the swap stays in 'sending' forever.
|
|
359
|
+
// Notify server so the DB status flips to 'completed' and the poll loop
|
|
360
|
+
// stops triggering duplicate sweeps. Without it the swap stays in 'sending'.
|
|
390
361
|
const sweepTxHash = broadcastResult.txHash || `sweep-${swapId}`;
|
|
391
362
|
for (let notifyAttempt = 0; notifyAttempt < 3; notifyAttempt++) {
|
|
392
363
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,IAAI,gBAAgB,EAC9B,aAAa,GACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EACL,UAAU,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AAWjC;;;GAGG;AACH,SAAS,iBAAiB,CAAC,EAAW;IACpC,IAAI,CAAC,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC;IAC5H,CAAC;IACD,MAAM,GAAG,GAAG,EAA6B,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAuB,EAAsB,EAAE;QAC9D,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IACF,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;QAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;QAC7D,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC7D,CAAC;AACJ,CAAC;AAiCD,MAAM,qBAAqB,GAAG,OAAO,CAAC;AACtC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AACxC;;yCAEyC;AACzC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,2EAA2E;AAC3E,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAClC;6DAC6D;AAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B;wEACwE;AACxE,MAAM,qBAAqB,GAAG,MAAM,CAAC;AACrC,oEAAoE;AACpE,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAc,EAAE,MAAmB;IACnE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAErF,UAAU,EAAE,CAAC,yBAAyB,CAAC,CAAC;IACxC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC;IACzD,MAAM,UAAU,EAAE,CAAC;IACnB,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAElD,UAAU,EAAE,CAAC,mCAAmC,CAAC,CAAC;IAClD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,sDAAsD,CAAC,CAAC;IAE7E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,KAAyB,CAAC;IAC9B,IAAI,IAAwB,CAAC;IAC7B,IAAI,UAA8B,CAAC;IACnC,IAAI,WAA+B,CAAC;IACpC,IAAI,iBAAqC,CAAC;IAE1C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,aAAa,GAAuB,MAAM,GAAG,CAAC,aAAa,CAC/D,MAAM,EACN,EAAE,IAAI,EAAE,aAAa,EAAE,EACvB,uBAAuB,CACxB,CAAC;QAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QAChE,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QACxB,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QACtB,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QAClC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACpC,iBAAiB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QAEhD,IAAI,KAAK,IAAI,IAAI,IAAI,UAAU;YAAE,MAAM;QAEvC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,qBAAqB,EAAE,CAAC;YACpD,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,EAAE,+BAA+B,CAAC,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,UAAU,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAC1C,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACnI,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/E,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,cAAc,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,yEAAyE;IACzE,yEAAyE;IACzE,6DAA6D;IAC7D,CAAC;QACC,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1E,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,iBAAiB,CACzB,gBAAgB,EAChB,mEAAmE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvC,0EAA0E;IAC1E,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,MAAM,CAAC,CAAC;IAEb,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAEnD,0CAA0C;IAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAkB;QACnC,KAAK,EAAE,MAAM,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;QACpF,MAAM,EAAE,GAAG;KACZ,CAAC;IAEF,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,UAAU;QACV,WAAW;QACX,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;QAC3C,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,MAAM;KACtC,EACD,wDAAwD,CACzD,CAAC;IAEF,qEAAqE;IACrE,mDAAmD;IACnD,IAAI,cAAuB,CAAC;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,kBAAkB,EAAE,OAAO,EAAE,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;gBAC1C,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW;gBAC1D,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU;gBACjD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;aAC9C,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,GAAG,GAAG,CAAC;YACrB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAE/C,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAC1F,WAAW;gBACT,CAAC,CAAC,+CAA+C;gBACjD,CAAC,CAAC,sCAAsC,CAC3C,CAAC;YAEF,IAAI,CAAC,WAAW;gBAAE,MAAM;YAExB,IAAI,OAAO,GAAG,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;gBACzE,UAAU,EAAE,CAAC,6BAA6B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9E,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,cAAc,IAAI,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACvE,CAAC;AAED,uFAAuF;AAEvF,mEAAmE;AACnE,KAAK,UAAU,sBAAsB,CAAC,GAYrC;IACC,MAAM,EACJ,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EACvE,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,kBAAkB,GACzD,GAAG,GAAG,CAAC;IACR,MAAM,eAAe,GAAG,CAAC,YAA+B,EAAU,EAAE,CAClE,IAAI,CAAC,SAAS,CACZ,kBAAkB,KAAK,SAAS;QAC9B,CAAC,CAAC,EAAE,YAAY,EAAE;QAClB,CAAC,CAAC,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,CAC/D,CAAC;IAEJ,UAAU,EAAE,CAAC,8BAA8B,CAAC,CAAC;IAC7C,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,6CAA6C,CAAC,CAAC;IAEhF,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAElE,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;QACvC,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,MAAM;KACjD,EACD,mCAAmC,CACpC,CAAC;IAEF,MAAM,cAAc,GAAG,sBAAsB,CAAC;QAC5C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,mBAAmB,EAAE,OAAO,CAAC,aAAa;QAC1C,UAAU;QACV,WAAW;QACX,WAAW,EAAE,qBAAqB;QAClC,eAAe,EAAE,aAAa;QAC9B,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;IAEH,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEhE,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;QACpC,SAAS,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;KACtC,EACD,0CAA0C,CAC3C,CAAC;IAEF,UAAU,EAAE,CAAC,qBAAqB,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,yCAAyC,CAAC,CAAC;IAEhE,2DAA2D;IAC3D,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAClE,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC;IAE1F,+DAA+D;IAC/D,MAAM,eAAe,GAAG,YAAY,CAClC,UAAU,CAAC,iBAAiB,EAC5B,eAAe,CAAC,YAAY,CAAC,EAC7B,SAAS,CACV,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAG7C,CAAC;IAEF,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM;QACpC,eAAe,EAAE,WAAW,CAAC,kBAAkB;QAC/C,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;KAC1D,EACD,iBAAiB,CAClB,CAAC;IAEF,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,uEAAuE;IACvE,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,oDAAoD;IACpD,UAAU,EAAE,CAAC,8BAA8B,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,IAAI,kBAAkB,GAAG,WAAW,CAAC;IACrC,IAAI,cAAc,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACtF,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,gBAAgB,EAAE,WAAW,EAAE,EAAE,CAAC;QACxE,MAAM,cAAc,GAAG,mBAAmB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;QAEvC,GAAG,CAAC,IAAI,CACN;YACE,MAAM;YACN,OAAO,EAAE,WAAW,GAAG,CAAC;YACxB,YAAY,EAAE,cAAc,CAAC,MAAM;YACnC,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACvD,EACD,wEAAwE,CACzE,CAAC;QAEF,IAAI,WAAW,KAAK,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACb,mCAAmC,gBAAgB,cAAc;gBACjE,GAAG,cAAc,CAAC,MAAM,kCAAkC,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,YAAY,CACjC,UAAU,CAAC,iBAAiB,EAC5B,eAAe,CAAC,YAAY,CAAC,EAC7B,SAAS,CACV,CAAC;QACF,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAG7C,CAAC;QACF,cAAc,GAAG,MAAM,eAAe,CAAC,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;IAE5C,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,MAAM,EAAE,EAClD,sCAAsC,CACvC,CAAC;IAEF,uDAAuD;IACvD,MAAM,cAAc,GAAG,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IAC3E,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,eAAe,GAAG,gBAAgB,CACtC,UAAU,EACV,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,WAAW,EACtB,UAAU,CAAC,MAAM,EACjB,cAAc,CAAC,IAAI,CACpB,CAAC;QACF,GAAG,CAAC,IAAI,CACN;YACE,MAAM;YACN,eAAe;YACf,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YACrD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YACrD,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE;SACrC,EACD,eAAe;YACb,CAAC,CAAC,+DAA+D;YACjE,CAAC,CAAC,2DAA2D,CAChE,CAAC;QACF,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,6FAA6F;gBAC7F,0CAA0C,CAC3C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,IAAI,UAAU,GAAG,qBAAqB,CAAC;IACvC,IAAI,gBAAgB,GAAG,MAAM,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACvD,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACjC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,oCAAoC,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACnE,qCAAqC,CACtC,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,IAAI,UAAU,GAAG,UAAU,GAAG,iBAAiB,CAAC;IAChD,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;QACzB,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;IAC3E,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAErH,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC;IAEjE,IAAI,iBAAiB,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;IAED,MAAM,gBAAgB,GAAG;QACvB,mBAAmB,EAAE,UAAU,CAAC,gBAAgB;QAChD,aAAa,EAAE,UAAU,CAAC,WAAW;QACrC,YAAY,EAAE,UAAU,CAAC,WAAW;QACpC,mBAAmB,EAAE,UAAU,CAAC,iBAAiB;QACjD,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QACjC,QAAQ,EAAE,UAAU,CAAC,OAAO;QAC5B,kBAAkB,EAAE,EAAc;QAClC,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;KACjB,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,UAAU,EAAE,EAAE,CAAC,GAAG;oBAClB,UAAU,EAAE,EAAE,CAAC,IAAI;iBACpB,CAAC,CAAC;gBACH,iBAAiB,EAAE,gBAAgB,CAAC,kBAAkB;gBACtD,WAAW,EAAE,gBAAgB;gBAC7B,WAAW,EAAE,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC;aAC3C;SACF;QACD,WAAW,EAAE;YACX,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,iBAAiB;SAC1B;QACD,GAAG,EAAE,UAAU;QACf,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM;QAC1C,iBAAiB;QACjB,UAAU;QACV,QAAQ,EAAE,cAAc,CAAC,MAAM;QAC/B,OAAO,EAAE,CAAC;KACX,EACD,yBAAyB,CAC1B,CAAC;IAEF,UAAU,EAAE,CAAC,0BAA0B,CAAC,CAAC;IACzC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,mCAAmC,CAAC,CAAC;IAE1D,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;KACpE,EACD,sCAAsC,CACvC,CAAC;IAEF,yDAAyD;IACzD,UAAU,EAAE,CAAC,8BAA8B,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,eAAe,CACnC,IAAI,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAClC,UAAU,EACV,WAAW,CACZ,CAAC;IACF,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAE/F,OAAO;IACP,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACxF,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,EACjF,oBAAoB,CACrB,CAAC;IAEF,sEAAsE;IACtE,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,UAAU,EAAE;YACV,gBAAgB,EAAE,gBAAgB,CAAC,mBAAmB;YACtD,WAAW,EAAE,gBAAgB,CAAC,aAAa;YAC3C,WAAW,EAAE,gBAAgB,CAAC,YAAY;YAC1C,iBAAiB,EAAE,gBAAgB,CAAC,mBAAmB;YACvD,MAAM,EAAE,gBAAgB,CAAC,MAAM;YAC/B,OAAO,EAAE,gBAAgB,CAAC,QAAQ;SACnC;QACD,iBAAiB,EAAE,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,GAAG;QAC3E,kBAAkB,EAAE,cAAc,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,IAAI;QAC7E,eAAe,EAAE,gBAAgB,CAAC,kBAAkB;QACpD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS;QACjD,UAAU,EAAE,gBAAgB,CAAC,OAAO;QACpC,GAAG,EAAE,gBAAgB,CAAC,GAAG;QACzB,iBAAiB,EAAE,gBAAgB,CAAC,WAAW,CAAC,MAAM;KACvD,EACD,0CAA0C,CAC3C,CAAC;IAEF,mEAAmE;IACnE,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,6BAA6B,CAAC,CAAC;IAE/D,UAAU,EAAE,CAAC,mCAAmC,CAAC,CAAC;IAClD,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,uCAAuC,CAAC,CAAC;IAE9D,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAE5E,IAAI,eAAe,CAAC,YAAY,EAAE,CAAC;QACjC,8EAA8E;QAC9E,oEAAoE;QACpE,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,EACV,qEAAqE,CACtE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,EAC1E,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC;IAChE,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,EAAE,aAAa,EAAE,EAAE,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,aAAa,CACrB,MAAM,EACN,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,EAC/C,MAAM,CACP,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,qCAAqC,CAAC,CAAC;YACjF,MAAM;QACR,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CACN,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC/F,sCAAsC,CACvC,CAAC;YACF,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC9C,UAAU,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC/B,GAAG,CAAC,IAAI,CACN;QACE,MAAM;QACN,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,YAAY,EAAE,eAAe,CAAC,YAAY;KAC3C,EACD,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,0BAA0B,CACxG,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACtD,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,5 @@ export interface InvalidRingMember {
|
|
|
4
4
|
readonly ringIndex: number;
|
|
5
5
|
readonly reason: string;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
8
|
-
* Validate a ring's output keys, commitment points, and unlock state.
|
|
9
|
-
* Returns the indices that must be replaced before signing.
|
|
10
|
-
*/
|
|
11
7
|
export declare function validateRingMembers(members: readonly OutputKeyInfo[], log: Logger): InvalidRingMember[];
|
|
12
8
|
//# sourceMappingURL=ring-select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-select.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ring-select.d.ts","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAKD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,aAAa,EAAE,EACjC,GAAG,EAAE,MAAM,GACV,iBAAiB,EAAE,CA0CrB"}
|
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* coinbase outputs that have not yet cleared their 60-block lock window
|
|
10
|
-
* (`CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW`) or RingCT outputs younger
|
|
11
|
-
* than `DEFAULT_TX_SPENDABLE_AGE` blocks.
|
|
12
|
-
*
|
|
13
|
-
* Picking a locked ring member is the most common cause of a daemon
|
|
14
|
-
* `[flags: invalid_input]` rejection at broadcast time. wallet2 catches this
|
|
15
|
-
* via `get_outs.unlocked`; we do the same here, then re-roll the entire ring
|
|
16
|
-
* if any slot is invalid.
|
|
17
|
-
*/
|
|
1
|
+
// CLSAG ring-member validation:
|
|
2
|
+
// 1. output pubkey decompresses to a valid non-identity ed25519 point
|
|
3
|
+
// 2. Pedersen commitment decompresses to a valid ed25519 point
|
|
4
|
+
// 3. output is unlocked (coinbase past CRYPTONOTE_MINED_MONEY_UNLOCK_WINDOW
|
|
5
|
+
// = 60, RingCT past DEFAULT_TX_SPENDABLE_AGE)
|
|
6
|
+
// Picking a locked member is the most common monerod [flags: invalid_input]
|
|
7
|
+
// rejection; wallet2 catches it via get_outs.unlocked, we mirror that and
|
|
8
|
+
// re-roll on any invalid slot.
|
|
18
9
|
import { Point } from '@noble/ed25519';
|
|
19
10
|
const IDENTITY_HEX = '01' + '00'.repeat(31);
|
|
20
|
-
|
|
21
|
-
* Validate a ring's output keys, commitment points, and unlock state.
|
|
22
|
-
* Returns the indices that must be replaced before signing.
|
|
23
|
-
*/
|
|
11
|
+
// Returns the indices that must be replaced before signing.
|
|
24
12
|
export function validateRingMembers(members, log) {
|
|
25
13
|
const invalid = [];
|
|
26
14
|
for (let i = 0; i < members.length; i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ring-select.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ring-select.js","sourceRoot":"","sources":["../../../src/atomic-swap/monero-sweep/ring-select.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,wEAAwE;AACxE,iEAAiE;AACjE,8EAA8E;AAC9E,mDAAmD;AACnD,4EAA4E;AAC5E,0EAA0E;AAC1E,+BAA+B;AAE/B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AASvC,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CACjC,OAAiC,EACjC,GAAW;IAEX,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;gBACvD,SAAS;YACX,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC5D,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,CAAC;gBACZ,MAAM,EAAE,mCAAmC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;aACpE,CAAC,CAAC;YACH,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CACN,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAClD,+BAA+B,CAChC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1,16 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Client-side pre-signing for non-custodial atomic swaps.
|
|
3
|
-
*
|
|
4
|
-
* Constructs the same Bitcoin transactions (TxCancel, TxPunish, TxEarlyRefund,
|
|
5
|
-
* TxRedeem) that the Rust sidecar builds, computes their BIP143 segwit sighashes,
|
|
6
|
-
* and signs them with Bob's secret key `b` — all client-side. The server never
|
|
7
|
-
* sees `b`.
|
|
8
|
-
*
|
|
9
|
-
* The miniscript `c:and_v(v:pk(A),pk_k(B))` compiles to:
|
|
10
|
-
* <A> OP_CHECKSIGVERIFY <B> OP_CHECKSIG
|
|
11
|
-
*
|
|
12
|
-
* This is the witness script for the 2-of-2 P2WSH used in TxLock and TxCancel.
|
|
13
|
-
*/
|
|
14
1
|
import type { ProtocolParams, PreSigs, FeePolicy, AmnestyPolicy, DustPolicy } from '../types/index.js';
|
|
15
2
|
export type NetworkName = 'mainnet' | 'testnet' | 'regtest' | 'regtest';
|
|
16
3
|
export interface ComputePreSigsParams {
|
|
@@ -31,49 +18,13 @@ export interface ComputeRedeemDigestParams {
|
|
|
31
18
|
readonly feePolicy?: FeePolicy;
|
|
32
19
|
readonly dustPolicy?: DustPolicy;
|
|
33
20
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Derive the canonical 2-of-2 P2WSH lock address from Alice's and Bob's
|
|
36
|
-
* compressed secp256k1 public keys. Callers must compare this against any
|
|
37
|
-
* sidecar-claimed lock address before signing.
|
|
38
|
-
*
|
|
39
|
-
* @param params.aHex Alice's 33-byte compressed secp256k1 public key (hex).
|
|
40
|
-
* @param params.bHex Bob's 33-byte compressed secp256k1 public key (hex).
|
|
41
|
-
* @param params.network `'mainnet'` or `'testnet'`; selects the bech32 HRP.
|
|
42
|
-
* @returns The bech32 P2WSH address derived from `(A, B)`.
|
|
43
|
-
* @throws {VerificationError} `E_LOCK_SCRIPT` if p2wsh derivation fails.
|
|
44
|
-
* @security Closes AV-B.1 / AV-C.1 — always prefer this over a sidecar-supplied address.
|
|
45
|
-
*/
|
|
46
21
|
export declare function deriveLockAddress(params: {
|
|
47
22
|
readonly aHex: string;
|
|
48
23
|
readonly bHex: string;
|
|
49
24
|
readonly network: NetworkName;
|
|
50
25
|
}): string;
|
|
51
|
-
/**
|
|
52
|
-
* Build the 2-of-2 witness script: <A> OP_CHECKSIGVERIFY <B> OP_CHECKSIG
|
|
53
|
-
*
|
|
54
|
-
* This matches the Rust miniscript `c:and_v(v:pk(A),pk_k(B))`.
|
|
55
|
-
* A and B are 33-byte compressed secp256k1 public keys (hex).
|
|
56
|
-
*/
|
|
57
26
|
export declare function buildMultisigWitnessScript(aHex: string, bHex: string): Buffer;
|
|
58
|
-
/**
|
|
59
|
-
* Compute the 3 pre-signatures (TxCancel, TxPunish, TxEarlyRefund) for a client-side swap.
|
|
60
|
-
*
|
|
61
|
-
* These are standard ECDSA signatures that the sidecar sends to Alice in Message4.
|
|
62
|
-
* The TxRedeem encrypted signature is computed separately (requires WASM adaptor crypto).
|
|
63
|
-
*
|
|
64
|
-
* @param params - All parameters needed for pre-signature computation
|
|
65
|
-
* @returns 3 hex-encoded compact ECDSA signatures (64 bytes each)
|
|
66
|
-
*/
|
|
67
27
|
export declare function computePreSigs(params: ComputePreSigsParams): PreSigs;
|
|
68
|
-
/**
|
|
69
|
-
* Compute the TxRedeem BIP143 sighash digest.
|
|
70
|
-
*
|
|
71
|
-
* The client uses this digest with WASM `encsign_digest(b, S_a_bitcoin, digest)`
|
|
72
|
-
* to produce the adaptor-encrypted signature for Alice.
|
|
73
|
-
*
|
|
74
|
-
* @param params - All parameters needed for redeem digest computation
|
|
75
|
-
* @returns Hex-encoded sighash (32 bytes)
|
|
76
|
-
*/
|
|
77
28
|
export declare function computeRedeemDigest(params: ComputeRedeemDigestParams): string;
|
|
78
29
|
export interface ComputeRedeemDigestFromTxHexParams {
|
|
79
30
|
readonly lockTxRawHex: string;
|
|
@@ -83,19 +34,5 @@ export interface ComputeRedeemDigestFromTxHexParams {
|
|
|
83
34
|
readonly feePolicy?: FeePolicy;
|
|
84
35
|
readonly dustPolicy?: DustPolicy;
|
|
85
36
|
}
|
|
86
|
-
/**
|
|
87
|
-
* Recompute the TxRedeem BIP143 sighash from a raw, already-broadcast TxLock
|
|
88
|
-
* rather than a signed PSBT. Used on the resume path: when the driver comes
|
|
89
|
-
* up after a restart, `signedPsbtBase64` is no longer in memory, but the
|
|
90
|
-
* lock tx is permanently on-chain and any `BlockchainDataProvider` can
|
|
91
|
-
* return its raw hex.
|
|
92
|
-
*
|
|
93
|
-
* Produces a byte-identical digest to `computeRedeemDigest` for the same
|
|
94
|
-
* underlying transaction.
|
|
95
|
-
*
|
|
96
|
-
* @security Preserves Fix 1 / AV-B.2 guarantees on resume — the digest is
|
|
97
|
-
* still derived independently from chain data; the caller CT-compares the
|
|
98
|
-
* result against the sidecar's claimed digest.
|
|
99
|
-
*/
|
|
100
37
|
export declare function computeRedeemDigestFromTxHex(params: ComputeRedeemDigestFromTxHexParams): string;
|
|
101
38
|
//# sourceMappingURL=presign.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presign.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/presign.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"presign.d.ts","sourceRoot":"","sources":["../../src/atomic-swap/presign.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkBvG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAUxE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAsED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B,GAAG,MAAM,CAQT;AAID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc7E;AAwDD,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAwPpE;AAID,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAa7E;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAMD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,kCAAkC,GACzC,MAAM,CAUR"}
|