quantumcoin 6.14.2 → 6.14.4
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 +12 -22
- package/dist/README.md +1 -1
- package/lib.commonjs/_version.js +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts +1 -1
- package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
- package/lib.commonjs/crypto/signing-key.js +14 -8
- package/lib.commonjs/crypto/signing-key.js.map +1 -1
- package/lib.commonjs/quantumcoin.d.ts +2 -0
- package/lib.commonjs/quantumcoin.d.ts.map +1 -1
- package/lib.commonjs/quantumcoin.js +11 -5
- package/lib.commonjs/quantumcoin.js.map +1 -1
- package/lib.commonjs/transaction/address.d.ts.map +1 -1
- package/lib.commonjs/transaction/address.js +8 -3
- package/lib.commonjs/transaction/address.js.map +1 -1
- package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
- package/lib.commonjs/wallet/json-keystore.js +7 -7
- package/lib.commonjs/wallet/json-keystore.js.map +1 -1
- package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
- package/lib.commonjs/wallet/wallet.js +2 -2
- package/lib.commonjs/wallet/wallet.js.map +1 -1
- package/lib.esm/_version.js +1 -1
- package/lib.esm/crypto/signing-key.d.ts +1 -1
- package/lib.esm/crypto/signing-key.d.ts.map +1 -1
- package/lib.esm/crypto/signing-key.js +15 -8
- package/lib.esm/crypto/signing-key.js.map +1 -1
- package/lib.esm/quantumcoin.d.ts +2 -0
- package/lib.esm/quantumcoin.d.ts.map +1 -1
- package/lib.esm/quantumcoin.js +6 -0
- package/lib.esm/quantumcoin.js.map +1 -1
- package/lib.esm/transaction/address.d.ts.map +1 -1
- package/lib.esm/transaction/address.js +8 -2
- package/lib.esm/transaction/address.js.map +1 -1
- package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
- package/lib.esm/wallet/json-keystore.js +11 -5
- package/lib.esm/wallet/json-keystore.js.map +1 -1
- package/lib.esm/wallet/wallet.d.ts.map +1 -1
- package/lib.esm/wallet/wallet.js +3 -1
- package/lib.esm/wallet/wallet.js.map +1 -1
- package/package.json +6 -5
- package/src.ts/_version.ts +1 -1
- package/src.ts/crypto/signing-key.ts +14 -9
- package/src.ts/quantumcoin.ts +10 -2
- package/src.ts/transaction/address.ts +7 -3
- package/src.ts/wallet/json-keystore.ts +8 -6
- package/src.ts/wallet/wallet.ts +2 -3
- package/dist/quantumcoin.js +0 -21137
- package/dist/quantumcoin.js.map +0 -1
- package/dist/quantumcoin.min.js +0 -1
- package/dist/quantumcoin.min.js'.gz' +0 -0
- package/dist/quantumcoin.umd.js +0 -21316
- package/dist/quantumcoin.umd.js.map +0 -1
- package/dist/quantumcoin.umd.min.js +0 -1
- package/dist/quantumcoin.umd.min.js'.gz' +0 -0
- package/dist/wordlists-extra.js +0 -1500
- package/dist/wordlists-extra.js.map +0 -1
- package/dist/wordlists-extra.min.js +0 -1
- package/dist/wordlists-extra.min.js'.gz' +0 -0
- package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
- package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-alchemy.js +0 -151
- package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
- package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
- package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-ankr.js +0 -137
- package/lib.commonjs/providers/provider-ankr.js.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
- package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-blockscout.js +0 -145
- package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
- package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-chainstack.js +0 -102
- package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
- package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-cloudflare.js +0 -26
- package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
- package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-etherscan.js +0 -587
- package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
- package/lib.commonjs/providers/provider-infura.d.ts +0 -101
- package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-infura.js +0 -206
- package/lib.commonjs/providers/provider-infura.js.map +0 -1
- package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
- package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-pocket.js +0 -109
- package/lib.commonjs/providers/provider-pocket.js.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
- package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.commonjs/providers/provider-quicknode.js +0 -163
- package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
- package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
- package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/hdwallet.js +0 -505
- package/lib.commonjs/wallet/hdwallet.js.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
- package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.commonjs/wallet/json-crowdsale.js +0 -60
- package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
- package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
- package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
- package/lib.commonjs/wallet/mnemonic.js +0 -169
- package/lib.commonjs/wallet/mnemonic.js.map +0 -1
- package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
- package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
- package/lib.commonjs/wallet/seedwallet.js +0 -8
- package/lib.commonjs/wallet/seedwallet.js.map +0 -1
- package/lib.esm/providers/provider-alchemy.d.ts +0 -50
- package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
- package/lib.esm/providers/provider-alchemy.js +0 -147
- package/lib.esm/providers/provider-alchemy.js.map +0 -1
- package/lib.esm/providers/provider-ankr.d.ts +0 -61
- package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
- package/lib.esm/providers/provider-ankr.js +0 -133
- package/lib.esm/providers/provider-ankr.js.map +0 -1
- package/lib.esm/providers/provider-blockscout.d.ts +0 -59
- package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
- package/lib.esm/providers/provider-blockscout.js +0 -141
- package/lib.esm/providers/provider-blockscout.js.map +0 -1
- package/lib.esm/providers/provider-chainstack.d.ts +0 -46
- package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
- package/lib.esm/providers/provider-chainstack.js +0 -98
- package/lib.esm/providers/provider-chainstack.js.map +0 -1
- package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
- package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
- package/lib.esm/providers/provider-cloudflare.js +0 -22
- package/lib.esm/providers/provider-cloudflare.js.map +0 -1
- package/lib.esm/providers/provider-etherscan.d.ts +0 -147
- package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
- package/lib.esm/providers/provider-etherscan.js +0 -584
- package/lib.esm/providers/provider-etherscan.js.map +0 -1
- package/lib.esm/providers/provider-infura.d.ts +0 -101
- package/lib.esm/providers/provider-infura.d.ts.map +0 -1
- package/lib.esm/providers/provider-infura.js +0 -201
- package/lib.esm/providers/provider-infura.js.map +0 -1
- package/lib.esm/providers/provider-pocket.d.ts +0 -54
- package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
- package/lib.esm/providers/provider-pocket.js +0 -105
- package/lib.esm/providers/provider-pocket.js.map +0 -1
- package/lib.esm/providers/provider-quicknode.d.ts +0 -59
- package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
- package/lib.esm/providers/provider-quicknode.js +0 -159
- package/lib.esm/providers/provider-quicknode.js.map +0 -1
- package/lib.esm/wallet/hdwallet.d.ts +0 -248
- package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
- package/lib.esm/wallet/hdwallet.js +0 -498
- package/lib.esm/wallet/hdwallet.js.map +0 -1
- package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
- package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
- package/lib.esm/wallet/json-crowdsale.js +0 -55
- package/lib.esm/wallet/json-crowdsale.js.map +0 -1
- package/lib.esm/wallet/mnemonic.d.ts +0 -65
- package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
- package/lib.esm/wallet/mnemonic.js +0 -165
- package/lib.esm/wallet/mnemonic.js.map +0 -1
- package/lib.esm/wallet/seedwallet.d.ts +0 -4
- package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
- package/lib.esm/wallet/seedwallet.js +0 -4
- package/lib.esm/wallet/seedwallet.js.map +0 -1
|
@@ -1,505 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getIndexedAccountPath = exports.getAccountPath = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.defaultPath = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Explain HD Wallets..
|
|
6
|
-
*
|
|
7
|
-
* @_subsection: api/wallet:HD Wallets [hd-wallets]
|
|
8
|
-
*/
|
|
9
|
-
const index_js_1 = require("../crypto/index.js");
|
|
10
|
-
const index_js_2 = require("../providers/index.js");
|
|
11
|
-
const index_js_3 = require("../transaction/index.js");
|
|
12
|
-
const index_js_4 = require("../utils/index.js");
|
|
13
|
-
const lang_en_js_1 = require("../wordlists/lang-en.js");
|
|
14
|
-
const base_wallet_js_1 = require("./base-wallet.js");
|
|
15
|
-
const mnemonic_js_1 = require("./mnemonic.js");
|
|
16
|
-
const json_keystore_js_1 = require("./json-keystore.js");
|
|
17
|
-
/**
|
|
18
|
-
* The default derivation path for Ethereum HD Nodes. (i.e. ``"m/44'/60'/0'/0/0"``)
|
|
19
|
-
*/
|
|
20
|
-
exports.defaultPath = "m/44'/60'/0'/0/0";
|
|
21
|
-
// "Bitcoin seed"
|
|
22
|
-
const MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);
|
|
23
|
-
const HardenedBit = 0x80000000;
|
|
24
|
-
const N = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");
|
|
25
|
-
const Nibbles = "0123456789abcdef";
|
|
26
|
-
function zpad(value, length) {
|
|
27
|
-
let result = "";
|
|
28
|
-
while (value) {
|
|
29
|
-
result = Nibbles[value % 16] + result;
|
|
30
|
-
value = Math.trunc(value / 16);
|
|
31
|
-
}
|
|
32
|
-
while (result.length < length * 2) {
|
|
33
|
-
result = "0" + result;
|
|
34
|
-
}
|
|
35
|
-
return "0x" + result;
|
|
36
|
-
}
|
|
37
|
-
function encodeBase58Check(_value) {
|
|
38
|
-
const value = (0, index_js_4.getBytes)(_value);
|
|
39
|
-
const check = (0, index_js_4.dataSlice)((0, index_js_1.sha256)((0, index_js_1.sha256)(value)), 0, 4);
|
|
40
|
-
const bytes = (0, index_js_4.concat)([value, check]);
|
|
41
|
-
return (0, index_js_4.encodeBase58)(bytes);
|
|
42
|
-
}
|
|
43
|
-
const _guard = {};
|
|
44
|
-
function ser_I(index, chainCode, publicKey, privateKey) {
|
|
45
|
-
const data = new Uint8Array(37);
|
|
46
|
-
if (index & HardenedBit) {
|
|
47
|
-
(0, index_js_4.assert)(privateKey != null, "cannot derive child of neutered node", "UNSUPPORTED_OPERATION", {
|
|
48
|
-
operation: "deriveChild"
|
|
49
|
-
});
|
|
50
|
-
// Data = 0x00 || ser_256(k_par)
|
|
51
|
-
data.set((0, index_js_4.getBytes)(privateKey), 1);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
// Data = ser_p(point(k_par))
|
|
55
|
-
data.set((0, index_js_4.getBytes)(publicKey));
|
|
56
|
-
}
|
|
57
|
-
// Data += ser_32(i)
|
|
58
|
-
for (let i = 24; i >= 0; i -= 8) {
|
|
59
|
-
data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);
|
|
60
|
-
}
|
|
61
|
-
const I = (0, index_js_4.getBytes)((0, index_js_1.computeHmac)("sha512", chainCode, data));
|
|
62
|
-
return { IL: I.slice(0, 32), IR: I.slice(32) };
|
|
63
|
-
}
|
|
64
|
-
function derivePath(node, path) {
|
|
65
|
-
const components = path.split("/");
|
|
66
|
-
(0, index_js_4.assertArgument)(components.length > 0, "invalid path", "path", path);
|
|
67
|
-
if (components[0] === "m") {
|
|
68
|
-
(0, index_js_4.assertArgument)(node.depth === 0, `cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${node.depth}`, "path", path);
|
|
69
|
-
components.shift();
|
|
70
|
-
}
|
|
71
|
-
let result = node;
|
|
72
|
-
for (let i = 0; i < components.length; i++) {
|
|
73
|
-
const component = components[i];
|
|
74
|
-
if (component.match(/^[0-9]+'$/)) {
|
|
75
|
-
const index = parseInt(component.substring(0, component.length - 1));
|
|
76
|
-
(0, index_js_4.assertArgument)(index < HardenedBit, "invalid path index", `path[${i}]`, component);
|
|
77
|
-
result = result.deriveChild(HardenedBit + index);
|
|
78
|
-
}
|
|
79
|
-
else if (component.match(/^[0-9]+$/)) {
|
|
80
|
-
const index = parseInt(component);
|
|
81
|
-
(0, index_js_4.assertArgument)(index < HardenedBit, "invalid path index", `path[${i}]`, component);
|
|
82
|
-
result = result.deriveChild(index);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
(0, index_js_4.assertArgument)(false, "invalid path component", `path[${i}]`, component);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return result;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* An **HDNodeWallet** is a [[Signer]] backed by the private key derived
|
|
92
|
-
* from an HD Node using the [[link-bip-32]] stantard.
|
|
93
|
-
*
|
|
94
|
-
* An HD Node forms a hierarchal structure with each HD Node having a
|
|
95
|
-
* private key and the ability to derive child HD Nodes, defined by
|
|
96
|
-
* a path indicating the index of each child.
|
|
97
|
-
*/
|
|
98
|
-
class HDNodeWallet extends base_wallet_js_1.BaseWallet {
|
|
99
|
-
/**
|
|
100
|
-
* The compressed public key.
|
|
101
|
-
*/
|
|
102
|
-
publicKey;
|
|
103
|
-
/**
|
|
104
|
-
* The fingerprint.
|
|
105
|
-
*
|
|
106
|
-
* A fingerprint allows quick qay to detect parent and child nodes,
|
|
107
|
-
* but developers should be prepared to deal with collisions as it
|
|
108
|
-
* is only 4 bytes.
|
|
109
|
-
*/
|
|
110
|
-
fingerprint;
|
|
111
|
-
/**
|
|
112
|
-
* The parent fingerprint.
|
|
113
|
-
*/
|
|
114
|
-
parentFingerprint;
|
|
115
|
-
/**
|
|
116
|
-
* The mnemonic used to create this HD Node, if available.
|
|
117
|
-
*
|
|
118
|
-
* Sources such as extended keys do not encode the mnemonic, in
|
|
119
|
-
* which case this will be ``null``.
|
|
120
|
-
*/
|
|
121
|
-
mnemonic;
|
|
122
|
-
/**
|
|
123
|
-
* The chaincode, which is effectively a public key used
|
|
124
|
-
* to derive children.
|
|
125
|
-
*/
|
|
126
|
-
chainCode;
|
|
127
|
-
/**
|
|
128
|
-
* The derivation path of this wallet.
|
|
129
|
-
*
|
|
130
|
-
* Since extended keys do not provide full path details, this
|
|
131
|
-
* may be ``null``, if instantiated from a source that does not
|
|
132
|
-
* encode it.
|
|
133
|
-
*/
|
|
134
|
-
path;
|
|
135
|
-
/**
|
|
136
|
-
* The child index of this wallet. Values over ``2 *\* 31`` indicate
|
|
137
|
-
* the node is hardened.
|
|
138
|
-
*/
|
|
139
|
-
index;
|
|
140
|
-
/**
|
|
141
|
-
* The depth of this wallet, which is the number of components
|
|
142
|
-
* in its path.
|
|
143
|
-
*/
|
|
144
|
-
depth;
|
|
145
|
-
/**
|
|
146
|
-
* @private
|
|
147
|
-
*/
|
|
148
|
-
constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {
|
|
149
|
-
super(signingKey, provider);
|
|
150
|
-
(0, index_js_4.assertPrivate)(guard, _guard, "HDNodeWallet");
|
|
151
|
-
(0, index_js_4.defineProperties)(this, { publicKey: signingKey.publicKey });
|
|
152
|
-
const fingerprint = (0, index_js_4.dataSlice)((0, index_js_1.ripemd160)((0, index_js_1.sha256)(this.publicKey)), 0, 4);
|
|
153
|
-
(0, index_js_4.defineProperties)(this, {
|
|
154
|
-
parentFingerprint, fingerprint,
|
|
155
|
-
chainCode, path, index, depth
|
|
156
|
-
});
|
|
157
|
-
(0, index_js_4.defineProperties)(this, { mnemonic });
|
|
158
|
-
}
|
|
159
|
-
connect(provider) {
|
|
160
|
-
return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);
|
|
161
|
-
}
|
|
162
|
-
#account() {
|
|
163
|
-
const account = { address: this.address, privateKey: this.privateKey };
|
|
164
|
-
const m = this.mnemonic;
|
|
165
|
-
if (this.path && m && m.wordlist.locale === "en" && m.password === "") {
|
|
166
|
-
account.mnemonic = {
|
|
167
|
-
path: this.path,
|
|
168
|
-
locale: "en",
|
|
169
|
-
entropy: m.entropy
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
return account;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Resolves to a [JSON Keystore Wallet](json-wallets) encrypted with
|
|
176
|
-
* %%password%%.
|
|
177
|
-
*
|
|
178
|
-
* If %%progressCallback%% is specified, it will receive periodic
|
|
179
|
-
* updates as the encryption process progreses.
|
|
180
|
-
*/
|
|
181
|
-
async encrypt(password, progressCallback) {
|
|
182
|
-
return await (0, json_keystore_js_1.encryptKeystoreJson)(this.#account(), password, { progressCallback });
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Returns a [JSON Keystore Wallet](json-wallets) encryped with
|
|
186
|
-
* %%password%%.
|
|
187
|
-
*
|
|
188
|
-
* It is preferred to use the [async version](encrypt) instead,
|
|
189
|
-
* which allows a [[ProgressCallback]] to keep the user informed.
|
|
190
|
-
*
|
|
191
|
-
* This method will block the event loop (freezing all UI) until
|
|
192
|
-
* it is complete, which may be a non-trivial duration.
|
|
193
|
-
*/
|
|
194
|
-
encryptSync(password) {
|
|
195
|
-
return (0, json_keystore_js_1.encryptKeystoreJsonSync)(this.#account(), password);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* The extended key.
|
|
199
|
-
*
|
|
200
|
-
* This key will begin with the prefix ``xpriv`` and can be used to
|
|
201
|
-
* reconstruct this HD Node to derive its children.
|
|
202
|
-
*/
|
|
203
|
-
get extendedKey() {
|
|
204
|
-
// We only support the mainnet values for now, but if anyone needs
|
|
205
|
-
// testnet values, let me know. I believe current sentiment is that
|
|
206
|
-
// we should always use mainnet, and use BIP-44 to derive the network
|
|
207
|
-
// - Mainnet: public=0x0488B21E, private=0x0488ADE4
|
|
208
|
-
// - Testnet: public=0x043587CF, private=0x04358394
|
|
209
|
-
(0, index_js_4.assert)(this.depth < 256, "Depth too deep", "UNSUPPORTED_OPERATION", { operation: "extendedKey" });
|
|
210
|
-
return encodeBase58Check((0, index_js_4.concat)([
|
|
211
|
-
"0x0488ADE4", zpad(this.depth, 1), this.parentFingerprint,
|
|
212
|
-
zpad(this.index, 4), this.chainCode,
|
|
213
|
-
(0, index_js_4.concat)(["0x00", this.privateKey])
|
|
214
|
-
]));
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Returns true if this wallet has a path, providing a Type Guard
|
|
218
|
-
* that the path is non-null.
|
|
219
|
-
*/
|
|
220
|
-
hasPath() { return (this.path != null); }
|
|
221
|
-
/**
|
|
222
|
-
* Returns a neutered HD Node, which removes the private details
|
|
223
|
-
* of an HD Node.
|
|
224
|
-
*
|
|
225
|
-
* A neutered node has no private key, but can be used to derive
|
|
226
|
-
* child addresses and other public data about the HD Node.
|
|
227
|
-
*/
|
|
228
|
-
neuter() {
|
|
229
|
-
return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);
|
|
230
|
-
}
|
|
231
|
-
/**
|
|
232
|
-
* Return the child for %%index%%.
|
|
233
|
-
*/
|
|
234
|
-
deriveChild(_index) {
|
|
235
|
-
const index = (0, index_js_4.getNumber)(_index, "index");
|
|
236
|
-
(0, index_js_4.assertArgument)(index <= 0xffffffff, "invalid index", "index", index);
|
|
237
|
-
// Base path
|
|
238
|
-
let path = this.path;
|
|
239
|
-
if (path) {
|
|
240
|
-
path += "/" + (index & ~HardenedBit);
|
|
241
|
-
if (index & HardenedBit) {
|
|
242
|
-
path += "'";
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);
|
|
246
|
-
const ki = new index_js_1.SigningKey((0, index_js_4.toBeHex)(((0, index_js_4.toBigInt)(IL) + BigInt(this.privateKey)) % N, 32));
|
|
247
|
-
return new HDNodeWallet(_guard, ki, this.fingerprint, (0, index_js_4.hexlify)(IR), path, index, this.depth + 1, this.mnemonic, this.provider);
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Return the HDNode for %%path%% from this node.
|
|
251
|
-
*/
|
|
252
|
-
derivePath(path) {
|
|
253
|
-
return derivePath(this, path);
|
|
254
|
-
}
|
|
255
|
-
static #fromSeed(_seed, mnemonic) {
|
|
256
|
-
(0, index_js_4.assertArgument)((0, index_js_4.isBytesLike)(_seed), "invalid seed", "seed", "[REDACTED]");
|
|
257
|
-
const seed = (0, index_js_4.getBytes)(_seed, "seed");
|
|
258
|
-
(0, index_js_4.assertArgument)(seed.length >= 16 && seed.length <= 64, "invalid seed", "seed", "[REDACTED]");
|
|
259
|
-
const I = (0, index_js_4.getBytes)((0, index_js_1.computeHmac)("sha512", MasterSecret, seed));
|
|
260
|
-
const signingKey = new index_js_1.SigningKey((0, index_js_4.hexlify)(I.slice(0, 32)));
|
|
261
|
-
return new HDNodeWallet(_guard, signingKey, "0x00000000", (0, index_js_4.hexlify)(I.slice(32)), "m", 0, 0, mnemonic, null);
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Creates a new HD Node from %%extendedKey%%.
|
|
265
|
-
*
|
|
266
|
-
* If the %%extendedKey%% will either have a prefix or ``xpub`` or
|
|
267
|
-
* ``xpriv``, returning a neutered HD Node ([[HDNodeVoidWallet]])
|
|
268
|
-
* or full HD Node ([[HDNodeWallet) respectively.
|
|
269
|
-
*/
|
|
270
|
-
static fromExtendedKey(extendedKey) {
|
|
271
|
-
const bytes = (0, index_js_4.toBeArray)((0, index_js_4.decodeBase58)(extendedKey)); // @TODO: redact
|
|
272
|
-
(0, index_js_4.assertArgument)(bytes.length === 82 || encodeBase58Check(bytes.slice(0, 78)) === extendedKey, "invalid extended key", "extendedKey", "[ REDACTED ]");
|
|
273
|
-
const depth = bytes[4];
|
|
274
|
-
const parentFingerprint = (0, index_js_4.hexlify)(bytes.slice(5, 9));
|
|
275
|
-
const index = parseInt((0, index_js_4.hexlify)(bytes.slice(9, 13)).substring(2), 16);
|
|
276
|
-
const chainCode = (0, index_js_4.hexlify)(bytes.slice(13, 45));
|
|
277
|
-
const key = bytes.slice(45, 78);
|
|
278
|
-
switch ((0, index_js_4.hexlify)(bytes.slice(0, 4))) {
|
|
279
|
-
// Public Key
|
|
280
|
-
case "0x0488b21e":
|
|
281
|
-
case "0x043587cf": {
|
|
282
|
-
const publicKey = (0, index_js_4.hexlify)(key);
|
|
283
|
-
return new HDNodeVoidWallet(_guard, (0, index_js_3.computeAddress)(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);
|
|
284
|
-
}
|
|
285
|
-
// Private Key
|
|
286
|
-
case "0x0488ade4":
|
|
287
|
-
case "0x04358394 ":
|
|
288
|
-
if (key[0] !== 0) {
|
|
289
|
-
break;
|
|
290
|
-
}
|
|
291
|
-
return new HDNodeWallet(_guard, new index_js_1.SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);
|
|
292
|
-
}
|
|
293
|
-
(0, index_js_4.assertArgument)(false, "invalid extended key prefix", "extendedKey", "[ REDACTED ]");
|
|
294
|
-
}
|
|
295
|
-
/**
|
|
296
|
-
* Creates a new random HDNode.
|
|
297
|
-
*/
|
|
298
|
-
static createRandom(password, path, wordlist) {
|
|
299
|
-
if (password == null) {
|
|
300
|
-
password = "";
|
|
301
|
-
}
|
|
302
|
-
if (path == null) {
|
|
303
|
-
path = exports.defaultPath;
|
|
304
|
-
}
|
|
305
|
-
if (wordlist == null) {
|
|
306
|
-
wordlist = lang_en_js_1.LangEn.wordlist();
|
|
307
|
-
}
|
|
308
|
-
const mnemonic = mnemonic_js_1.Mnemonic.fromEntropy((0, index_js_1.randomBytes)(16), password, wordlist);
|
|
309
|
-
return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Create an HD Node from %%mnemonic%%.
|
|
313
|
-
*/
|
|
314
|
-
static fromMnemonic(mnemonic, path) {
|
|
315
|
-
if (!path) {
|
|
316
|
-
path = exports.defaultPath;
|
|
317
|
-
}
|
|
318
|
-
return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
|
|
319
|
-
}
|
|
320
|
-
/**
|
|
321
|
-
* Creates an HD Node from a mnemonic %%phrase%%.
|
|
322
|
-
*/
|
|
323
|
-
static fromPhrase(phrase, password, path, wordlist) {
|
|
324
|
-
if (password == null) {
|
|
325
|
-
password = "";
|
|
326
|
-
}
|
|
327
|
-
if (path == null) {
|
|
328
|
-
path = exports.defaultPath;
|
|
329
|
-
}
|
|
330
|
-
if (wordlist == null) {
|
|
331
|
-
wordlist = lang_en_js_1.LangEn.wordlist();
|
|
332
|
-
}
|
|
333
|
-
const mnemonic = mnemonic_js_1.Mnemonic.fromPhrase(phrase, password, wordlist);
|
|
334
|
-
return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Creates an HD Node from a %%seed%%.
|
|
338
|
-
*/
|
|
339
|
-
static fromSeed(seed) {
|
|
340
|
-
return HDNodeWallet.#fromSeed(seed, null);
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
exports.HDNodeWallet = HDNodeWallet;
|
|
344
|
-
/**
|
|
345
|
-
* A **HDNodeVoidWallet** cannot sign, but provides access to
|
|
346
|
-
* the children nodes of a [[link-bip-32]] HD wallet addresses.
|
|
347
|
-
*
|
|
348
|
-
* The can be created by using an extended ``xpub`` key to
|
|
349
|
-
* [[HDNodeWallet_fromExtendedKey]] or by
|
|
350
|
-
* [nuetering](HDNodeWallet-neuter) a [[HDNodeWallet]].
|
|
351
|
-
*/
|
|
352
|
-
class HDNodeVoidWallet extends index_js_2.VoidSigner {
|
|
353
|
-
/**
|
|
354
|
-
* The compressed public key.
|
|
355
|
-
*/
|
|
356
|
-
publicKey;
|
|
357
|
-
/**
|
|
358
|
-
* The fingerprint.
|
|
359
|
-
*
|
|
360
|
-
* A fingerprint allows quick qay to detect parent and child nodes,
|
|
361
|
-
* but developers should be prepared to deal with collisions as it
|
|
362
|
-
* is only 4 bytes.
|
|
363
|
-
*/
|
|
364
|
-
fingerprint;
|
|
365
|
-
/**
|
|
366
|
-
* The parent node fingerprint.
|
|
367
|
-
*/
|
|
368
|
-
parentFingerprint;
|
|
369
|
-
/**
|
|
370
|
-
* The chaincode, which is effectively a public key used
|
|
371
|
-
* to derive children.
|
|
372
|
-
*/
|
|
373
|
-
chainCode;
|
|
374
|
-
/**
|
|
375
|
-
* The derivation path of this wallet.
|
|
376
|
-
*
|
|
377
|
-
* Since extended keys do not provider full path details, this
|
|
378
|
-
* may be ``null``, if instantiated from a source that does not
|
|
379
|
-
* enocde it.
|
|
380
|
-
*/
|
|
381
|
-
path;
|
|
382
|
-
/**
|
|
383
|
-
* The child index of this wallet. Values over ``2 *\* 31`` indicate
|
|
384
|
-
* the node is hardened.
|
|
385
|
-
*/
|
|
386
|
-
index;
|
|
387
|
-
/**
|
|
388
|
-
* The depth of this wallet, which is the number of components
|
|
389
|
-
* in its path.
|
|
390
|
-
*/
|
|
391
|
-
depth;
|
|
392
|
-
/**
|
|
393
|
-
* @private
|
|
394
|
-
*/
|
|
395
|
-
constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {
|
|
396
|
-
super(address, provider);
|
|
397
|
-
(0, index_js_4.assertPrivate)(guard, _guard, "HDNodeVoidWallet");
|
|
398
|
-
(0, index_js_4.defineProperties)(this, { publicKey });
|
|
399
|
-
const fingerprint = (0, index_js_4.dataSlice)((0, index_js_1.ripemd160)((0, index_js_1.sha256)(publicKey)), 0, 4);
|
|
400
|
-
(0, index_js_4.defineProperties)(this, {
|
|
401
|
-
publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
connect(provider) {
|
|
405
|
-
return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* The extended key.
|
|
409
|
-
*
|
|
410
|
-
* This key will begin with the prefix ``xpub`` and can be used to
|
|
411
|
-
* reconstruct this neutered key to derive its children addresses.
|
|
412
|
-
*/
|
|
413
|
-
get extendedKey() {
|
|
414
|
-
// We only support the mainnet values for now, but if anyone needs
|
|
415
|
-
// testnet values, let me know. I believe current sentiment is that
|
|
416
|
-
// we should always use mainnet, and use BIP-44 to derive the network
|
|
417
|
-
// - Mainnet: public=0x0488B21E, private=0x0488ADE4
|
|
418
|
-
// - Testnet: public=0x043587CF, private=0x04358394
|
|
419
|
-
(0, index_js_4.assert)(this.depth < 256, "Depth too deep", "UNSUPPORTED_OPERATION", { operation: "extendedKey" });
|
|
420
|
-
return encodeBase58Check((0, index_js_4.concat)([
|
|
421
|
-
"0x0488B21E",
|
|
422
|
-
zpad(this.depth, 1),
|
|
423
|
-
this.parentFingerprint,
|
|
424
|
-
zpad(this.index, 4),
|
|
425
|
-
this.chainCode,
|
|
426
|
-
this.publicKey,
|
|
427
|
-
]));
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* Returns true if this wallet has a path, providing a Type Guard
|
|
431
|
-
* that the path is non-null.
|
|
432
|
-
*/
|
|
433
|
-
hasPath() { return (this.path != null); }
|
|
434
|
-
/**
|
|
435
|
-
* Return the child for %%index%%.
|
|
436
|
-
*/
|
|
437
|
-
deriveChild(_index) {
|
|
438
|
-
const index = (0, index_js_4.getNumber)(_index, "index");
|
|
439
|
-
(0, index_js_4.assertArgument)(index <= 0xffffffff, "invalid index", "index", index);
|
|
440
|
-
// Base path
|
|
441
|
-
let path = this.path;
|
|
442
|
-
if (path) {
|
|
443
|
-
path += "/" + (index & ~HardenedBit);
|
|
444
|
-
if (index & HardenedBit) {
|
|
445
|
-
path += "'";
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
const Ki = "";
|
|
449
|
-
const address = "";
|
|
450
|
-
return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, (0, index_js_4.hexlify)(""), path, index, this.depth + 1, this.provider);
|
|
451
|
-
}
|
|
452
|
-
/**
|
|
453
|
-
* Return the signer for %%path%% from this node.
|
|
454
|
-
*/
|
|
455
|
-
derivePath(path) {
|
|
456
|
-
return derivePath(this, path);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
exports.HDNodeVoidWallet = HDNodeVoidWallet;
|
|
460
|
-
/*
|
|
461
|
-
export class HDNodeWalletManager {
|
|
462
|
-
#root: HDNodeWallet;
|
|
463
|
-
|
|
464
|
-
constructor(phrase: string, password?: null | string, path?: null | string, locale?: null | Wordlist) {
|
|
465
|
-
if (password == null) { password = ""; }
|
|
466
|
-
if (path == null) { path = "m/44'/60'/0'/0"; }
|
|
467
|
-
if (locale == null) { locale = LangEn.wordlist(); }
|
|
468
|
-
this.#root = HDNodeWallet.fromPhrase(phrase, password, path, locale);
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
getSigner(index?: number): HDNodeWallet {
|
|
472
|
-
return this.#root.deriveChild((index == null) ? 0: index);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
*/
|
|
476
|
-
/**
|
|
477
|
-
* Returns the [[link-bip-32]] path for the account at %%index%%.
|
|
478
|
-
*
|
|
479
|
-
* This is the pattern used by wallets like Ledger.
|
|
480
|
-
*
|
|
481
|
-
* There is also an [alternate pattern](getIndexedAccountPath) used by
|
|
482
|
-
* some software.
|
|
483
|
-
*/
|
|
484
|
-
function getAccountPath(_index) {
|
|
485
|
-
const index = (0, index_js_4.getNumber)(_index, "index");
|
|
486
|
-
(0, index_js_4.assertArgument)(index >= 0 && index < HardenedBit, "invalid account index", "index", index);
|
|
487
|
-
return `m/44'/60'/${index}'/0/0`;
|
|
488
|
-
}
|
|
489
|
-
exports.getAccountPath = getAccountPath;
|
|
490
|
-
/**
|
|
491
|
-
* Returns the path using an alternative pattern for deriving accounts,
|
|
492
|
-
* at %%index%%.
|
|
493
|
-
*
|
|
494
|
-
* This derivation path uses the //index// component rather than the
|
|
495
|
-
* //account// component to derive sequential accounts.
|
|
496
|
-
*
|
|
497
|
-
* This is the pattern used by wallets like MetaMask.
|
|
498
|
-
*/
|
|
499
|
-
function getIndexedAccountPath(_index) {
|
|
500
|
-
const index = (0, index_js_4.getNumber)(_index, "index");
|
|
501
|
-
(0, index_js_4.assertArgument)(index >= 0 && index < HardenedBit, "invalid account index", "index", index);
|
|
502
|
-
return `m/44'/60'/0'/0/${index}`;
|
|
503
|
-
}
|
|
504
|
-
exports.getIndexedAccountPath = getIndexedAccountPath;
|
|
505
|
-
//# sourceMappingURL=hdwallet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hdwallet.js","sourceRoot":"","sources":["../../src.ts/wallet/hdwallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @_subsection: api/wallet:JSON Wallets [json-wallets]
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* The data stored within a JSON Crowdsale wallet is fairly
|
|
6
|
-
* minimal.
|
|
7
|
-
*/
|
|
8
|
-
export type CrowdsaleAccount = {
|
|
9
|
-
privateKey: string;
|
|
10
|
-
address: string;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Returns true if %%json%% is a valid JSON Crowdsale wallet.
|
|
14
|
-
*/
|
|
15
|
-
export declare function isCrowdsaleJson(json: string): boolean;
|
|
16
|
-
/**
|
|
17
|
-
* Before Ethereum launched, it was necessary to create a wallet
|
|
18
|
-
* format for backers to use, which would be used to receive ether
|
|
19
|
-
* as a reward for contributing to the project.
|
|
20
|
-
*
|
|
21
|
-
* The [[link-crowdsale]] format is now obsolete, but it is still
|
|
22
|
-
* useful to support and the additional code is fairly trivial as
|
|
23
|
-
* all the primitives required are used through core portions of
|
|
24
|
-
* the library.
|
|
25
|
-
*/
|
|
26
|
-
export declare function decryptCrowdsaleJson(json: string, _password: string | Uint8Array): CrowdsaleAccount;
|
|
27
|
-
//# sourceMappingURL=json-crowdsale.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-crowdsale.d.ts","sourceRoot":"","sources":["../../src.ts/wallet/json-crowdsale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,gBAAgB,CA2BnG"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* @_subsection: api/wallet:JSON Wallets [json-wallets]
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = void 0;
|
|
7
|
-
const aes_js_1 = require("aes-js");
|
|
8
|
-
const index_js_1 = require("../address/index.js");
|
|
9
|
-
const index_js_2 = require("../crypto/index.js");
|
|
10
|
-
const index_js_3 = require("../hash/index.js");
|
|
11
|
-
const index_js_4 = require("../utils/index.js");
|
|
12
|
-
const utils_js_1 = require("./utils.js");
|
|
13
|
-
/**
|
|
14
|
-
* Returns true if %%json%% is a valid JSON Crowdsale wallet.
|
|
15
|
-
*/
|
|
16
|
-
function isCrowdsaleJson(json) {
|
|
17
|
-
try {
|
|
18
|
-
const data = JSON.parse(json);
|
|
19
|
-
if (data.encseed) {
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
catch (error) { }
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
exports.isCrowdsaleJson = isCrowdsaleJson;
|
|
27
|
-
// See: https://github.com/ethereum/pyethsaletool
|
|
28
|
-
/**
|
|
29
|
-
* Before Ethereum launched, it was necessary to create a wallet
|
|
30
|
-
* format for backers to use, which would be used to receive ether
|
|
31
|
-
* as a reward for contributing to the project.
|
|
32
|
-
*
|
|
33
|
-
* The [[link-crowdsale]] format is now obsolete, but it is still
|
|
34
|
-
* useful to support and the additional code is fairly trivial as
|
|
35
|
-
* all the primitives required are used through core portions of
|
|
36
|
-
* the library.
|
|
37
|
-
*/
|
|
38
|
-
function decryptCrowdsaleJson(json, _password) {
|
|
39
|
-
const data = JSON.parse(json);
|
|
40
|
-
const password = (0, utils_js_1.getPassword)(_password);
|
|
41
|
-
// Ethereum Address
|
|
42
|
-
const address = (0, index_js_1.getAddress)((0, utils_js_1.spelunk)(data, "ethaddr:string!"));
|
|
43
|
-
// Encrypted Seed
|
|
44
|
-
const encseed = (0, utils_js_1.looseArrayify)((0, utils_js_1.spelunk)(data, "encseed:string!"));
|
|
45
|
-
(0, index_js_4.assertArgument)(encseed && (encseed.length % 16) === 0, "invalid encseed", "json", json);
|
|
46
|
-
const key = (0, index_js_4.getBytes)((0, index_js_2.pbkdf2)(password, password, 2000, 32, "sha256")).slice(0, 16);
|
|
47
|
-
const iv = encseed.slice(0, 16);
|
|
48
|
-
const encryptedSeed = encseed.slice(16);
|
|
49
|
-
// Decrypt the seed
|
|
50
|
-
const aesCbc = new aes_js_1.CBC(key, iv);
|
|
51
|
-
const seed = (0, aes_js_1.pkcs7Strip)((0, index_js_4.getBytes)(aesCbc.decrypt(encryptedSeed)));
|
|
52
|
-
// This wallet format is weird... Convert the binary encoded hex to a string.
|
|
53
|
-
let seedHex = "";
|
|
54
|
-
for (let i = 0; i < seed.length; i++) {
|
|
55
|
-
seedHex += String.fromCharCode(seed[i]);
|
|
56
|
-
}
|
|
57
|
-
return { address, privateKey: (0, index_js_3.id)(seedHex) };
|
|
58
|
-
}
|
|
59
|
-
exports.decryptCrowdsaleJson = decryptCrowdsaleJson;
|
|
60
|
-
//# sourceMappingURL=json-crowdsale.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-crowdsale.js","sourceRoot":"","sources":["../../src.ts/wallet/json-crowdsale.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAyC;AAEzC,kDAAiD;AACjD,iDAA4C;AAC5C,+CAAsC;AACtC,gDAA6D;AAE7D,yCAAiE;AAYjE;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAY;IACxC,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;SAAE;KACrC;IAAC,OAAO,KAAK,EAAE,GAAG;IACnB,OAAO,KAAK,CAAC;AACjB,CAAC;AAND,0CAMC;AAED,iDAAiD;AAEjD;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAAC,IAAY,EAAE,SAA8B;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAC;IAExC,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE7D,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChE,IAAA,yBAAc,EAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAExF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAA,iBAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAExC,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,YAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEjE,6EAA6E;IAC7E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAA,aAAE,EAAC,OAAO,CAAC,EAAE,CAAC;AAChD,CAAC;AA3BD,oDA2BC"}
|