xpi-ts 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +516 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +8 -0
  6. package/dist/lib/bitcore/address.d.ts +66 -0
  7. package/dist/lib/bitcore/address.d.ts.map +1 -0
  8. package/dist/lib/bitcore/address.js +407 -0
  9. package/dist/lib/bitcore/block/block.d.ts +57 -0
  10. package/dist/lib/bitcore/block/block.d.ts.map +1 -0
  11. package/dist/lib/bitcore/block/block.js +233 -0
  12. package/dist/lib/bitcore/block/blockheader.d.ts +82 -0
  13. package/dist/lib/bitcore/block/blockheader.d.ts.map +1 -0
  14. package/dist/lib/bitcore/block/blockheader.js +323 -0
  15. package/dist/lib/bitcore/block/index.d.ts +5 -0
  16. package/dist/lib/bitcore/block/index.d.ts.map +1 -0
  17. package/dist/lib/bitcore/block/index.js +2 -0
  18. package/dist/lib/bitcore/chunk.d.ts +22 -0
  19. package/dist/lib/bitcore/chunk.d.ts.map +1 -0
  20. package/dist/lib/bitcore/chunk.js +46 -0
  21. package/dist/lib/bitcore/crypto/bn.d.ts +53 -0
  22. package/dist/lib/bitcore/crypto/bn.d.ts.map +1 -0
  23. package/dist/lib/bitcore/crypto/bn.js +238 -0
  24. package/dist/lib/bitcore/crypto/ecdsa.d.ts +46 -0
  25. package/dist/lib/bitcore/crypto/ecdsa.d.ts.map +1 -0
  26. package/dist/lib/bitcore/crypto/ecdsa.js +247 -0
  27. package/dist/lib/bitcore/crypto/hash.d.ts +16 -0
  28. package/dist/lib/bitcore/crypto/hash.d.ts.map +1 -0
  29. package/dist/lib/bitcore/crypto/hash.js +87 -0
  30. package/dist/lib/bitcore/crypto/index.d.ts +9 -0
  31. package/dist/lib/bitcore/crypto/index.d.ts.map +1 -0
  32. package/dist/lib/bitcore/crypto/index.js +8 -0
  33. package/dist/lib/bitcore/crypto/musig2.d.ts +40 -0
  34. package/dist/lib/bitcore/crypto/musig2.d.ts.map +1 -0
  35. package/dist/lib/bitcore/crypto/musig2.js +236 -0
  36. package/dist/lib/bitcore/crypto/point.d.ts +20 -0
  37. package/dist/lib/bitcore/crypto/point.d.ts.map +1 -0
  38. package/dist/lib/bitcore/crypto/point.js +133 -0
  39. package/dist/lib/bitcore/crypto/random.d.ts +7 -0
  40. package/dist/lib/bitcore/crypto/random.d.ts.map +1 -0
  41. package/dist/lib/bitcore/crypto/random.js +30 -0
  42. package/dist/lib/bitcore/crypto/schnorr.d.ts +40 -0
  43. package/dist/lib/bitcore/crypto/schnorr.d.ts.map +1 -0
  44. package/dist/lib/bitcore/crypto/schnorr.js +185 -0
  45. package/dist/lib/bitcore/crypto/signature.d.ts +53 -0
  46. package/dist/lib/bitcore/crypto/signature.d.ts.map +1 -0
  47. package/dist/lib/bitcore/crypto/signature.js +300 -0
  48. package/dist/lib/bitcore/crypto/sigtype.d.ts +5 -0
  49. package/dist/lib/bitcore/crypto/sigtype.d.ts.map +1 -0
  50. package/dist/lib/bitcore/crypto/sigtype.js +18 -0
  51. package/dist/lib/bitcore/encoding/base58.d.ts +16 -0
  52. package/dist/lib/bitcore/encoding/base58.d.ts.map +1 -0
  53. package/dist/lib/bitcore/encoding/base58.js +55 -0
  54. package/dist/lib/bitcore/encoding/base58check.d.ts +9 -0
  55. package/dist/lib/bitcore/encoding/base58check.d.ts.map +1 -0
  56. package/dist/lib/bitcore/encoding/base58check.js +82 -0
  57. package/dist/lib/bitcore/encoding/bufferreader.d.ts +34 -0
  58. package/dist/lib/bitcore/encoding/bufferreader.d.ts.map +1 -0
  59. package/dist/lib/bitcore/encoding/bufferreader.js +198 -0
  60. package/dist/lib/bitcore/encoding/bufferwriter.d.ts +36 -0
  61. package/dist/lib/bitcore/encoding/bufferwriter.d.ts.map +1 -0
  62. package/dist/lib/bitcore/encoding/bufferwriter.js +189 -0
  63. package/dist/lib/bitcore/encoding/varint.d.ts +20 -0
  64. package/dist/lib/bitcore/encoding/varint.d.ts.map +1 -0
  65. package/dist/lib/bitcore/encoding/varint.js +61 -0
  66. package/dist/lib/bitcore/errors.d.ts +28 -0
  67. package/dist/lib/bitcore/errors.d.ts.map +1 -0
  68. package/dist/lib/bitcore/errors.js +325 -0
  69. package/dist/lib/bitcore/hdprivatekey.d.ts +78 -0
  70. package/dist/lib/bitcore/hdprivatekey.d.ts.map +1 -0
  71. package/dist/lib/bitcore/hdprivatekey.js +381 -0
  72. package/dist/lib/bitcore/hdpublickey.d.ts +98 -0
  73. package/dist/lib/bitcore/hdpublickey.d.ts.map +1 -0
  74. package/dist/lib/bitcore/hdpublickey.js +416 -0
  75. package/dist/lib/bitcore/index.d.ts +60 -0
  76. package/dist/lib/bitcore/index.d.ts.map +1 -0
  77. package/dist/lib/bitcore/index.js +44 -0
  78. package/dist/lib/bitcore/message.d.ts +23 -0
  79. package/dist/lib/bitcore/message.d.ts.map +1 -0
  80. package/dist/lib/bitcore/message.js +112 -0
  81. package/dist/lib/bitcore/mnemonic/errors.d.ts +7 -0
  82. package/dist/lib/bitcore/mnemonic/errors.d.ts.map +1 -0
  83. package/dist/lib/bitcore/mnemonic/errors.js +20 -0
  84. package/dist/lib/bitcore/mnemonic/index.d.ts +5 -0
  85. package/dist/lib/bitcore/mnemonic/index.d.ts.map +1 -0
  86. package/dist/lib/bitcore/mnemonic/index.js +4 -0
  87. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts +23 -0
  88. package/dist/lib/bitcore/mnemonic/mnemonic.d.ts.map +1 -0
  89. package/dist/lib/bitcore/mnemonic/mnemonic.js +164 -0
  90. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts +2 -0
  91. package/dist/lib/bitcore/mnemonic/pbkdf2.d.ts.map +1 -0
  92. package/dist/lib/bitcore/mnemonic/pbkdf2.js +25 -0
  93. package/dist/lib/bitcore/mnemonic/words/english.d.ts +2 -0
  94. package/dist/lib/bitcore/mnemonic/words/english.d.ts.map +1 -0
  95. package/dist/lib/bitcore/mnemonic/words/english.js +2050 -0
  96. package/dist/lib/bitcore/mnemonic/words/index.d.ts +4 -0
  97. package/dist/lib/bitcore/mnemonic/words/index.d.ts.map +1 -0
  98. package/dist/lib/bitcore/mnemonic/words/index.js +4 -0
  99. package/dist/lib/bitcore/musig2/index.d.ts +3 -0
  100. package/dist/lib/bitcore/musig2/index.d.ts.map +1 -0
  101. package/dist/lib/bitcore/musig2/index.js +2 -0
  102. package/dist/lib/bitcore/musig2/session.d.ts +79 -0
  103. package/dist/lib/bitcore/musig2/session.d.ts.map +1 -0
  104. package/dist/lib/bitcore/musig2/session.js +346 -0
  105. package/dist/lib/bitcore/musig2/signer.d.ts +61 -0
  106. package/dist/lib/bitcore/musig2/signer.d.ts.map +1 -0
  107. package/dist/lib/bitcore/musig2/signer.js +146 -0
  108. package/dist/lib/bitcore/networks.d.ts +53 -0
  109. package/dist/lib/bitcore/networks.d.ts.map +1 -0
  110. package/dist/lib/bitcore/networks.js +150 -0
  111. package/dist/lib/bitcore/opcode.d.ts +250 -0
  112. package/dist/lib/bitcore/opcode.d.ts.map +1 -0
  113. package/dist/lib/bitcore/opcode.js +270 -0
  114. package/dist/lib/bitcore/privatekey.d.ts +56 -0
  115. package/dist/lib/bitcore/privatekey.d.ts.map +1 -0
  116. package/dist/lib/bitcore/privatekey.js +237 -0
  117. package/dist/lib/bitcore/publickey.d.ts +59 -0
  118. package/dist/lib/bitcore/publickey.d.ts.map +1 -0
  119. package/dist/lib/bitcore/publickey.js +263 -0
  120. package/dist/lib/bitcore/script/interpreter.d.ts +98 -0
  121. package/dist/lib/bitcore/script/interpreter.d.ts.map +1 -0
  122. package/dist/lib/bitcore/script/interpreter.js +1704 -0
  123. package/dist/lib/bitcore/script.d.ts +111 -0
  124. package/dist/lib/bitcore/script.d.ts.map +1 -0
  125. package/dist/lib/bitcore/script.js +1112 -0
  126. package/dist/lib/bitcore/taproot/musig2.d.ts +29 -0
  127. package/dist/lib/bitcore/taproot/musig2.d.ts.map +1 -0
  128. package/dist/lib/bitcore/taproot/musig2.js +104 -0
  129. package/dist/lib/bitcore/taproot/nft.d.ts +164 -0
  130. package/dist/lib/bitcore/taproot/nft.d.ts.map +1 -0
  131. package/dist/lib/bitcore/taproot/nft.js +407 -0
  132. package/dist/lib/bitcore/taproot.d.ts +65 -0
  133. package/dist/lib/bitcore/taproot.d.ts.map +1 -0
  134. package/dist/lib/bitcore/taproot.js +288 -0
  135. package/dist/lib/bitcore/transaction/index.d.ts +12 -0
  136. package/dist/lib/bitcore/transaction/index.d.ts.map +1 -0
  137. package/dist/lib/bitcore/transaction/index.js +6 -0
  138. package/dist/lib/bitcore/transaction/input.d.ts +202 -0
  139. package/dist/lib/bitcore/transaction/input.d.ts.map +1 -0
  140. package/dist/lib/bitcore/transaction/input.js +911 -0
  141. package/dist/lib/bitcore/transaction/output.d.ts +48 -0
  142. package/dist/lib/bitcore/transaction/output.d.ts.map +1 -0
  143. package/dist/lib/bitcore/transaction/output.js +231 -0
  144. package/dist/lib/bitcore/transaction/sighash.d.ts +32 -0
  145. package/dist/lib/bitcore/transaction/sighash.d.ts.map +1 -0
  146. package/dist/lib/bitcore/transaction/sighash.js +335 -0
  147. package/dist/lib/bitcore/transaction/signature.d.ts +36 -0
  148. package/dist/lib/bitcore/transaction/signature.d.ts.map +1 -0
  149. package/dist/lib/bitcore/transaction/signature.js +130 -0
  150. package/dist/lib/bitcore/transaction/transaction.d.ts +164 -0
  151. package/dist/lib/bitcore/transaction/transaction.d.ts.map +1 -0
  152. package/dist/lib/bitcore/transaction/transaction.js +1016 -0
  153. package/dist/lib/bitcore/transaction/unspentoutput.d.ts +58 -0
  154. package/dist/lib/bitcore/transaction/unspentoutput.d.ts.map +1 -0
  155. package/dist/lib/bitcore/transaction/unspentoutput.js +167 -0
  156. package/dist/lib/bitcore/unit.d.ts +44 -0
  157. package/dist/lib/bitcore/unit.d.ts.map +1 -0
  158. package/dist/lib/bitcore/unit.js +106 -0
  159. package/dist/lib/bitcore/uri.d.ts +29 -0
  160. package/dist/lib/bitcore/uri.d.ts.map +1 -0
  161. package/dist/lib/bitcore/uri.js +163 -0
  162. package/dist/lib/bitcore/util/base32.d.ts +5 -0
  163. package/dist/lib/bitcore/util/base32.d.ts.map +1 -0
  164. package/dist/lib/bitcore/util/base32.js +58 -0
  165. package/dist/lib/bitcore/util/buffer.d.ts +18 -0
  166. package/dist/lib/bitcore/util/buffer.d.ts.map +1 -0
  167. package/dist/lib/bitcore/util/buffer.js +76 -0
  168. package/dist/lib/bitcore/util/convertBits.d.ts +2 -0
  169. package/dist/lib/bitcore/util/convertBits.d.ts.map +1 -0
  170. package/dist/lib/bitcore/util/convertBits.js +26 -0
  171. package/dist/lib/bitcore/util/js.d.ts +9 -0
  172. package/dist/lib/bitcore/util/js.d.ts.map +1 -0
  173. package/dist/lib/bitcore/util/js.js +45 -0
  174. package/dist/lib/bitcore/util/preconditions.d.ts +6 -0
  175. package/dist/lib/bitcore/util/preconditions.d.ts.map +1 -0
  176. package/dist/lib/bitcore/util/preconditions.js +31 -0
  177. package/dist/lib/bitcore/util.d.ts +14 -0
  178. package/dist/lib/bitcore/util.d.ts.map +1 -0
  179. package/dist/lib/bitcore/util.js +13 -0
  180. package/dist/lib/bitcore/xaddress.d.ts +45 -0
  181. package/dist/lib/bitcore/xaddress.d.ts.map +1 -0
  182. package/dist/lib/bitcore/xaddress.js +279 -0
  183. package/dist/lib/rank/api.d.ts +75 -0
  184. package/dist/lib/rank/api.d.ts.map +1 -0
  185. package/dist/lib/rank/api.js +4 -0
  186. package/dist/lib/rank/index.d.ts +127 -0
  187. package/dist/lib/rank/index.d.ts.map +1 -0
  188. package/dist/lib/rank/index.js +421 -0
  189. package/dist/lib/rank/opcode.d.ts +23 -0
  190. package/dist/lib/rank/opcode.d.ts.map +1 -0
  191. package/dist/lib/rank/opcode.js +23 -0
  192. package/dist/lib/rank/script.d.ts +2 -0
  193. package/dist/lib/rank/script.d.ts.map +1 -0
  194. package/dist/lib/rank/script.js +7 -0
  195. package/dist/lib/rank/transaction.d.ts +3 -0
  196. package/dist/lib/rank/transaction.d.ts.map +1 -0
  197. package/dist/lib/rank/transaction.js +12 -0
  198. package/dist/lib/rpc.d.ts +136 -0
  199. package/dist/lib/rpc.d.ts.map +1 -0
  200. package/dist/lib/rpc.js +62 -0
  201. package/dist/utils/constants.d.ts +18 -0
  202. package/dist/utils/constants.d.ts.map +1 -0
  203. package/dist/utils/constants.js +20 -0
  204. package/dist/utils/env.d.ts +3 -0
  205. package/dist/utils/env.d.ts.map +1 -0
  206. package/dist/utils/env.js +8 -0
  207. package/dist/utils/string.d.ts +11 -0
  208. package/dist/utils/string.d.ts.map +1 -0
  209. package/dist/utils/string.js +47 -0
  210. package/dist/utils/types.d.ts +2 -0
  211. package/dist/utils/types.d.ts.map +1 -0
  212. package/dist/utils/types.js +1 -0
  213. package/dist/utils/wallet.d.ts +12 -0
  214. package/dist/utils/wallet.d.ts.map +1 -0
  215. package/dist/utils/wallet.js +28 -0
  216. package/package.json +91 -0
