@bsv/sdk 1.0.0 → 1.0.1

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 (123) hide show
  1. package/README.md +25 -3
  2. package/package.json +9 -5
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
  4. package/.github/ISSUE_TEMPLATE/discussion.md +0 -24
  5. package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +0 -23
  6. package/CHANGELOG.md +0 -72
  7. package/CONTRIBUTING.md +0 -85
  8. package/ROADMAP.md +0 -3
  9. package/docs/getting-started/COMMONJS.md +0 -94
  10. package/docs/getting-started/REACT-TS.md +0 -131
  11. package/docs/getting-started/TS-NODE.md +0 -106
  12. package/docs/getting-started/VUE.md +0 -103
  13. package/jest.config.js +0 -6
  14. package/mod.ts +0 -8
  15. package/src/compat/BSM.ts +0 -51
  16. package/src/compat/ECIES.ts +0 -557
  17. package/src/compat/HD.ts +0 -348
  18. package/src/compat/Mnemonic.ts +0 -295
  19. package/src/compat/__tests/BSM.test.ts +0 -38
  20. package/src/compat/__tests/ECIES.test.ts +0 -90
  21. package/src/compat/__tests/HD.test.ts +0 -405
  22. package/src/compat/__tests/Mnemonic.test.ts +0 -177
  23. package/src/compat/__tests/Mnemonic.vectors.ts +0 -172
  24. package/src/compat/bip-39-wordlist-en.ts +0 -2053
  25. package/src/compat/index.ts +0 -4
  26. package/src/messages/EncryptedMessage.ts +0 -70
  27. package/src/messages/SignedMessage.ts +0 -87
  28. package/src/messages/__tests/EncryptedMessage.test.ts +0 -36
  29. package/src/messages/__tests/SignedMessage.test.ts +0 -53
  30. package/src/messages/index.ts +0 -2
  31. package/src/primitives/AESGCM.ts +0 -479
  32. package/src/primitives/BasePoint.ts +0 -21
  33. package/src/primitives/BigNumber.ts +0 -4619
  34. package/src/primitives/Curve.ts +0 -1163
  35. package/src/primitives/DRBG.ts +0 -102
  36. package/src/primitives/ECDSA.ts +0 -164
  37. package/src/primitives/Hash.ts +0 -1420
  38. package/src/primitives/JacobianPoint.ts +0 -410
  39. package/src/primitives/K256.ts +0 -116
  40. package/src/primitives/Mersenne.ts +0 -123
  41. package/src/primitives/MontgomoryMethod.ts +0 -160
  42. package/src/primitives/Point.ts +0 -852
  43. package/src/primitives/PrivateKey.ts +0 -195
  44. package/src/primitives/PublicKey.ts +0 -154
  45. package/src/primitives/Random.ts +0 -55
  46. package/src/primitives/ReductionContext.ts +0 -528
  47. package/src/primitives/Signature.ts +0 -235
  48. package/src/primitives/SymmetricKey.ts +0 -75
  49. package/src/primitives/TransactionSignature.ts +0 -189
  50. package/src/primitives/__tests/AESGCM.test.ts +0 -338
  51. package/src/primitives/__tests/BRC42.private.vectors.ts +0 -33
  52. package/src/primitives/__tests/BRC42.public.vectors.ts +0 -33
  53. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +0 -572
  54. package/src/primitives/__tests/BigNumber.binary.test.ts +0 -203
  55. package/src/primitives/__tests/BigNumber.constructor.test.ts +0 -176
  56. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +0 -18
  57. package/src/primitives/__tests/BigNumber.fixtures.ts +0 -264
  58. package/src/primitives/__tests/BigNumber.serializers.test.ts +0 -157
  59. package/src/primitives/__tests/BigNumber.utils.test.ts +0 -347
  60. package/src/primitives/__tests/Curve.unit.test.ts +0 -192
  61. package/src/primitives/__tests/DRBG.test.ts +0 -18
  62. package/src/primitives/__tests/DRBG.vectors.ts +0 -167
  63. package/src/primitives/__tests/ECDH.test.ts +0 -31
  64. package/src/primitives/__tests/ECDSA.test.ts +0 -58
  65. package/src/primitives/__tests/HMAC.test.ts +0 -59
  66. package/src/primitives/__tests/Hash.test.ts +0 -121
  67. package/src/primitives/__tests/PBKDF2.vectors.ts +0 -119
  68. package/src/primitives/__tests/PrivateKey.test.ts +0 -17
  69. package/src/primitives/__tests/PublicKey.test.ts +0 -66
  70. package/src/primitives/__tests/Random.test.ts +0 -14
  71. package/src/primitives/__tests/Reader.test.ts +0 -296
  72. package/src/primitives/__tests/ReductionContext.test.ts +0 -279
  73. package/src/primitives/__tests/SymmetricKey.test.ts +0 -58
  74. package/src/primitives/__tests/SymmetricKey.vectors.ts +0 -40
  75. package/src/primitives/__tests/Writer.test.ts +0 -198
  76. package/src/primitives/__tests/sighash.vectors.ts +0 -3503
  77. package/src/primitives/__tests/utils.test.ts +0 -108
  78. package/src/primitives/index.ts +0 -8
  79. package/src/primitives/utils.ts +0 -665
  80. package/src/script/LockingScript.ts +0 -30
  81. package/src/script/OP.ts +0 -219
  82. package/src/script/Script.ts +0 -426
  83. package/src/script/ScriptChunk.ts +0 -7
  84. package/src/script/ScriptTemplate.ts +0 -36
  85. package/src/script/Spend.ts +0 -1379
  86. package/src/script/UnlockingScript.ts +0 -30
  87. package/src/script/__tests/Script.test.ts +0 -369
  88. package/src/script/__tests/Spend.test.ts +0 -248
  89. package/src/script/__tests/script.invalid.vectors.ts +0 -925
  90. package/src/script/__tests/script.valid.vectors.ts +0 -1120
  91. package/src/script/__tests/scriptFromVector.ts +0 -42
  92. package/src/script/__tests/spend.valid.vectors.ts +0 -2288
  93. package/src/script/index.ts +0 -7
  94. package/src/script/templates/P2PKH.ts +0 -109
  95. package/src/script/templates/RPuzzle.ts +0 -140
  96. package/src/script/templates/index.ts +0 -2
  97. package/src/transaction/Broadcaster.ts +0 -42
  98. package/src/transaction/ChainTracker.ts +0 -22
  99. package/src/transaction/FeeModel.ts +0 -13
  100. package/src/transaction/MerklePath.ts +0 -259
  101. package/src/transaction/Transaction.ts +0 -602
  102. package/src/transaction/TransactionInput.ts +0 -63
  103. package/src/transaction/TransactionOutput.ts +0 -37
  104. package/src/transaction/__tests/MerklePath.test.ts +0 -181
  105. package/src/transaction/__tests/Transaction.test.ts +0 -413
  106. package/src/transaction/__tests/bigtx.vectors.ts +0 -4
  107. package/src/transaction/__tests/bump.invalid.vectors.ts +0 -8
  108. package/src/transaction/__tests/bump.valid.vectors.ts +0 -4
  109. package/src/transaction/__tests/tx.invalid.vectors.ts +0 -281
  110. package/src/transaction/__tests/tx.valid.vectors.ts +0 -364
  111. package/src/transaction/broadcasters/ARC.ts +0 -106
  112. package/src/transaction/broadcasters/__tests/ARC.test.ts +0 -115
  113. package/src/transaction/broadcasters/index.ts +0 -1
  114. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +0 -71
  115. package/src/transaction/fee-models/index.ts +0 -1
  116. package/src/transaction/index.ts +0 -6
  117. package/ts2md.json +0 -5
  118. package/tsconfig.base.json +0 -26
  119. package/tsconfig.cjs.json +0 -11
  120. package/tsconfig.eslint.json +0 -12
  121. package/tsconfig.esm.json +0 -9
  122. package/tsconfig.json +0 -17
  123. package/tsconfig.types.json +0 -11
@@ -1,203 +0,0 @@
1
- /* eslint-env jest */
2
- import BigNumber from '../../../dist/cjs/src/primitives/BigNumber'
3
-
4
- describe('BN.js/Binary', function () {
5
- describe('.shl()', function () {
6
- it('should shl numbers', function () {
7
- expect(new BigNumber('69527932928').shln(13).toString(16)).toEqual('2060602000000')
8
- expect(new BigNumber('69527932928').shln(45).toString(16)).toEqual('206060200000000000000')
9
- })
10
-
11
- it('should ushl numbers', function () {
12
- expect(new BigNumber('69527932928').ushln(13).toString(16)).toEqual('2060602000000')
13
- expect(new BigNumber('69527932928').ushln(45).toString(16)).toEqual('206060200000000000000')
14
- })
15
- })
16
-
17
- describe('.shr()', function () {
18
- it('should shr numbers', function () {
19
- expect(new BigNumber('69527932928').shrn(13).toString(16)).toEqual('818180')
20
- expect(new BigNumber('69527932928').shrn(17).toString(16)).toEqual('81818')
21
- expect(new BigNumber('69527932928').shrn(256).toString(16)).toEqual('0')
22
- })
23
-
24
- it('should ushr numbers', function () {
25
- expect(new BigNumber('69527932928').ushrn(13).toString(16)).toEqual('818180')
26
- expect(new BigNumber('69527932928').ushrn(17).toString(16)).toEqual('81818')
27
- expect(new BigNumber('69527932928').ushrn(256).toString(16)).toEqual('0')
28
- })
29
- })
30
-
31
- describe('.bincn()', function () {
32
- it('should increment bit', function () {
33
- expect(new BigNumber(0).bincn(1).toString(16)).toEqual('2')
34
- expect(new BigNumber(2).bincn(1).toString(16)).toEqual('4')
35
- expect(new BigNumber(2).bincn(1).bincn(1).toString(16)).toEqual(new BigNumber(2).bincn(2).toString(16))
36
- expect(new BigNumber(0xffffff).bincn(1).toString(16)).toEqual('1000001')
37
- expect(new BigNumber(2).bincn(63).toString(16)).toEqual('8000000000000002')
38
- })
39
- })
40
-
41
- describe('.imaskn()', function () {
42
- it('should mask bits in-place', function () {
43
- expect(new BigNumber(0).imaskn(1).toString(16)).toEqual('0')
44
- expect(new BigNumber(3).imaskn(1).toString(16)).toEqual('1')
45
- expect(new BigNumber('123456789', 16).imaskn(4).toString(16)).toEqual('9')
46
- expect(new BigNumber('123456789', 16).imaskn(16).toString(16)).toEqual('6789')
47
- expect(new BigNumber('123456789', 16).imaskn(28).toString(16)).toEqual('3456789')
48
- })
49
-
50
- it('should not mask when number is bigger than length', function () {
51
- expect(new BigNumber(0xe3).imaskn(56).toString(16)).toEqual('e3')
52
- expect(new BigNumber(0xe3).imaskn(26).toString(16)).toEqual('e3')
53
- })
54
- })
55
-
56
- describe('.testn()', function () {
57
- it('should support test specific bit', function () {
58
- [
59
- 'ff',
60
- 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
61
- ].forEach(function (hex) {
62
- const bn = new BigNumber(hex, 16)
63
- const bl = bn.bitLength()
64
-
65
- for (let i = 0; i < bl; ++i) {
66
- expect(bn.testn(i)).toEqual(true)
67
- }
68
-
69
- // test off the end
70
- expect(bn.testn(bl)).toEqual(false)
71
- })
72
-
73
- const xbits = '01111001010111001001000100011101' +
74
- '11010011101100011000111001011101' +
75
- '10010100111000000001011000111101' +
76
- '01011111001111100100011110000010' +
77
- '01011010100111010001010011000100' +
78
- '01101001011110100001001111100110' +
79
- '001110010111'
80
-
81
- const x = new BigNumber(
82
- '23478905234580795234378912401239784125643978256123048348957342'
83
- )
84
- for (let i = 0; i < x.bitLength(); ++i) {
85
- expect(x.testn(i)).toEqual(xbits.charAt(i) === '1')
86
- }
87
- })
88
-
89
- it('should have short-cuts', function () {
90
- const x = new BigNumber('abcd', 16)
91
- expect(!x.testn(128)).toEqual(true)
92
- })
93
- })
94
-
95
- describe('.and()', function () {
96
- it('should and numbers', function () {
97
- expect(new BigNumber('1010101010101010101010101010101010101010', 2)
98
- .and(new BigNumber('101010101010101010101010101010101010101', 2))
99
- .toString(2)).toEqual('0')
100
- })
101
-
102
- it('should and numbers of different limb-length', function () {
103
- expect(
104
- new BigNumber('abcd0000ffff', 16)
105
- .and(new BigNumber('abcd', 16)).toString(16)).toEqual('abcd')
106
- })
107
- })
108
-
109
- describe('.iand()', function () {
110
- it('should iand numbers', function () {
111
- expect(new BigNumber('1010101010101010101010101010101010101010', 2)
112
- .iand(new BigNumber('101010101010101010101010101010101010101', 2))
113
- .toString(2)).toEqual('0')
114
- expect(new BigNumber('1000000000000000000000000000000000000001', 2)
115
- .iand(new BigNumber('1', 2))
116
- .toString(2)).toEqual('1')
117
- expect(new BigNumber('1', 2)
118
- .iand(new BigNumber('1000000000000000000000000000000000000001', 2))
119
- .toString(2)).toEqual('1')
120
- })
121
- })
122
-
123
- describe('.or()', function () {
124
- it('should or numbers', function () {
125
- expect(new BigNumber('1010101010101010101010101010101010101010', 2)
126
- .or(new BigNumber('101010101010101010101010101010101010101', 2))
127
- .toString(2)).toEqual('1111111111111111111111111111111111111111')
128
- })
129
-
130
- it('should or numbers of different limb-length', function () {
131
- expect(
132
- new BigNumber('abcd00000000', 16)
133
- .or(new BigNumber('abcd', 16)).toString(16)).toEqual('abcd0000abcd')
134
- })
135
- })
136
-
137
- describe('.ior()', function () {
138
- it('should ior numbers', function () {
139
- expect(new BigNumber('1010101010101010101010101010101010101010', 2)
140
- .ior(new BigNumber('101010101010101010101010101010101010101', 2))
141
- .toString(2)).toEqual('1111111111111111111111111111111111111111')
142
- expect(new BigNumber('1000000000000000000000000000000000000000', 2)
143
- .ior(new BigNumber('1', 2))
144
- .toString(2)).toEqual('1000000000000000000000000000000000000001')
145
- expect(new BigNumber('1', 2)
146
- .ior(new BigNumber('1000000000000000000000000000000000000000', 2))
147
- .toString(2)).toEqual('1000000000000000000000000000000000000001')
148
- })
149
- })
150
-
151
- describe('.xor()', function () {
152
- it('should xor numbers', function () {
153
- expect(new BigNumber('11001100110011001100110011001100', 2)
154
- .xor(new BigNumber('1100110011001100110011001100110', 2))
155
- .toString(2)).toEqual('10101010101010101010101010101010')
156
- })
157
- })
158
-
159
- describe('.ixor()', function () {
160
- it('should ixor numbers', function () {
161
- expect(new BigNumber('11001100110011001100110011001100', 2)
162
- .ixor(new BigNumber('1100110011001100110011001100110', 2))
163
- .toString(2)).toEqual('10101010101010101010101010101010')
164
- expect(new BigNumber('11001100110011001100110011001100', 2)
165
- .ixor(new BigNumber('1', 2))
166
- .toString(2)).toEqual('11001100110011001100110011001101')
167
- expect(new BigNumber('1', 2)
168
- .ixor(new BigNumber('11001100110011001100110011001100', 2))
169
- .toString(2)).toEqual('11001100110011001100110011001101')
170
- })
171
-
172
- it('should and numbers of different limb-length', function () {
173
- expect(
174
- new BigNumber('abcd0000ffff', 16)
175
- .ixor(new BigNumber('abcd', 16)).toString(16)).toEqual('abcd00005432')
176
- })
177
- })
178
-
179
- describe('.setn()', function () {
180
- it('should allow single bits to be set', function () {
181
- expect(new BigNumber(0).setn(2, true).toString(2)).toEqual('100')
182
- expect(new BigNumber(0).setn(27, true).toString(2)).toEqual('1000000000000000000000000000')
183
- expect(new BigNumber(0).setn(63, true).toString(16)).toEqual(new BigNumber(1).iushln(63).toString(16))
184
- expect(new BigNumber('1000000000000000000000000001', 2).setn(27, false).toString(2)).toEqual('1')
185
- expect(new BigNumber('101', 2).setn(2, false).toString(2)).toEqual('1')
186
- })
187
- })
188
-
189
- describe('.notn()', function () {
190
- it('should allow bitwise negation', function () {
191
- expect(new BigNumber('111000111', 2).notn(9).toString(2)).toEqual('111000')
192
- expect(new BigNumber('000111000', 2).notn(9).toString(2)).toEqual('111000111')
193
- expect(new BigNumber('111000111', 2).notn(9).toString(2)).toEqual('111000')
194
- expect(new BigNumber('000111000', 2).notn(9).toString(2)).toEqual('111000111')
195
- expect(new BigNumber('111000111', 2).notn(32).toString(2)).toEqual('11111111111111111111111000111000')
196
- expect(new BigNumber('000111000', 2).notn(32).toString(2)).toEqual('11111111111111111111111111000111')
197
- expect(new BigNumber('111000111', 2).notn(68).toString(2)).toEqual('11111111111111111111111111111111' +
198
- '111111111111111111111111111000111000')
199
- expect(new BigNumber('000111000', 2).notn(68).toString(2)).toEqual('11111111111111111111111111111111' +
200
- '111111111111111111111111111111000111')
201
- })
202
- })
203
- })
@@ -1,176 +0,0 @@
1
- import BigNumber from '../../../dist/cjs/src/primitives/BigNumber'
2
-
3
- describe('BN.js/Constructor', () => {
4
- describe('with Smi input', () => {
5
- it('should accept one limb number', () => {
6
- expect(new BigNumber(12345).toString(16)).toEqual('3039')
7
- })
8
-
9
- it('should accept two-limb number', () => {
10
- expect(new BigNumber(0x4123456).toString(16)).toEqual('4123456')
11
- })
12
-
13
- it('should accept 52 bits of precision', () => {
14
- const num = Math.pow(2, 52)
15
- expect(new BigNumber(num, 10).toString(10)).toEqual(num.toString(10))
16
- })
17
-
18
- it('should accept max safe integer', () => {
19
- const num = Math.pow(2, 53) - 1
20
- expect(new BigNumber(num, 10).toString(10)).toEqual(num.toString(10))
21
- })
22
-
23
- it('should not accept an unsafe integer', () => {
24
- const num = Math.pow(2, 53)
25
-
26
- expect(() => {
27
- return new BigNumber(num, 10)
28
- }).toThrow(new Error('The number is larger than 2 ^ 53 (unsafe)'))
29
- })
30
-
31
- it('should accept two-limb LE number', () => {
32
- expect(new BigNumber(0x4123456, undefined, 'le').toString(16)).toEqual('56341204')
33
- })
34
- })
35
-
36
- describe('with String input', () => {
37
- it('should accept base-16', () => {
38
- expect(new BigNumber('1A6B765D8CDF', 16).toString(16)).toEqual('1a6b765d8cdf')
39
- expect(new BigNumber('1A6B765D8CDF', 16).toString()).toEqual('29048849665247')
40
- })
41
-
42
- it('should accept base-hex', () => {
43
- expect(new BigNumber('FF', 'hex').toString()).toEqual('255')
44
- })
45
-
46
- it('should accept base-16 with spaces', () => {
47
- const num = 'a89c e5af8724 c0a23e0e 0ff77500'
48
- expect(new BigNumber(num, 16).toString(16)).toEqual(num.replace(/ /g, ''))
49
- })
50
-
51
- it('should accept long base-16', () => {
52
- const num = '123456789abcdef123456789abcdef123456789abcdef'
53
- expect(new BigNumber(num, 16).toString(16)).toEqual(num)
54
- })
55
-
56
- it('should accept positive base-10', () => {
57
- expect(new BigNumber('10654321').toString()).toEqual('10654321')
58
- expect(new BigNumber('29048849665247').toString(16)).toEqual('1a6b765d8cdf')
59
- })
60
-
61
- it('should accept negative base-10', () => {
62
- expect(new BigNumber('-29048849665247').toString(16)).toEqual('-1a6b765d8cdf')
63
- })
64
-
65
- it('should accept long base-10', () => {
66
- const num = '10000000000000000'
67
- expect(new BigNumber(num).toString(10)).toEqual(num)
68
- })
69
-
70
- it('should accept base-2', () => {
71
- const base2 = '11111111111111111111111111111111111111111111111111111'
72
- expect(new BigNumber(base2, 2).toString(2)).toEqual(base2)
73
- })
74
-
75
- it('should accept base-36', () => {
76
- const base36 = 'zzZzzzZzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz'
77
- expect(new BigNumber(base36, 36).toString(36)).toEqual(base36.toLowerCase())
78
- })
79
-
80
- it('should not overflow limbs during base-10', () => {
81
- const num = '65820182292848241686198767302293' +
82
- '20890292528855852623664389292032'
83
- expect(new BigNumber(num).words[0]).toBeLessThan(0x4000000)
84
- })
85
-
86
- it('should accept base-16 LE integer', () => {
87
- expect(new BigNumber('1A6B765D8CDF', 16, 'le').toString(16))
88
- .toEqual('df8c5d766b1a')
89
- })
90
-
91
- it('should accept base-16 LE integer with leading zeros', () => {
92
- expect(new BigNumber('0010', 16, 'le').toNumber()).toEqual(4096)
93
- expect(new BigNumber('-010', 16, 'le').toNumber()).toEqual(-4096)
94
- expect(new BigNumber('010', 16, 'le').toNumber()).toEqual(4096)
95
- })
96
-
97
- it('should not accept wrong characters for base', () => {
98
- expect(() => {
99
- return new BigNumber('01FF')
100
- }).toThrow(new Error('Invalid character'))
101
- })
102
-
103
- it('should not accept decimal', () => {
104
- expect(() => {
105
- new BigNumber('10.00', 10) // eslint-disable-line no-new
106
- }).toThrow(new Error('Invalid character'))
107
-
108
- expect(() => {
109
- new BigNumber('16.00', 16) // eslint-disable-line no-new
110
- }).toThrow(/* new Error('Invalid character') */)
111
- })
112
-
113
- it('should not accept non-hex characters', () => {
114
- [
115
- '0000000z',
116
- '000000gg',
117
- '0000gg00',
118
- 'fffggfff',
119
- '/0000000',
120
- '0-000000', // if -, is first, that is OK
121
- 'ff.fffff',
122
- 'hexadecimal'
123
- ].forEach(function (str) {
124
- expect(() => {
125
- new BigNumber(str, 16) // eslint-disable-line no-new
126
- }).toThrow(/* Invalid character in */)
127
- })
128
- })
129
- })
130
-
131
- describe('with Array input', () => {
132
- it('should not fail on empty array', () => {
133
- expect(new BigNumber([]).toString(16)).toEqual('0')
134
- })
135
-
136
- it('should import/export big endian', () => {
137
- expect(new BigNumber([0, 1], 16).toString(16)).toEqual('1')
138
- expect(new BigNumber([1, 2, 3]).toString(16)).toEqual('10203')
139
- expect(new BigNumber([1, 2, 3, 4]).toString(16)).toEqual('1020304')
140
- expect(new BigNumber([1, 2, 3, 4, 5]).toString(16)).toEqual('102030405')
141
- expect(new BigNumber([1, 2, 3, 4, 5, 6, 7, 8]).toString(16)).toEqual(
142
- '102030405060708')
143
- expect(new BigNumber([1, 2, 3, 4]).toArray().join(',')).toEqual('1,2,3,4')
144
- expect(new BigNumber([1, 2, 3, 4, 5, 6, 7, 8]).toArray().join(',')).toEqual('1,2,3,4,5,6,7,8')
145
- })
146
-
147
- it('should import little endian', () => {
148
- expect(new BigNumber([0, 1], 16, 'le').toString(16)).toEqual('100')
149
- expect(new BigNumber([1, 2, 3], 16, 'le').toString(16)).toEqual('30201')
150
- expect(new BigNumber([1, 2, 3, 4], 16, 'le').toString(16)).toEqual('4030201')
151
- expect(new BigNumber([1, 2, 3, 4, 5], 16, 'le').toString(16)).toEqual('504030201')
152
- expect(new BigNumber([1, 2, 3, 4, 5, 6, 7, 8], 'le').toString(16)).toEqual('807060504030201')
153
- expect(new BigNumber([1, 2, 3, 4]).toArray('le').join(',')).toEqual('4,3,2,1')
154
- expect(new BigNumber([1, 2, 3, 4, 5, 6, 7, 8]).toArray('le').join(',')).toEqual('8,7,6,5,4,3,2,1')
155
- })
156
-
157
- it('should import big endian with implicit base', () => {
158
- expect(new BigNumber([1, 2, 3, 4, 5], 'le').toString(16)).toEqual('504030201')
159
- })
160
- })
161
-
162
- // the Array code is able to handle Buffer
163
- describe('with Buffer input', () => {
164
- it('should not fail on empty Buffer', () => {
165
- expect(new BigNumber(Buffer.alloc(0)).toString(16)).toEqual('0')
166
- })
167
-
168
- it('should import/export big endian', () => {
169
- expect(new BigNumber(Buffer.from('010203', 'hex')).toString(16)).toEqual('10203')
170
- })
171
-
172
- it('should import little endian', () => {
173
- expect(new BigNumber(Buffer.from('010203', 'hex'), 'le').toString(16)).toEqual('30201')
174
- })
175
- })
176
- })
@@ -1,18 +0,0 @@
1
- /* eslint-env jest */
2
- import BigNumber from '../../../dist/cjs/src/primitives/BigNumber'
3
- import ReductionContext from '../../../dist/cjs/src/primitives/ReductionContext'
4
- import { dhGroups } from './BigNumber.fixtures'
5
-
6
- describe('BN.js/Slow DH test', () => {
7
- Object.keys(dhGroups).forEach(function (name) {
8
- it('should match public key for ' + name + ' group', () => {
9
- const group = dhGroups[name]
10
- const base = new BigNumber(2)
11
- const mont = new ReductionContext(new BigNumber(group.prime, 16))
12
- const priv = new BigNumber(group.priv, 16)
13
- const multed = base.toRed(mont).redPow(priv).fromRed()
14
- const actual = Buffer.from(multed.toArray())
15
- expect(actual.toString('hex')).toEqual(group.pub)
16
- }, 3600 * 1000)
17
- })
18
- })
@@ -1,264 +0,0 @@
1
- export const dhGroups = {
2
- p16: {
3
- prime: 'ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd1' +
4
- '29024e088a67cc74020bbea63b139b22514a08798e3404dd' +
5
- 'ef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245' +
6
- 'e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7ed' +
7
- 'ee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3d' +
8
- 'c2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f' +
9
- '83655d23dca3ad961c62f356208552bb9ed529077096966d' +
10
- '670c354e4abc9804f1746c08ca18217c32905e462e36ce3b' +
11
- 'e39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9' +
12
- 'de2bcbf6955817183995497cea956ae515d2261898fa0510' +
13
- '15728e5a8aaac42dad33170d04507a33a85521abdf1cba64' +
14
- 'ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7' +
15
- 'abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6b' +
16
- 'f12ffa06d98a0864d87602733ec86a64521f2b18177b200c' +
17
- 'bbe117577a615d6c770988c0bad946e208e24fa074e5ab31' +
18
- '43db5bfce0fd108e4b82d120a92108011a723c12a787e6d7' +
19
- '88719a10bdba5b2699c327186af4e23c1a946834b6150bda' +
20
- '2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6' +
21
- '287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed' +
22
- '1f612970cee2d7afb81bdd762170481cd0069127d5b05aa9' +
23
- '93b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199' +
24
- 'ffffffffffffffff',
25
- priv: '6d5923e6449122cbbcc1b96093e0b7e4fd3e469f58daddae' +
26
- '53b49b20664f4132675df9ce98ae0cfdcac0f4181ccb643b' +
27
- '625f98104dcf6f7d8e81961e2cab4b5014895260cb977c7d' +
28
- '2f981f8532fb5da60b3676dfe57f293f05d525866053ac7e' +
29
- '65abfd19241146e92e64f309a97ef3b529af4d6189fa416c' +
30
- '9e1a816c3bdf88e5edf48fbd8233ef9038bb46faa95122c0' +
31
- '5a426be72039639cd2d53d37254b3d258960dcb33c255ede' +
32
- '20e9d7b4b123c8b4f4b986f53cdd510d042166f7dd7dca98' +
33
- '7c39ab36381ba30a5fdd027eb6128d2ef8e5802a2194d422' +
34
- 'b05fe6e1cb4817789b923d8636c1ec4b7601c90da3ddc178' +
35
- '52f59217ae070d87f2e75cbfb6ff92430ad26a71c8373452' +
36
- 'ae1cc5c93350e2d7b87e0acfeba401aaf518580937bf0b6c' +
37
- '341f8c49165a47e49ce50853989d07171c00f43dcddddf72' +
38
- '94fb9c3f4e1124e98ef656b797ef48974ddcd43a21fa06d0' +
39
- '565ae8ce494747ce9e0ea0166e76eb45279e5c6471db7df8' +
40
- 'cc88764be29666de9c545e72da36da2f7a352fb17bdeb982' +
41
- 'a6dc0193ec4bf00b2e533efd6cd4d46e6fb237b775615576' +
42
- 'dd6c7c7bbc087a25e6909d1ebc6e5b38e5c8472c0fc429c6' +
43
- 'f17da1838cbcd9bbef57c5b5522fd6053e62ba21fe97c826' +
44
- 'd3889d0cc17e5fa00b54d8d9f0f46fb523698af965950f4b' +
45
- '941369e180f0aece3870d9335f2301db251595d173902cad' +
46
- '394eaa6ffef8be6c',
47
- pub: 'd53703b7340bc89bfc47176d351e5cf86d5a18d9662eca3c' +
48
- '9759c83b6ccda8859649a5866524d77f79e501db923416ca' +
49
- '2636243836d3e6df752defc0fb19cc386e3ae48ad647753f' +
50
- 'bf415e2612f8a9fd01efe7aca249589590c7e6a0332630bb' +
51
- '29c5b3501265d720213790556f0f1d114a9e2071be3620bd' +
52
- '4ee1e8bb96689ac9e226f0a4203025f0267adc273a43582b' +
53
- '00b70b490343529eaec4dcff140773cd6654658517f51193' +
54
- '13f21f0a8e04fe7d7b21ffeca85ff8f87c42bb8d9cb13a72' +
55
- 'c00e9c6e9dfcedda0777af951cc8ccab90d35e915e707d8e' +
56
- '4c2aca219547dd78e9a1a0730accdc9ad0b854e51edd1e91' +
57
- '4756760bab156ca6e3cb9c625cf0870def34e9ac2e552800' +
58
- 'd6ce506d43dbbc75acfa0c8d8fb12daa3c783fb726f187d5' +
59
- '58131779239c912d389d0511e0f3a81969d12aeee670e48f' +
60
- 'ba41f7ed9f10705543689c2506b976a8ffabed45e33795b0' +
61
- '1df4f6b993a33d1deab1316a67419afa31fbb6fdd252ee8c' +
62
- '7c7d1d016c44e3fcf6b41898d7f206aa33760b505e4eff2e' +
63
- 'c624bc7fe636b1d59e45d6f904fc391419f13d1f0cdb5b6c' +
64
- '2378b09434159917dde709f8a6b5dc30994d056e3f964371' +
65
- '11587ac7af0a442b8367a7bd940f752ddabf31cf01171e24' +
66
- 'd78df136e9681cd974ce4f858a5fb6efd3234a91857bb52d' +
67
- '9e7b414a8bc66db4b5a73bbeccfb6eb764b4f0cbf0375136' +
68
- 'b024b04e698d54a5'
69
- },
70
- p17: {
71
- prime: 'ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd1' +
72
- '29024e088a67cc74020bbea63b139b22514a08798e3404dd' +
73
- 'ef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245' +
74
- 'e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7ed' +
75
- 'ee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3d' +
76
- 'c2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f' +
77
- '83655d23dca3ad961c62f356208552bb9ed529077096966d' +
78
- '670c354e4abc9804f1746c08ca18217c32905e462e36ce3b' +
79
- 'e39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9' +
80
- 'de2bcbf6955817183995497cea956ae515d2261898fa0510' +
81
- '15728e5a8aaac42dad33170d04507a33a85521abdf1cba64' +
82
- 'ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7' +
83
- 'abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6b' +
84
- 'f12ffa06d98a0864d87602733ec86a64521f2b18177b200c' +
85
- 'bbe117577a615d6c770988c0bad946e208e24fa074e5ab31' +
86
- '43db5bfce0fd108e4b82d120a92108011a723c12a787e6d7' +
87
- '88719a10bdba5b2699c327186af4e23c1a946834b6150bda' +
88
- '2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6' +
89
- '287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed' +
90
- '1f612970cee2d7afb81bdd762170481cd0069127d5b05aa9' +
91
- '93b4ea988d8fddc186ffb7dc90a6c08f4df435c934028492' +
92
- '36c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bd' +
93
- 'f8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831' +
94
- '179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1b' +
95
- 'db7f1447e6cc254b332051512bd7af426fb8f401378cd2bf' +
96
- '5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6' +
97
- 'd55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f3' +
98
- '23a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aa' +
99
- 'cc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be328' +
100
- '06a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55c' +
101
- 'da56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee' +
102
- '12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff',
103
- priv: '6017f2bc23e1caff5b0a8b4e1fc72422b5204415787801dc' +
104
- '025762b8dbb98ab57603aaaa27c4e6bdf742b4a1726b9375' +
105
- 'a8ca3cf07771779589831d8bd18ddeb79c43e7e77d433950' +
106
- 'e652e49df35b11fa09644874d71d62fdaffb580816c2c88c' +
107
- '2c4a2eefd4a660360316741b05a15a2e37f236692ad3c463' +
108
- 'fff559938fc6b77176e84e1bb47fb41af691c5eb7bb81bd8' +
109
- 'c918f52625a1128f754b08f5a1403b84667231c4dfe07ed4' +
110
- '326234c113931ce606037e960f35a2dfdec38a5f057884d3' +
111
- '0af8fab3be39c1eeb390205fd65982191fc21d5aa30ddf51' +
112
- 'a8e1c58c0c19fc4b4a7380ea9e836aaf671c90c29bc4bcc7' +
113
- '813811aa436a7a9005de9b507957c56a9caa1351b6efc620' +
114
- '7225a18f6e97f830fb6a8c4f03b82f4611e67ab9497b9271' +
115
- 'd6ac252793cc3e5538990dbd894d2dbc2d152801937d9f74' +
116
- 'da4b741b50b4d40e4c75e2ac163f7b397fd555648b249f97' +
117
- 'ffe58ffb6d096aa84534c4c5729cff137759bd34e80db4ab' +
118
- '47e2b9c52064e7f0bf677f72ac9e5d0c6606943683f9d12f' +
119
- '180cf065a5cb8ec3179a874f358847a907f8471d15f1e728' +
120
- '7023249d6d13c82da52628654438f47b8b5cdf4761fbf6ad' +
121
- '9219eceac657dbd06cf2ab776ad4c968f81c3d039367f0a4' +
122
- 'd77c7ec4435c27b6c147071665100063b5666e06eb2fb2cc' +
123
- '3159ba34bc98ca346342195f6f1fb053ddc3bc1873564d40' +
124
- '1c6738cdf764d6e1ff25ca5926f80102ea6593c17170966b' +
125
- 'b5d7352dd7fb821230237ea3ebed1f920feaadbd21be295a' +
126
- '69f2083deae9c5cdf5f4830eb04b7c1f80cc61c17232d79f' +
127
- '7ecc2cc462a7965f804001c89982734e5abba2d31df1b012' +
128
- '152c6b226dff34510b54be8c2cd68d795def66c57a3abfb6' +
129
- '896f1d139e633417f8c694764974d268f46ece3a8d6616ea' +
130
- 'a592144be48ee1e0a1595d3e5edfede5b27cec6c48ceb2ff' +
131
- 'b42cb44275851b0ebf87dfc9aa2d0cb0805e9454b051dfe8' +
132
- 'a29fadd82491a4b4c23f2d06ba45483ab59976da1433c9ce' +
133
- '500164b957a04cf62dd67595319b512fc4b998424d1164dd' +
134
- 'bbe5d1a0f7257cbb04ec9b5ed92079a1502d98725023ecb2',
135
- pub: '3bf836229c7dd874fe37c1790d201e82ed8e192ed61571ca' +
136
- '7285264974eb2a0171f3747b2fc23969a916cbd21e14f7e2' +
137
- 'f0d72dcd2247affba926f9e7bb99944cb5609aed85e71b89' +
138
- 'e89d2651550cb5bd8281bd3144066af78f194032aa777739' +
139
- 'cccb7862a1af401f99f7e5c693f25ddce2dedd9686633820' +
140
- 'd28d0f5ed0c6b5a094f5fe6170b8e2cbc9dff118398baee6' +
141
- 'e895a6301cb6e881b3cae749a5bdf5c56fc897ff68bc73f2' +
142
- '4811bb108b882872bade1f147d886a415cda2b93dd90190c' +
143
- 'be5c2dd53fe78add5960e97f58ff2506afe437f4cf4c912a' +
144
- '397c1a2139ac6207d3ab76e6b7ffd23bb6866dd7f87a9ae5' +
145
- '578789084ff2d06ea0d30156d7a10496e8ebe094f5703539' +
146
- '730f5fdbebc066de417be82c99c7da59953071f49da7878d' +
147
- 'a588775ff2a7f0084de390f009f372af75cdeba292b08ea8' +
148
- '4bd13a87e1ca678f9ad148145f7cef3620d69a891be46fbb' +
149
- 'cad858e2401ec0fd72abdea2f643e6d0197b7646fbb83220' +
150
- '0f4cf7a7f6a7559f9fb0d0f1680822af9dbd8dec4cd1b5e1' +
151
- '7bc799e902d9fe746ddf41da3b7020350d3600347398999a' +
152
- 'baf75d53e03ad2ee17de8a2032f1008c6c2e6618b62f225b' +
153
- 'a2f350179445debe68500fcbb6cae970a9920e321b468b74' +
154
- '5fb524fb88abbcacdca121d737c44d30724227a99745c209' +
155
- 'b970d1ff93bbc9f28b01b4e714d6c9cbd9ea032d4e964d8e' +
156
- '8fff01db095160c20b7646d9fcd314c4bc11bcc232aeccc0' +
157
- 'fbedccbc786951025597522eef283e3f56b44561a0765783' +
158
- '420128638c257e54b972a76e4261892d81222b3e2039c61a' +
159
- 'ab8408fcaac3d634f848ab3ee65ea1bd13c6cd75d2e78060' +
160
- 'e13cf67fbef8de66d2049e26c0541c679fff3e6afc290efe' +
161
- '875c213df9678e4a7ec484bc87dae5f0a1c26d7583e38941' +
162
- 'b7c68b004d4df8b004b666f9448aac1cc3ea21461f41ea5d' +
163
- 'd0f7a9e6161cfe0f58bcfd304bdc11d78c2e9d542e86c0b5' +
164
- '6985cc83f693f686eaac17411a8247bf62f5ccc7782349b5' +
165
- 'cc1f20e312fa2acc0197154d1bfee507e8db77e8f2732f2d' +
166
- '641440ccf248e8643b2bd1e1f9e8239356ab91098fcb431d',
167
- q: 'a899c59999bf877d96442d284359783bdc64b5f878b688fe' +
168
- '51407f0526e616553ad0aaaac4d5bed3046f10a1faaf42bb' +
169
- '2342dc4b7908eea0c46e4c4576897675c2bfdc4467870d3d' +
170
- 'cd90adaed4359237a4bc6924bfb99aa6bf5f5ede15b574ea' +
171
- 'e977eac096f3c67d09bda574c6306c6123fa89d2f086b8dc' +
172
- 'ff92bc570c18d83fe6c810ccfd22ce4c749ef5e6ead3fffe' +
173
- 'c63d95e0e3fde1df9db6a35fa1d107058f37e41957769199' +
174
- 'd945dd7a373622c65f0af3fd9eb1ddc5c764bbfaf7a3dc37' +
175
- '2548e683b970dac4aa4b9869080d2376c9adecebb84e172c' +
176
- '09aeeb25fb8df23e60033260c4f8aac6b8b98ab894b1fb84' +
177
- 'ebb83c0fb2081c3f3eee07f44e24d8fabf76f19ed167b0d7' +
178
- 'ff971565aa4efa3625fce5a43ceeaa3eebb3ce88a00f597f' +
179
- '048c69292b38dba2103ecdd5ec4ccfe3b2d87fa6202f334b' +
180
- 'c1cab83b608dfc875b650b69f2c7e23c0b2b4adf149a6100' +
181
- 'db1b6dbad4679ecb1ea95eafaba3bd00db11c2134f5a8686' +
182
- '358b8b2ab49a1b2e85e1e45caeac5cd4dc0b3b5fffba8871' +
183
- '1c6baf399edd48dad5e5c313702737a6dbdcede80ca358e5' +
184
- '1d1c4fe42e8948a084403f61baed38aa9a1a5ce2918e9f33' +
185
- '100050a430b47bc592995606440272a4994677577a6aaa1b' +
186
- 'a101045dbec5a4e9566dab5445d1af3ed19519f07ac4e2a8' +
187
- 'bd0a84b01978f203a9125a0be020f71fab56c2c9e344d4f4' +
188
- '12d53d3cd8eb74ca5122002e931e3cb0bd4b7492436be17a' +
189
- 'd7ebe27148671f59432c36d8c56eb762655711cfc8471f70' +
190
- '83a8b7283bcb3b1b1d47d37c23d030288cfcef05fbdb4e16' +
191
- '652ee03ee7b77056a808cd700bc3d9ef826eca9a59be959c' +
192
- '947c865d6b372a1ca2d503d7df6d7611b12111665438475a' +
193
- '1c64145849b3da8c2d343410df892d958db232617f9896f1' +
194
- 'de95b8b5a47132be80dd65298c7f2047858409bf762dbc05' +
195
- 'a62ca392ac40cfb8201a0607a2cae07d99a307625f2b2d04' +
196
- 'fe83fbd3ab53602263410f143b73d5b46fc761882e78c782' +
197
- 'd2c36e716a770a7aefaf7f76cea872db7bffefdbc4c2f9e0' +
198
- '39c19adac915e7a63dcb8c8c78c113f29a3e0bc10e100ce0',
199
- qs: '6f0a2fb763eaeb8eb324d564f03d4a55fdcd709e5f1b65e9' +
200
- '5702b0141182f9f945d71bc3e64a7dfdae7482a7dd5a4e58' +
201
- 'bc38f78de2013f2c468a621f08536969d2c8d011bb3bc259' +
202
- '2124692c91140a5472cad224acdacdeae5751dadfdf068b8' +
203
- '77bfa7374694c6a7be159fc3d24ff9eeeecaf62580427ad8' +
204
- '622d48c51a1c4b1701d768c79d8c819776e096d2694107a2' +
205
- 'f3ec0c32224795b59d32894834039dacb369280afb221bc0' +
206
- '90570a93cf409889b818bb30cccee98b2aa26dbba0f28499' +
207
- '08e1a3cd43fa1f1fb71049e5c77c3724d74dc351d9989057' +
208
- '37bbda3805bd6b1293da8774410fb66e3194e18cdb304dd9' +
209
- 'a0b59b583dcbc9fc045ac9d56aea5cfc9f8a0b95da1e11b7' +
210
- '574d1f976e45fe12294997fac66ca0b83fc056183549e850' +
211
- 'a11413cc4abbe39a211e8c8cbf82f2a23266b3c10ab9e286' +
212
- '07a1b6088909cddff856e1eb6b2cde8bdac53fa939827736' +
213
- 'ca1b892f6c95899613442bd02dbdb747f02487718e2d3f22' +
214
- 'f73734d29767ed8d0e346d0c4098b6fdcb4df7d0c4d29603' +
215
- '5bffe80d6c65ae0a1b814150d349096baaf950f2caf298d2' +
216
- 'b292a1d48cf82b10734fe8cedfa16914076dfe3e9b51337b' +
217
- 'ed28ea1e6824bb717b641ca0e526e175d3e5ed7892aebab0' +
218
- 'f207562cc938a821e2956107c09b6ce4049adddcd0b7505d' +
219
- '49ae6c69a20122461102d465d93dc03db026be54c303613a' +
220
- 'b8e5ce3fd4f65d0b6162ff740a0bf5469ffd442d8c509cd2' +
221
- '3b40dab90f6776ca17fc0678774bd6eee1fa85ababa52ec1' +
222
- 'a15031eb677c6c488661dddd8b83d6031fe294489ded5f08' +
223
- '8ad1689a14baeae7e688afa3033899c81f58de39b392ca94' +
224
- 'af6f15a46f19fa95c06f9493c8b96a9be25e78b9ea35013b' +
225
- 'caa76de6303939299d07426a88a334278fc3d0d9fa71373e' +
226
- 'be51d3c1076ab93a11d3d0d703366ff8cde4c11261d488e5' +
227
- '60a2bdf3bfe2476032294800d6a4a39d306e65c6d7d8d66e' +
228
- '5ec63eee94531e83a9bddc458a2b508285c0ee10b7bd94da' +
229
- '2815a0c5bd5b2e15cbe66355e42f5af8955cdfc0b3a4996d' +
230
- '288db1f4b32b15643b18193e378cb7491f3c3951cdd044b1' +
231
- 'a519571bffac2da986f5f1d506c66530a55f70751e24fa8e' +
232
- 'd83ac2347f4069fb561a5565e78c6f0207da24e889a93a96' +
233
- '65f717d9fe8a2938a09ab5f81be7ccecf466c0397fc15a57' +
234
- '469939793f302739765773c256a3ca55d0548afd117a7cae' +
235
- '98ca7e0d749a130c7b743d376848e255f8fdbe4cb4480b63' +
236
- 'cd2c015d1020cf095d175f3ca9dcdfbaf1b2a6e6468eee4c' +
237
- 'c750f2132a77f376bd9782b9d0ff4da98621b898e251a263' +
238
- '4301ba2214a8c430b2f7a79dbbfd6d7ff6e9b0c137b025ff' +
239
- '587c0bf912f0b19d4fff96b1ecd2ca990c89b386055c60f2' +
240
- '3b94214bd55096f17a7b2c0fa12b333235101cd6f28a128c' +
241
- '782e8a72671adadebbd073ded30bd7f09fb693565dcf0bf3' +
242
- '090c21d13e5b0989dd8956f18f17f4f69449a13549c9d80a' +
243
- '77e5e61b5aeeee9528634100e7bc390672f0ded1ca53555b' +
244
- 'abddbcf700b9da6192255bddf50a76b709fbed251dce4c7e' +
245
- '1ca36b85d1e97c1bc9d38c887a5adf140f9eeef674c31422' +
246
- 'e65f63cae719f8c1324e42fa5fd8500899ef5aa3f9856aa7' +
247
- 'ce10c85600a040343204f36bfeab8cfa6e9deb8a2edd2a8e' +
248
- '018d00c7c9fa3a251ad0f57183c37e6377797653f382ec7a' +
249
- '2b0145e16d3c856bc3634b46d90d7198aff12aff88a30e34' +
250
- 'e2bfaf62705f3382576a9d3eeb0829fca2387b5b654af46e' +
251
- '5cf6316fb57d59e5ea6c369061ac64d99671b0e516529dd5' +
252
- 'd9c48ea0503e55fee090d36c5ea8b5954f6fcc0060794e1c' +
253
- 'b7bc24aa1e5c0142fd4ce6e8fd5aa92a7bf84317ea9e1642' +
254
- 'b6995bac6705adf93cbce72433ed0871139970d640f67b78' +
255
- 'e63a7a6d849db2567df69ac7d79f8c62664ac221df228289' +
256
- 'd0a4f9ebd9acb4f87d49da64e51a619fd3f3baccbd9feb12' +
257
- '5abe0cc2c8d17ed1d8546da2b6c641f4d3020a5f9b9f26ac' +
258
- '16546c2d61385505612275ea344c2bbf1ce890023738f715' +
259
- '5e9eba6a071678c8ebd009c328c3eb643679de86e69a9fa5' +
260
- '67a9e146030ff03d546310a0a568c5ba0070e0da22f2cef8' +
261
- '54714b04d399bbc8fd261f9e8efcd0e83bdbc3f5cfb2d024' +
262
- '3e398478cc598e000124eb8858f9df8f52946c2a1ca5c400'
263
- }
264
- }