@@ -0,0 +1,270 @@
1
+ import { Preconditions } from './util/preconditions.js';
2
+ import { JSUtil } from './util/js.js';
3
+ export class Opcode {
4
+ num;
5
+ constructor(num) {
6
+ if (typeof num === 'number') {
7
+ JSUtil.defineImmutable(this, { num });
8
+ }
9
+ else if (typeof num === 'string') {
10
+ const value = Opcode.map[num];
11
+ if (value === undefined) {
12
+ throw new Error(`Unknown opcode: ${num}`);
13
+ }
14
+ JSUtil.defineImmutable(this, { num: value });
15
+ }
16
+ else {
17
+ throw new TypeError(`Unrecognized num type: "${typeof num}" for Opcode`);
18
+ }
19
+ }
20
+ static fromBuffer(buf) {
21
+ Preconditions.checkArgument(Buffer.isBuffer(buf), 'buf', 'Must be a Buffer');
22
+ Preconditions.checkArgument(buf.length > 0, 'buf', 'Buffer cannot be empty');
23
+ return new Opcode(buf[0]);
24
+ }
25
+ toBuffer() {
26
+ return Buffer.from([this.num]);
27
+ }
28
+ toString() {
29
+ return this.num.toString();
30
+ }
31
+ static OP_0 = 0;
32
+ static OP_FALSE = 0;
33
+ static OP_PUSHDATA1 = 76;
34
+ static OP_PUSHDATA2 = 77;
35
+ static OP_PUSHDATA4 = 78;
36
+ static OP_1NEGATE = 79;
37
+ static OP_RESERVED = 80;
38
+ static OP_1 = 81;
39
+ static OP_TRUE = 81;
40
+ static OP_2 = 82;
41
+ static OP_3 = 83;
42
+ static OP_4 = 84;
43
+ static OP_5 = 85;
44
+ static OP_6 = 86;
45
+ static OP_7 = 87;
46
+ static OP_8 = 88;
47
+ static OP_9 = 89;
48
+ static OP_10 = 90;
49
+ static OP_11 = 91;
50
+ static OP_12 = 92;
51
+ static OP_13 = 93;
52
+ static OP_14 = 94;
53
+ static OP_15 = 95;
54
+ static OP_16 = 96;
55
+ static OP_NOP = 97;
56
+ static OP_SCRIPTTYPE = 98;
57
+ static OP_VER = 98;
58
+ static OP_IF = 99;
59
+ static OP_NOTIF = 100;
60
+ static OP_VERIF = 101;
61
+ static OP_VERNOTIF = 102;
62
+ static OP_ELSE = 103;
63
+ static OP_ENDIF = 104;
64
+ static OP_VERIFY = 105;
65
+ static OP_RETURN = 106;
66
+ static OP_TOALTSTACK = 107;
67
+ static OP_FROMALTSTACK = 108;
68
+ static OP_2DROP = 109;
69
+ static OP_2DUP = 110;
70
+ static OP_3DUP = 111;
71
+ static OP_2OVER = 112;
72
+ static OP_2ROT = 113;
73
+ static OP_2SWAP = 114;
74
+ static OP_IFDUP = 115;
75
+ static OP_DEPTH = 116;
76
+ static OP_DROP = 117;
77
+ static OP_DUP = 118;
78
+ static OP_NIP = 119;
79
+ static OP_OVER = 120;
80
+ static OP_PICK = 121;
81
+ static OP_ROLL = 122;
82
+ static OP_ROT = 123;
83
+ static OP_SWAP = 124;
84
+ static OP_TUCK = 125;
85
+ static OP_CAT = 126;
86
+ static OP_SPLIT = 127;
87
+ static OP_NUM2BIN = 128;
88
+ static OP_BIN2NUM = 129;
89
+ static OP_SIZE = 130;
90
+ static OP_INVERT = 131;
91
+ static OP_AND = 132;
92
+ static OP_OR = 133;
93
+ static OP_XOR = 134;
94
+ static OP_EQUAL = 135;
95
+ static OP_EQUALVERIFY = 136;
96
+ static OP_RESERVED1 = 137;
97
+ static OP_RESERVED2 = 138;
98
+ static OP_1ADD = 139;
99
+ static OP_1SUB = 140;
100
+ static OP_2MUL = 141;
101
+ static OP_2DIV = 142;
102
+ static OP_NEGATE = 143;
103
+ static OP_ABS = 144;
104
+ static OP_NOT = 145;
105
+ static OP_0NOTEQUAL = 146;
106
+ static OP_ADD = 147;
107
+ static OP_SUB = 148;
108
+ static OP_MUL = 149;
109
+ static OP_DIV = 150;
110
+ static OP_MOD = 151;
111
+ static OP_LSHIFT = 152;
112
+ static OP_RSHIFT = 153;
113
+ static OP_BOOLAND = 154;
114
+ static OP_BOOLOR = 155;
115
+ static OP_NUMEQUAL = 156;
116
+ static OP_NUMEQUALVERIFY = 157;
117
+ static OP_NUMNOTEQUAL = 158;
118
+ static OP_LESSTHAN = 159;
119
+ static OP_GREATERTHAN = 160;
120
+ static OP_LESSTHANOREQUAL = 161;
121
+ static OP_GREATERTHANOREQUAL = 162;
122
+ static OP_MIN = 163;
123
+ static OP_MAX = 164;
124
+ static OP_WITHIN = 165;
125
+ static OP_RIPEMD160 = 166;
126
+ static OP_SHA1 = 167;
127
+ static OP_SHA256 = 168;
128
+ static OP_HASH160 = 169;
129
+ static OP_HASH256 = 170;
130
+ static OP_CODESEPARATOR = 171;
131
+ static OP_CHECKSIG = 172;
132
+ static OP_CHECKSIGVERIFY = 173;
133
+ static OP_CHECKMULTISIG = 174;
134
+ static OP_CHECKMULTISIGVERIFY = 175;
135
+ static OP_NOP1 = 176;
136
+ static OP_CHECKLOCKTIMEVERIFY = 177;
137
+ static OP_NOP2 = 177;
138
+ static OP_CHECKSEQUENCEVERIFY = 178;
139
+ static OP_NOP3 = 178;
140
+ static OP_NOP4 = 179;
141
+ static OP_NOP5 = 180;
142
+ static OP_NOP6 = 181;
143
+ static OP_NOP7 = 182;
144
+ static OP_NOP8 = 183;
145
+ static OP_NOP9 = 184;
146
+ static OP_NOP10 = 185;
147
+ static OP_CHECKDATASIG = 186;
148
+ static OP_CHECKDATASIGVERIFY = 187;
149
+ static OP_REVERSEBYTES = 188;
150
+ static map = {
151
+ OP_0: 0,
152
+ OP_FALSE: 0,
153
+ OP_PUSHDATA1: 76,
154
+ OP_PUSHDATA2: 77,
155
+ OP_PUSHDATA4: 78,
156
+ OP_1NEGATE: 79,
157
+ OP_RESERVED: 80,
158
+ OP_1: 81,
159
+ OP_TRUE: 81,
160
+ OP_2: 82,
161
+ OP_3: 83,
162
+ OP_4: 84,
163
+ OP_5: 85,
164
+ OP_6: 86,
165
+ OP_7: 87,
166
+ OP_8: 88,
167
+ OP_9: 89,
168
+ OP_10: 90,
169
+ OP_11: 91,
170
+ OP_12: 92,
171
+ OP_13: 93,
172
+ OP_14: 94,
173
+ OP_15: 95,
174
+ OP_16: 96,
175
+ OP_NOP: 97,
176
+ OP_SCRIPTTYPE: 98,
177
+ OP_IF: 99,
178
+ OP_NOTIF: 100,
179
+ OP_VERIF: 101,
180
+ OP_VERNOTIF: 102,
181
+ OP_ELSE: 103,
182
+ OP_ENDIF: 104,
183
+ OP_VERIFY: 105,
184
+ OP_RETURN: 106,
185
+ OP_TOALTSTACK: 107,
186
+ OP_FROMALTSTACK: 108,
187
+ OP_2DROP: 109,
188
+ OP_2DUP: 110,
189
+ OP_3DUP: 111,
190
+ OP_2OVER: 112,
191
+ OP_2ROT: 113,
192
+ OP_2SWAP: 114,
193
+ OP_IFDUP: 115,
194
+ OP_DEPTH: 116,
195
+ OP_DROP: 117,
196
+ OP_DUP: 118,
197
+ OP_NIP: 119,
198
+ OP_OVER: 120,
199
+ OP_PICK: 121,
200
+ OP_ROLL: 122,
201
+ OP_ROT: 123,
202
+ OP_SWAP: 124,
203
+ OP_TUCK: 125,
204
+ OP_CAT: 126,
205
+ OP_SPLIT: 127,
206
+ OP_NUM2BIN: 128,
207
+ OP_BIN2NUM: 129,
208
+ OP_SIZE: 130,
209
+ OP_INVERT: 131,
210
+ OP_AND: 132,
211
+ OP_OR: 133,
212
+ OP_XOR: 134,
213
+ OP_EQUAL: 135,
214
+ OP_EQUALVERIFY: 136,
215
+ OP_RESERVED1: 137,
216
+ OP_RESERVED2: 138,
217
+ OP_1ADD: 139,
218
+ OP_1SUB: 140,
219
+ OP_2MUL: 141,
220
+ OP_2DIV: 142,
221
+ OP_NEGATE: 143,
222
+ OP_ABS: 144,
223
+ OP_NOT: 145,
224
+ OP_0NOTEQUAL: 146,
225
+ OP_ADD: 147,
226
+ OP_SUB: 148,
227
+ OP_MUL: 149,
228
+ OP_DIV: 150,
229
+ OP_MOD: 151,
230
+ OP_LSHIFT: 152,
231
+ OP_RSHIFT: 153,
232
+ OP_BOOLAND: 154,
233
+ OP_BOOLOR: 155,
234
+ OP_NUMEQUAL: 156,
235
+ OP_NUMEQUALVERIFY: 157,
236
+ OP_NUMNOTEQUAL: 158,
237
+ OP_LESSTHAN: 159,
238
+ OP_GREATERTHAN: 160,
239
+ OP_LESSTHANOREQUAL: 161,
240
+ OP_GREATERTHANOREQUAL: 162,
241
+ OP_MIN: 163,
242
+ OP_MAX: 164,
243
+ OP_WITHIN: 165,
244
+ OP_RIPEMD160: 166,
245
+ OP_SHA1: 167,
246
+ OP_SHA256: 168,
247
+ OP_HASH160: 169,
248
+ OP_HASH256: 170,
249
+ OP_CODESEPARATOR: 171,
250
+ OP_CHECKSIG: 172,
251
+ OP_CHECKSIGVERIFY: 173,
252
+ OP_CHECKMULTISIG: 174,
253
+ OP_CHECKMULTISIGVERIFY: 175,
254
+ OP_NOP1: 176,
255
+ OP_CHECKLOCKTIMEVERIFY: 177,
256
+ OP_NOP2: 177,
257
+ OP_CHECKSEQUENCEVERIFY: 178,
258
+ OP_NOP3: 178,
259
+ OP_NOP4: 179,
260
+ OP_NOP5: 180,
261
+ OP_NOP6: 181,
262
+ OP_NOP7: 182,
263
+ OP_NOP8: 183,
264
+ OP_NOP9: 184,
265
+ OP_NOP10: 185,
266
+ OP_CHECKDATASIG: 186,
267
+ OP_CHECKDATASIGVERIFY: 187,
268
+ OP_REVERSEBYTES: 188,
269
+ };
270
+ }
@@ -0,0 +1,56 @@
1
+ import { BN } from './crypto/bn.js';
2
+ import { Network } from './networks.js';
3
+ import { PublicKey } from './publickey.js';
4
+ import { Address } from './address.js';
5
+ export interface PrivateKeyData {
6
+ bn?: BN;
7
+ compressed?: boolean;
8
+ network?: Network;
9
+ }
10
+ export interface PrivateKeyObject {
11
+ bn: string;
12
+ network: string;
13
+ compressed: boolean;
14
+ }
15
+ export interface PrivateKeySerialized {
16
+ bn: string;
17
+ compressed: boolean;
18
+ network: string;
19
+ }
20
+ export interface HDPrivateKeyDerivedData {
21
+ buf: Buffer;
22
+ compressed: boolean;
23
+ }
24
+ export type PrivateKeyInput = string | Buffer | PrivateKeyData | BN | PrivateKeyObject | HDPrivateKeyDerivedData;
25
+ export declare class PrivateKey {
26
+ readonly bn: BN;
27
+ readonly compressed: boolean;
28
+ readonly network: Network;
29
+ private _pubkey?;
30
+ constructor(data?: PrivateKeyInput, network?: Network | string);
31
+ get publicKey(): PublicKey;
32
+ private _classifyArguments;
33
+ private static _getRandomBN;
34
+ private static _transformBuffer;
35
+ private static _transformBNBuffer;
36
+ private static _transformWIF;
37
+ private static _transformObject;
38
+ static fromBuffer(arg: Buffer, network?: Network | string): PrivateKey;
39
+ static fromString(str: string, network?: Network | string): PrivateKey;
40
+ static fromWIF(str: string, network?: Network | string): PrivateKey;
41
+ static fromObject(obj: PrivateKeyObject, network?: Network | string): PrivateKey;
42
+ static fromRandom(network?: Network | string): PrivateKey;
43
+ static getValidationError(data: PrivateKeyInput, network?: Network | string): Error | null;
44
+ static isValid(data: PrivateKeyInput, network?: Network | string): boolean;
45
+ toString(): string;
46
+ toWIF(compressed?: boolean): string;
47
+ toBigNumber(): BN;
48
+ toBuffer(): Buffer;
49
+ toBufferNoPadding(): Buffer;
50
+ toPublicKey(): PublicKey;
51
+ toAddress(network?: Network | string): Address;
52
+ toObject(): PrivateKeySerialized;
53
+ toJSON(): PrivateKeySerialized;
54
+ inspect(): string;
55
+ }
56
+ //# sourceMappingURL=privatekey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"privatekey.d.ts","sourceRoot":"","sources":["../../../lib/bitcore/privatekey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAKnC,OAAO,EACL,OAAO,EAIR,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,EAAE,CAAA;IACP,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,cAAc,GACd,EAAE,GACF,gBAAgB,GAChB,uBAAuB,CAAA;AAE3B,qBAAa,UAAU;IACrB,QAAQ,CAAC,EAAE,EAAG,EAAE,CAAA;IAChB,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAA;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAW;gBAEf,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM;IA2B9D,IAAI,SAAS,IAAI,SAAS,CAEzB;IAMD,OAAO,CAAC,kBAAkB;IAoD1B,OAAO,CAAC,MAAM,CAAC,YAAY;IAY3B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAoD/B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAejC,OAAO,CAAC,MAAM,CAAC,aAAa;IAU5B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU;IAOtE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU;IAYtE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU;IAOnE,MAAM,CAAC,UAAU,CACf,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GACzB,UAAU;IAUb,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,UAAU;IAQzD,MAAM,CAAC,kBAAkB,CACvB,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GACzB,KAAK,GAAG,IAAI;IAYf,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAU1E,QAAQ,IAAI,MAAM;IASlB,KAAK,CAAC,UAAU,GAAE,OAAc,GAAG,MAAM;IAqBzC,WAAW,IAAI,EAAE;IAOjB,QAAQ,IAAI,MAAM;IAOlB,iBAAiB,IAAI,MAAM;IAO3B,WAAW,IAAI,SAAS;IAYxB,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAQ9C,QAAQ,IAAI,oBAAoB;IAWhC,MAAM,IAAI,oBAAoB;IAO9B,OAAO,IAAI,MAAM;CAIlB"}
@@ -0,0 +1,237 @@
1
+ import { BN } from './crypto/bn.js';
2
+ import { Point } from './crypto/point.js';
3
+ import { Random } from './crypto/random.js';
4
+ import { Base58Check } from './encoding/base58check.js';
5
+ import { JSUtil } from './util/js.js';
6
+ import { get as getNetwork, defaultNetwork, } from './networks.js';
7
+ import { PublicKey } from './publickey.js';
8
+ import { Address } from './address.js';
9
+ export class PrivateKey {
10
+ bn;
11
+ compressed;
12
+ network;
13
+ _pubkey;
14
+ constructor(data, network) {
15
+ if (data instanceof PrivateKey) {
16
+ return data;
17
+ }
18
+ const info = this._classifyArguments(data, network);
19
+ if (!info.bn || info.bn.isZero()) {
20
+ throw new TypeError('Number can not be equal to zero, undefined, null or false');
21
+ }
22
+ if (!info.bn.lt(Point.getN())) {
23
+ throw new TypeError('Number must be less than N');
24
+ }
25
+ if (!info.network) {
26
+ throw new TypeError('Must specify the network ("livenet" or "testnet")');
27
+ }
28
+ JSUtil.defineImmutable(this, {
29
+ bn: info.bn,
30
+ compressed: info.compressed,
31
+ network: info.network,
32
+ });
33
+ }
34
+ get publicKey() {
35
+ return this.toPublicKey();
36
+ }
37
+ _classifyArguments(data, network) {
38
+ const info = {
39
+ compressed: true,
40
+ network: network ? getNetwork(network) || defaultNetwork : defaultNetwork,
41
+ };
42
+ if (data === undefined || data === null) {
43
+ info.bn = PrivateKey._getRandomBN();
44
+ }
45
+ else if (data instanceof BN) {
46
+ info.bn = data;
47
+ }
48
+ else if (Buffer.isBuffer(data)) {
49
+ const bufferInfo = PrivateKey._transformBuffer(data, network);
50
+ Object.assign(info, bufferInfo);
51
+ }
52
+ else if (typeof data === 'object' &&
53
+ data !== null &&
54
+ 'compressed' in data &&
55
+ 'buf' in data) {
56
+ info.compressed = data.compressed;
57
+ info.bn = new BN(data.buf, 'be');
58
+ }
59
+ else if (typeof data === 'object' &&
60
+ data !== null &&
61
+ 'bn' in data &&
62
+ 'network' in data) {
63
+ const objectInfo = PrivateKey._transformObject(data);
64
+ Object.assign(info, objectInfo);
65
+ }
66
+ else if (!network && typeof data === 'string' && getNetwork(data)) {
67
+ info.bn = PrivateKey._getRandomBN();
68
+ info.network = getNetwork(data);
69
+ }
70
+ else if (typeof data === 'string') {
71
+ if (JSUtil.isHexa(data)) {
72
+ info.bn = new BN(data, 16);
73
+ }
74
+ else {
75
+ const wifInfo = PrivateKey._transformWIF(data, network);
76
+ Object.assign(info, wifInfo);
77
+ }
78
+ }
79
+ else {
80
+ throw new TypeError('First argument is an unrecognized data type.');
81
+ }
82
+ return info;
83
+ }
84
+ static _getRandomBN() {
85
+ let bn;
86
+ do {
87
+ const privbuf = Random.getPseudoRandomBuffer(32);
88
+ bn = new BN(privbuf, 'be');
89
+ } while (!bn.lt(Point.getN()));
90
+ return bn;
91
+ }
92
+ static _transformBuffer(buf, network) {
93
+ const info = {};
94
+ if (buf.length === 32) {
95
+ return PrivateKey._transformBNBuffer(buf, network);
96
+ }
97
+ const detectedNetwork = getNetwork(buf[0], 'privatekey');
98
+ if (!detectedNetwork) {
99
+ throw new Error('Invalid network');
100
+ }
101
+ info.network = detectedNetwork;
102
+ if (network) {
103
+ const specifiedNetwork = getNetwork(network);
104
+ if (specifiedNetwork && info.network !== specifiedNetwork) {
105
+ const isCompatible = (info.network.name === 'testnet' &&
106
+ specifiedNetwork.name === 'regtest') ||
107
+ (info.network.name === 'regtest' &&
108
+ specifiedNetwork.name === 'testnet');
109
+ if (!isCompatible) {
110
+ throw new TypeError('Private key network mismatch');
111
+ }
112
+ info.network = specifiedNetwork;
113
+ }
114
+ }
115
+ if (buf.length === 1 + 32 + 1 && buf[1 + 32 + 1 - 1] === 1) {
116
+ info.compressed = true;
117
+ }
118
+ else if (buf.length === 1 + 32) {
119
+ info.compressed = false;
120
+ }
121
+ else {
122
+ throw new Error('Length of buffer must be 33 (uncompressed) or 34 (compressed)');
123
+ }
124
+ info.bn = new BN(buf.subarray(1, 32 + 1), 'be');
125
+ return info;
126
+ }
127
+ static _transformBNBuffer(buf, network) {
128
+ network ||= defaultNetwork;
129
+ return {
130
+ network: getNetwork(network),
131
+ bn: new BN(buf, 'be'),
132
+ compressed: true,
133
+ };
134
+ }
135
+ static _transformWIF(str, network) {
136
+ return PrivateKey._transformBuffer(Base58Check.decode(str), network);
137
+ }
138
+ static _transformObject(json) {
139
+ const bn = new BN(json.bn, 16);
140
+ const network = getNetwork(json.network);
141
+ return {
142
+ bn: bn,
143
+ network: network || defaultNetwork,
144
+ compressed: json.compressed,
145
+ };
146
+ }
147
+ static fromBuffer(arg, network) {
148
+ return new PrivateKey(arg, network);
149
+ }
150
+ static fromString(str, network) {
151
+ if (typeof str !== 'string') {
152
+ throw new Error('First argument is expected to be a string.');
153
+ }
154
+ return new PrivateKey(str, network);
155
+ }
156
+ static fromWIF(str, network) {
157
+ return PrivateKey.fromString(str, network ?? defaultNetwork);
158
+ }
159
+ static fromObject(obj, network) {
160
+ if (typeof obj !== 'object') {
161
+ throw new Error('First argument is expected to be an object.');
162
+ }
163
+ return new PrivateKey(obj, network);
164
+ }
165
+ static fromRandom(network) {
166
+ const bn = PrivateKey._getRandomBN();
167
+ return new PrivateKey(bn, network);
168
+ }
169
+ static getValidationError(data, network) {
170
+ try {
171
+ new PrivateKey(data, network);
172
+ return null;
173
+ }
174
+ catch (e) {
175
+ return e;
176
+ }
177
+ }
178
+ static isValid(data, network) {
179
+ if (!data) {
180
+ return false;
181
+ }
182
+ return !PrivateKey.getValidationError(data, network);
183
+ }
184
+ toString() {
185
+ return this.toBuffer().toString('hex');
186
+ }
187
+ toWIF(compressed = true) {
188
+ let buf;
189
+ if (compressed) {
190
+ buf = Buffer.concat([
191
+ Buffer.from([this.network.privatekey]),
192
+ this.bn.toArrayLike(Buffer, 'be', 32),
193
+ Buffer.from([0x01]),
194
+ ]);
195
+ }
196
+ else {
197
+ buf = Buffer.concat([
198
+ Buffer.from([this.network.privatekey]),
199
+ this.bn.toArrayLike(Buffer, 'be', 32),
200
+ ]);
201
+ }
202
+ return Base58Check.encode(buf);
203
+ }
204
+ toBigNumber() {
205
+ return this.bn;
206
+ }
207
+ toBuffer() {
208
+ return this.bn.toArrayLike(Buffer, 'be', 32);
209
+ }
210
+ toBufferNoPadding() {
211
+ return this.bn.toArrayLike(Buffer, 'be');
212
+ }
213
+ toPublicKey() {
214
+ if (!this._pubkey) {
215
+ this._pubkey = PublicKey.fromPrivateKey(this);
216
+ }
217
+ return this._pubkey;
218
+ }
219
+ toAddress(network) {
220
+ const pubkey = this.toPublicKey();
221
+ return Address.fromPublicKey(pubkey, network ?? this.network.name);
222
+ }
223
+ toObject() {
224
+ return {
225
+ bn: this.bn.toString(16),
226
+ compressed: this.compressed,
227
+ network: this.network.toString(),
228
+ };
229
+ }
230
+ toJSON() {
231
+ return this.toObject();
232
+ }
233
+ inspect() {
234
+ const uncompressed = !this.compressed ? ', uncompressed' : '';
235
+ return `<PrivateKey: ${this.toString()}, network: ${this.network}${uncompressed}>`;
236
+ }
237
+ }
@@ -0,0 +1,59 @@
1
+ import { BN } from './crypto/bn.js';
2
+ import { Point } from './crypto/point.js';
3
+ import { Network } from './networks.js';
4
+ import { PrivateKey } from './privatekey.js';
5
+ import { Address } from './address.js';
6
+ export interface PublicKeyData {
7
+ point: Point;
8
+ compressed: boolean;
9
+ network?: Network;
10
+ }
11
+ export interface PublicKeyExtra {
12
+ network?: Network | string;
13
+ compressed?: boolean;
14
+ }
15
+ export interface PublicKeyObject {
16
+ x: string;
17
+ y: string;
18
+ compressed: boolean;
19
+ }
20
+ export interface PublicKeySerialized {
21
+ x: string;
22
+ y: string;
23
+ compressed: boolean;
24
+ }
25
+ export type PublicKeyInput = Point | PublicKeyObject | string | Buffer | PrivateKey;
26
+ export declare class PublicKey {
27
+ readonly point: Point;
28
+ readonly compressed: boolean;
29
+ readonly network: Network;
30
+ constructor(data: PublicKeyInput, extra?: PublicKeyExtra);
31
+ private _classifyArgs;
32
+ private static _isPrivateKey;
33
+ private static _isBuffer;
34
+ private static _transformPrivateKey;
35
+ private static _transformDER;
36
+ private static _transformX;
37
+ private static _transformObject;
38
+ static fromPrivateKey(privkey: PrivateKey): PublicKey;
39
+ static fromDER(buf: Buffer, strict?: boolean): PublicKey;
40
+ static fromBuffer(buf: Buffer, strict?: boolean): PublicKey;
41
+ static fromPoint(point: Point, compressed?: boolean): PublicKey;
42
+ static fromString(str: string, encoding?: string): PublicKey;
43
+ static fromX(odd: boolean, x: BN): PublicKey;
44
+ static getValidationError(data: PublicKeyInput): Error | null;
45
+ static isValid(data: PublicKeyInput): boolean;
46
+ static isValid(data: PublicKey): boolean;
47
+ toObject(): PublicKeySerialized;
48
+ toJSON(): PublicKeySerialized;
49
+ toBigNumber(): BN;
50
+ toBuffer(): Buffer;
51
+ toDER(): Buffer;
52
+ _getID(): Buffer;
53
+ toAddress(network?: Network | string): Address;
54
+ toString(): string;
55
+ inspect(): string;
56
+ addScalar(scalar: Buffer | BN): PublicKey;
57
+ static getN(): BN;
58
+ }
59
+ //# sourceMappingURL=publickey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publickey.d.ts","sourceRoot":"","sources":["../../../lib/bitcore/publickey.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAGzC,OAAO,EAAE,OAAO,EAAqC,MAAM,eAAe,CAAA;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,cAAc,GACtB,KAAK,GACL,eAAe,GACf,MAAM,GACN,MAAM,GACN,UAAU,CAAA;AAEd,qBAAa,SAAS;IACpB,QAAQ,CAAC,KAAK,EAAG,KAAK,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAG,OAAO,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAG,OAAO,CAAA;gBAEd,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,cAAc;IA4BxD,OAAO,CAAC,aAAa;IA+CrB,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,SAAS;IAOxB,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC,OAAO,CAAC,MAAM,CAAC,aAAa;IAmD5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAa/B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAcrD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAaxD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS;IAO3D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS;IAY/D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS;IAW5D,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,SAAS;IAU5C,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,KAAK,GAAG,IAAI;IAY7D,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO;IAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAWxC,QAAQ,IAAI,mBAAmB;IAW/B,MAAM,IAAI,mBAAmB;IAO7B,WAAW,IAAI,EAAE;IAOjB,QAAQ,IAAI,MAAM;IAOlB,KAAK,IAAI,MAAM;IAyBf,MAAM,IAAI,MAAM;IAOhB,SAAS,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO;IAO9C,QAAQ,IAAI,MAAM;IAOlB,OAAO,IAAI,MAAM;IAkBjB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,SAAS;IAuBzC,MAAM,CAAC,IAAI,IAAI,EAAE;CAGlB"}