ccxt 4.2.18 → 4.2.19

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 (426) hide show
  1. package/README.md +8 -8
  2. package/dist/ccxt.browser.js +34202 -33193
  3. package/dist/ccxt.browser.min.js +2 -2
  4. package/dist/cjs/ccxt.js +12 -1
  5. package/dist/cjs/src/alpaca.js +18 -18
  6. package/dist/cjs/src/ascendex.js +13 -6
  7. package/dist/cjs/src/base/Exchange.js +266 -27
  8. package/dist/cjs/src/bigone.js +434 -168
  9. package/dist/cjs/src/binance.js +163 -34
  10. package/dist/cjs/src/binanceus.js +8 -0
  11. package/dist/cjs/src/bingx.js +183 -41
  12. package/dist/cjs/src/bitfinex.js +2 -3
  13. package/dist/cjs/src/bitget.js +59 -16
  14. package/dist/cjs/src/bitmart.js +5 -5
  15. package/dist/cjs/src/bitmex.js +4 -6
  16. package/dist/cjs/src/bitpanda.js +5 -1991
  17. package/dist/cjs/src/bitstamp.js +8 -0
  18. package/dist/cjs/src/bybit.js +27 -47
  19. package/dist/cjs/src/coinbase.js +176 -26
  20. package/dist/cjs/src/coincheck.js +1 -0
  21. package/dist/cjs/src/coinex.js +3 -0
  22. package/dist/cjs/src/coinlist.js +13 -6
  23. package/dist/cjs/src/coinone.js +2 -2
  24. package/dist/cjs/src/coinsph.js +4 -5
  25. package/dist/cjs/src/delta.js +7 -1
  26. package/dist/cjs/src/deribit.js +17 -4
  27. package/dist/cjs/src/gate.js +151 -169
  28. package/dist/cjs/src/gemini.js +1 -1
  29. package/dist/cjs/src/hitbtc.js +2 -3
  30. package/dist/cjs/src/htx.js +157 -7
  31. package/dist/cjs/src/huobijp.js +2 -3
  32. package/dist/cjs/src/independentreserve.js +7 -5
  33. package/dist/cjs/src/kraken.js +86 -54
  34. package/dist/cjs/src/kucoin.js +5 -0
  35. package/dist/cjs/src/kucoinfutures.js +131 -77
  36. package/dist/cjs/src/lbank.js +60 -33
  37. package/dist/cjs/src/luno.js +84 -2
  38. package/dist/cjs/src/mexc.js +3 -3
  39. package/dist/cjs/src/oceanex.js +1 -1
  40. package/dist/cjs/src/okx.js +23 -11
  41. package/dist/cjs/{js/src/bitpanda.js → src/onetrading.js} +39 -39
  42. package/dist/cjs/src/phemex.js +37 -27
  43. package/dist/cjs/src/poloniexfutures.js +1 -0
  44. package/dist/cjs/src/pro/binance.js +66 -25
  45. package/dist/cjs/src/pro/bitget.js +1 -1
  46. package/dist/cjs/src/pro/bitpanda.js +5 -1330
  47. package/dist/cjs/src/pro/coinbase.js +4 -1
  48. package/dist/cjs/src/pro/hitbtc.js +5 -4
  49. package/dist/cjs/src/pro/htx.js +6 -1
  50. package/dist/cjs/src/pro/kraken.js +1 -1
  51. package/dist/cjs/src/pro/krakenfutures.js +7 -1
  52. package/dist/cjs/src/pro/kucoin.js +46 -36
  53. package/dist/cjs/src/pro/kucoinfutures.js +45 -37
  54. package/dist/cjs/src/pro/lbank.js +881 -0
  55. package/dist/cjs/src/pro/okx.js +52 -2
  56. package/dist/cjs/{js/src/pro/bitpanda.js → src/pro/onetrading.js} +4 -7
  57. package/dist/cjs/src/pro/poloniex.js +2 -2
  58. package/dist/cjs/src/pro/poloniexfutures.js +43 -35
  59. package/dist/cjs/src/pro/woo.js +126 -0
  60. package/dist/cjs/src/probit.js +4 -2
  61. package/dist/cjs/src/upbit.js +12 -12
  62. package/dist/cjs/src/wavesexchange.js +1 -1
  63. package/dist/cjs/src/whitebit.js +1 -0
  64. package/dist/cjs/src/woo.js +56 -0
  65. package/js/ccxt.d.ts +11 -2
  66. package/js/ccxt.js +8 -2
  67. package/js/src/abstract/bitpanda.d.ts +4 -4
  68. package/js/src/abstract/bitstamp.d.ts +8 -0
  69. package/js/src/abstract/gate.d.ts +1 -0
  70. package/js/src/abstract/gateio.d.ts +1 -0
  71. package/js/src/abstract/htx.d.ts +3 -0
  72. package/js/src/abstract/huobi.d.ts +3 -0
  73. package/js/src/abstract/luno.d.ts +1 -0
  74. package/js/src/abstract/onetrading.d.ts +38 -0
  75. package/js/src/ascendex.js +2 -0
  76. package/js/src/bingx.js +1 -1
  77. package/js/src/bitget.js +22 -3
  78. package/js/src/bitpanda.d.ts +2 -72
  79. package/js/src/bitpanda.js +5 -1991
  80. package/js/src/bitstamp.js +8 -0
  81. package/js/src/deribit.js +11 -3
  82. package/js/src/gate.d.ts +1 -0
  83. package/js/src/gate.js +50 -110
  84. package/js/src/htx.js +3 -0
  85. package/js/src/kraken.d.ts +1 -0
  86. package/js/src/kraken.js +39 -38
  87. package/js/src/lbank.js +1 -0
  88. package/js/src/luno.d.ts +3 -1
  89. package/js/src/luno.js +84 -2
  90. package/js/src/mexc.js +1 -2
  91. package/js/src/onetrading.d.ts +74 -0
  92. package/js/src/onetrading.js +2003 -0
  93. package/js/src/poloniexfutures.js +1 -0
  94. package/js/src/pro/binance.js +6 -1
  95. package/js/src/pro/bitpanda.d.ts +2 -34
  96. package/js/src/pro/bitpanda.js +5 -1330
  97. package/js/src/pro/lbank.d.ts +29 -0
  98. package/js/src/pro/lbank.js +882 -0
  99. package/js/src/pro/onetrading.d.ts +36 -0
  100. package/js/src/pro/onetrading.js +1339 -0
  101. package/package.json +2 -2
  102. package/rollup.config.js +2 -0
  103. package/skip-tests.json +2 -1
  104. package/test-commonjs.cjs +25 -1
  105. package/dist/cjs/js/ccxt.js +0 -478
  106. package/dist/cjs/js/src/abstract/alpaca.js +0 -9
  107. package/dist/cjs/js/src/abstract/ascendex.js +0 -9
  108. package/dist/cjs/js/src/abstract/bigone.js +0 -9
  109. package/dist/cjs/js/src/abstract/binance.js +0 -9
  110. package/dist/cjs/js/src/abstract/bingx.js +0 -9
  111. package/dist/cjs/js/src/abstract/bit2c.js +0 -9
  112. package/dist/cjs/js/src/abstract/bitbank.js +0 -9
  113. package/dist/cjs/js/src/abstract/bitbns.js +0 -9
  114. package/dist/cjs/js/src/abstract/bitfinex.js +0 -9
  115. package/dist/cjs/js/src/abstract/bitfinex2.js +0 -9
  116. package/dist/cjs/js/src/abstract/bitflyer.js +0 -9
  117. package/dist/cjs/js/src/abstract/bitforex.js +0 -9
  118. package/dist/cjs/js/src/abstract/bitget.js +0 -9
  119. package/dist/cjs/js/src/abstract/bithumb.js +0 -9
  120. package/dist/cjs/js/src/abstract/bitmart.js +0 -9
  121. package/dist/cjs/js/src/abstract/bitmex.js +0 -9
  122. package/dist/cjs/js/src/abstract/bitopro.js +0 -9
  123. package/dist/cjs/js/src/abstract/bitpanda.js +0 -9
  124. package/dist/cjs/js/src/abstract/bitrue.js +0 -9
  125. package/dist/cjs/js/src/abstract/bitso.js +0 -9
  126. package/dist/cjs/js/src/abstract/bitstamp.js +0 -9
  127. package/dist/cjs/js/src/abstract/bitteam.js +0 -9
  128. package/dist/cjs/js/src/abstract/bitvavo.js +0 -9
  129. package/dist/cjs/js/src/abstract/bl3p.js +0 -9
  130. package/dist/cjs/js/src/abstract/blockchaincom.js +0 -9
  131. package/dist/cjs/js/src/abstract/btcalpha.js +0 -9
  132. package/dist/cjs/js/src/abstract/btcbox.js +0 -9
  133. package/dist/cjs/js/src/abstract/btcmarkets.js +0 -9
  134. package/dist/cjs/js/src/abstract/btcturk.js +0 -9
  135. package/dist/cjs/js/src/abstract/bybit.js +0 -9
  136. package/dist/cjs/js/src/abstract/cex.js +0 -9
  137. package/dist/cjs/js/src/abstract/coinbase.js +0 -9
  138. package/dist/cjs/js/src/abstract/coinbasepro.js +0 -9
  139. package/dist/cjs/js/src/abstract/coincheck.js +0 -9
  140. package/dist/cjs/js/src/abstract/coinex.js +0 -9
  141. package/dist/cjs/js/src/abstract/coinlist.js +0 -9
  142. package/dist/cjs/js/src/abstract/coinmate.js +0 -9
  143. package/dist/cjs/js/src/abstract/coinone.js +0 -9
  144. package/dist/cjs/js/src/abstract/coinsph.js +0 -9
  145. package/dist/cjs/js/src/abstract/coinspot.js +0 -9
  146. package/dist/cjs/js/src/abstract/cryptocom.js +0 -9
  147. package/dist/cjs/js/src/abstract/currencycom.js +0 -9
  148. package/dist/cjs/js/src/abstract/delta.js +0 -9
  149. package/dist/cjs/js/src/abstract/deribit.js +0 -9
  150. package/dist/cjs/js/src/abstract/digifinex.js +0 -9
  151. package/dist/cjs/js/src/abstract/exmo.js +0 -9
  152. package/dist/cjs/js/src/abstract/gate.js +0 -9
  153. package/dist/cjs/js/src/abstract/gemini.js +0 -9
  154. package/dist/cjs/js/src/abstract/hitbtc.js +0 -9
  155. package/dist/cjs/js/src/abstract/hollaex.js +0 -9
  156. package/dist/cjs/js/src/abstract/htx.js +0 -9
  157. package/dist/cjs/js/src/abstract/huobijp.js +0 -9
  158. package/dist/cjs/js/src/abstract/idex.js +0 -9
  159. package/dist/cjs/js/src/abstract/independentreserve.js +0 -9
  160. package/dist/cjs/js/src/abstract/indodax.js +0 -9
  161. package/dist/cjs/js/src/abstract/kraken.js +0 -9
  162. package/dist/cjs/js/src/abstract/krakenfutures.js +0 -9
  163. package/dist/cjs/js/src/abstract/kucoin.js +0 -9
  164. package/dist/cjs/js/src/abstract/kucoinfutures.js +0 -9
  165. package/dist/cjs/js/src/abstract/kuna.js +0 -9
  166. package/dist/cjs/js/src/abstract/latoken.js +0 -9
  167. package/dist/cjs/js/src/abstract/lbank.js +0 -9
  168. package/dist/cjs/js/src/abstract/luno.js +0 -9
  169. package/dist/cjs/js/src/abstract/lykke.js +0 -9
  170. package/dist/cjs/js/src/abstract/mercado.js +0 -9
  171. package/dist/cjs/js/src/abstract/mexc.js +0 -9
  172. package/dist/cjs/js/src/abstract/ndax.js +0 -9
  173. package/dist/cjs/js/src/abstract/novadax.js +0 -9
  174. package/dist/cjs/js/src/abstract/oceanex.js +0 -9
  175. package/dist/cjs/js/src/abstract/okcoin.js +0 -9
  176. package/dist/cjs/js/src/abstract/okx.js +0 -9
  177. package/dist/cjs/js/src/abstract/p2b.js +0 -9
  178. package/dist/cjs/js/src/abstract/paymium.js +0 -9
  179. package/dist/cjs/js/src/abstract/phemex.js +0 -9
  180. package/dist/cjs/js/src/abstract/poloniex.js +0 -9
  181. package/dist/cjs/js/src/abstract/poloniexfutures.js +0 -9
  182. package/dist/cjs/js/src/abstract/probit.js +0 -9
  183. package/dist/cjs/js/src/abstract/timex.js +0 -9
  184. package/dist/cjs/js/src/abstract/tokocrypto.js +0 -9
  185. package/dist/cjs/js/src/abstract/upbit.js +0 -9
  186. package/dist/cjs/js/src/abstract/wavesexchange.js +0 -9
  187. package/dist/cjs/js/src/abstract/wazirx.js +0 -9
  188. package/dist/cjs/js/src/abstract/whitebit.js +0 -9
  189. package/dist/cjs/js/src/abstract/woo.js +0 -9
  190. package/dist/cjs/js/src/abstract/yobit.js +0 -9
  191. package/dist/cjs/js/src/abstract/zaif.js +0 -9
  192. package/dist/cjs/js/src/abstract/zonda.js +0 -9
  193. package/dist/cjs/js/src/ace.js +0 -1058
  194. package/dist/cjs/js/src/alpaca.js +0 -1125
  195. package/dist/cjs/js/src/ascendex.js +0 -3365
  196. package/dist/cjs/js/src/base/Exchange.js +0 -5260
  197. package/dist/cjs/js/src/base/Precise.js +0 -263
  198. package/dist/cjs/js/src/base/errors.js +0 -299
  199. package/dist/cjs/js/src/base/functions/crypto.js +0 -78
  200. package/dist/cjs/js/src/base/functions/encode.js +0 -44
  201. package/dist/cjs/js/src/base/functions/generic.js +0 -193
  202. package/dist/cjs/js/src/base/functions/misc.js +0 -96
  203. package/dist/cjs/js/src/base/functions/number.js +0 -297
  204. package/dist/cjs/js/src/base/functions/platform.js +0 -28
  205. package/dist/cjs/js/src/base/functions/rsa.js +0 -34
  206. package/dist/cjs/js/src/base/functions/string.js +0 -48
  207. package/dist/cjs/js/src/base/functions/throttle.js +0 -66
  208. package/dist/cjs/js/src/base/functions/time.js +0 -187
  209. package/dist/cjs/js/src/base/functions/totp.js +0 -24
  210. package/dist/cjs/js/src/base/functions/type.js +0 -162
  211. package/dist/cjs/js/src/base/functions.js +0 -157
  212. package/dist/cjs/js/src/base/ws/Cache.js +0 -254
  213. package/dist/cjs/js/src/base/ws/Client.js +0 -299
  214. package/dist/cjs/js/src/base/ws/Future.js +0 -34
  215. package/dist/cjs/js/src/base/ws/OrderBook.js +0 -107
  216. package/dist/cjs/js/src/base/ws/OrderBookSide.js +0 -281
  217. package/dist/cjs/js/src/base/ws/WsClient.js +0 -69
  218. package/dist/cjs/js/src/bequant.js +0 -33
  219. package/dist/cjs/js/src/bigone.js +0 -2213
  220. package/dist/cjs/js/src/binance.js +0 -9851
  221. package/dist/cjs/js/src/binancecoinm.js +0 -45
  222. package/dist/cjs/js/src/binanceus.js +0 -92
  223. package/dist/cjs/js/src/binanceusdm.js +0 -58
  224. package/dist/cjs/js/src/bingx.js +0 -3872
  225. package/dist/cjs/js/src/bit2c.js +0 -916
  226. package/dist/cjs/js/src/bitbank.js +0 -1000
  227. package/dist/cjs/js/src/bitbay.js +0 -17
  228. package/dist/cjs/js/src/bitbns.js +0 -1220
  229. package/dist/cjs/js/src/bitcoincom.js +0 -17
  230. package/dist/cjs/js/src/bitfinex.js +0 -1670
  231. package/dist/cjs/js/src/bitfinex2.js +0 -2990
  232. package/dist/cjs/js/src/bitflyer.js +0 -1045
  233. package/dist/cjs/js/src/bitforex.js +0 -852
  234. package/dist/cjs/js/src/bitget.js +0 -8295
  235. package/dist/cjs/js/src/bithumb.js +0 -1090
  236. package/dist/cjs/js/src/bitmart.js +0 -4454
  237. package/dist/cjs/js/src/bitmex.js +0 -2881
  238. package/dist/cjs/js/src/bitopro.js +0 -1724
  239. package/dist/cjs/js/src/bitrue.js +0 -3253
  240. package/dist/cjs/js/src/bitso.js +0 -1753
  241. package/dist/cjs/js/src/bitstamp.js +0 -2188
  242. package/dist/cjs/js/src/bitteam.js +0 -2309
  243. package/dist/cjs/js/src/bitvavo.js +0 -1968
  244. package/dist/cjs/js/src/bl3p.js +0 -447
  245. package/dist/cjs/js/src/blockchaincom.js +0 -1160
  246. package/dist/cjs/js/src/btcalpha.js +0 -929
  247. package/dist/cjs/js/src/btcbox.js +0 -565
  248. package/dist/cjs/js/src/btcmarkets.js +0 -1237
  249. package/dist/cjs/js/src/btcturk.js +0 -929
  250. package/dist/cjs/js/src/bybit.js +0 -7624
  251. package/dist/cjs/js/src/cex.js +0 -1693
  252. package/dist/cjs/js/src/coinbase.js +0 -3424
  253. package/dist/cjs/js/src/coinbasepro.js +0 -1866
  254. package/dist/cjs/js/src/coincheck.js +0 -844
  255. package/dist/cjs/js/src/coinex.js +0 -5417
  256. package/dist/cjs/js/src/coinlist.js +0 -2337
  257. package/dist/cjs/js/src/coinmate.js +0 -989
  258. package/dist/cjs/js/src/coinone.js +0 -1185
  259. package/dist/cjs/js/src/coinsph.js +0 -1933
  260. package/dist/cjs/js/src/coinspot.js +0 -548
  261. package/dist/cjs/js/src/cryptocom.js +0 -3007
  262. package/dist/cjs/js/src/currencycom.js +0 -2015
  263. package/dist/cjs/js/src/delta.js +0 -3262
  264. package/dist/cjs/js/src/deribit.js +0 -3310
  265. package/dist/cjs/js/src/digifinex.js +0 -4307
  266. package/dist/cjs/js/src/exmo.js +0 -2645
  267. package/dist/cjs/js/src/fmfwio.js +0 -34
  268. package/dist/cjs/js/src/gate.js +0 -7077
  269. package/dist/cjs/js/src/gateio.js +0 -16
  270. package/dist/cjs/js/src/gemini.js +0 -1801
  271. package/dist/cjs/js/src/hitbtc.js +0 -3660
  272. package/dist/cjs/js/src/hitbtc3.js +0 -19
  273. package/dist/cjs/js/src/hollaex.js +0 -1882
  274. package/dist/cjs/js/src/htx.js +0 -9174
  275. package/dist/cjs/js/src/huobi.js +0 -16
  276. package/dist/cjs/js/src/huobijp.js +0 -1918
  277. package/dist/cjs/js/src/idex.js +0 -1770
  278. package/dist/cjs/js/src/independentreserve.js +0 -761
  279. package/dist/cjs/js/src/indodax.js +0 -1069
  280. package/dist/cjs/js/src/kraken.js +0 -2891
  281. package/dist/cjs/js/src/krakenfutures.js +0 -2407
  282. package/dist/cjs/js/src/kucoin.js +0 -4494
  283. package/dist/cjs/js/src/kucoinfutures.js +0 -2529
  284. package/dist/cjs/js/src/kuna.js +0 -1949
  285. package/dist/cjs/js/src/latoken.js +0 -1729
  286. package/dist/cjs/js/src/lbank.js +0 -2851
  287. package/dist/cjs/js/src/luno.js +0 -1044
  288. package/dist/cjs/js/src/lykke.js +0 -1303
  289. package/dist/cjs/js/src/mercado.js +0 -897
  290. package/dist/cjs/js/src/mexc.js +0 -5407
  291. package/dist/cjs/js/src/ndax.js +0 -2450
  292. package/dist/cjs/js/src/novadax.js +0 -1556
  293. package/dist/cjs/js/src/oceanex.js +0 -964
  294. package/dist/cjs/js/src/okcoin.js +0 -3115
  295. package/dist/cjs/js/src/okx.js +0 -7331
  296. package/dist/cjs/js/src/p2b.js +0 -1243
  297. package/dist/cjs/js/src/paymium.js +0 -597
  298. package/dist/cjs/js/src/phemex.js +0 -4725
  299. package/dist/cjs/js/src/poloniex.js +0 -2356
  300. package/dist/cjs/js/src/poloniexfutures.js +0 -1794
  301. package/dist/cjs/js/src/pro/alpaca.js +0 -714
  302. package/dist/cjs/js/src/pro/ascendex.js +0 -957
  303. package/dist/cjs/js/src/pro/bequant.js +0 -33
  304. package/dist/cjs/js/src/pro/binance.js +0 -2796
  305. package/dist/cjs/js/src/pro/binancecoinm.js +0 -23
  306. package/dist/cjs/js/src/pro/binanceus.js +0 -51
  307. package/dist/cjs/js/src/pro/binanceusdm.js +0 -32
  308. package/dist/cjs/js/src/pro/bingx.js +0 -944
  309. package/dist/cjs/js/src/pro/bitcoincom.js +0 -29
  310. package/dist/cjs/js/src/pro/bitfinex.js +0 -672
  311. package/dist/cjs/js/src/pro/bitfinex2.js +0 -1159
  312. package/dist/cjs/js/src/pro/bitget.js +0 -1733
  313. package/dist/cjs/js/src/pro/bitmart.js +0 -1486
  314. package/dist/cjs/js/src/pro/bitmex.js +0 -1576
  315. package/dist/cjs/js/src/pro/bitopro.js +0 -327
  316. package/dist/cjs/js/src/pro/bitrue.js +0 -462
  317. package/dist/cjs/js/src/pro/bitstamp.js +0 -547
  318. package/dist/cjs/js/src/pro/bitvavo.js +0 -704
  319. package/dist/cjs/js/src/pro/blockchaincom.js +0 -794
  320. package/dist/cjs/js/src/pro/bybit.js +0 -1843
  321. package/dist/cjs/js/src/pro/cex.js +0 -1510
  322. package/dist/cjs/js/src/pro/coinbase.js +0 -561
  323. package/dist/cjs/js/src/pro/coinbasepro.js +0 -968
  324. package/dist/cjs/js/src/pro/coinex.js +0 -1095
  325. package/dist/cjs/js/src/pro/cryptocom.js +0 -1020
  326. package/dist/cjs/js/src/pro/currencycom.js +0 -563
  327. package/dist/cjs/js/src/pro/deribit.js +0 -825
  328. package/dist/cjs/js/src/pro/exmo.js +0 -658
  329. package/dist/cjs/js/src/pro/gate.js +0 -1316
  330. package/dist/cjs/js/src/pro/gateio.js +0 -16
  331. package/dist/cjs/js/src/pro/gemini.js +0 -649
  332. package/dist/cjs/js/src/pro/hitbtc.js +0 -1294
  333. package/dist/cjs/js/src/pro/hollaex.js +0 -597
  334. package/dist/cjs/js/src/pro/htx.js +0 -2388
  335. package/dist/cjs/js/src/pro/huobi.js +0 -16
  336. package/dist/cjs/js/src/pro/huobijp.js +0 -606
  337. package/dist/cjs/js/src/pro/idex.js +0 -714
  338. package/dist/cjs/js/src/pro/independentreserve.js +0 -280
  339. package/dist/cjs/js/src/pro/kraken.js +0 -1364
  340. package/dist/cjs/js/src/pro/krakenfutures.js +0 -1506
  341. package/dist/cjs/js/src/pro/kucoin.js +0 -1062
  342. package/dist/cjs/js/src/pro/kucoinfutures.js +0 -989
  343. package/dist/cjs/js/src/pro/luno.js +0 -322
  344. package/dist/cjs/js/src/pro/mexc.js +0 -1170
  345. package/dist/cjs/js/src/pro/ndax.js +0 -545
  346. package/dist/cjs/js/src/pro/okcoin.js +0 -760
  347. package/dist/cjs/js/src/pro/okx.js +0 -1608
  348. package/dist/cjs/js/src/pro/phemex.js +0 -1511
  349. package/dist/cjs/js/src/pro/poloniex.js +0 -1253
  350. package/dist/cjs/js/src/pro/poloniexfutures.js +0 -1022
  351. package/dist/cjs/js/src/pro/probit.js +0 -586
  352. package/dist/cjs/js/src/pro/upbit.js +0 -234
  353. package/dist/cjs/js/src/pro/wazirx.js +0 -776
  354. package/dist/cjs/js/src/pro/whitebit.js +0 -927
  355. package/dist/cjs/js/src/pro/woo.js +0 -895
  356. package/dist/cjs/js/src/probit.js +0 -1867
  357. package/dist/cjs/js/src/static_dependencies/fflake/browser.js +0 -401
  358. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncrypt.js +0 -195
  359. package/dist/cjs/js/src/static_dependencies/jsencrypt/JSEncryptRSAKey.js +0 -308
  360. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/asn1.js +0 -554
  361. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/base64.js +0 -94
  362. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/hex.js +0 -70
  363. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/asn1js/int10.js +0 -91
  364. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/base64.js +0 -16
  365. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/jsbn.js +0 -1760
  366. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/prng4.js +0 -52
  367. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rng.js +0 -81
  368. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/rsa.js +0 -376
  369. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsbn/util.js +0 -70
  370. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/asn1-1.0.js +0 -1580
  371. package/dist/cjs/js/src/static_dependencies/jsencrypt/lib/jsrsasign/yahoo.js +0 -74
  372. package/dist/cjs/js/src/static_dependencies/noble-curves/_shortw_utils.js +0 -24
  373. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/curve.js +0 -158
  374. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/edwards.js +0 -429
  375. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/hash-to-curve.js +0 -176
  376. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/modular.js +0 -324
  377. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/montgomery.js +0 -163
  378. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/utils.js +0 -245
  379. package/dist/cjs/js/src/static_dependencies/noble-curves/abstract/weierstrass.js +0 -1018
  380. package/dist/cjs/js/src/static_dependencies/noble-curves/ed25519.js +0 -383
  381. package/dist/cjs/js/src/static_dependencies/noble-curves/secp256k1.js +0 -258
  382. package/dist/cjs/js/src/static_dependencies/noble-hashes/_assert.js +0 -53
  383. package/dist/cjs/js/src/static_dependencies/noble-hashes/_sha2.js +0 -120
  384. package/dist/cjs/js/src/static_dependencies/noble-hashes/_u64.js +0 -69
  385. package/dist/cjs/js/src/static_dependencies/noble-hashes/crypto.js +0 -7
  386. package/dist/cjs/js/src/static_dependencies/noble-hashes/hmac.js +0 -83
  387. package/dist/cjs/js/src/static_dependencies/noble-hashes/md5.js +0 -240
  388. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha1.js +0 -91
  389. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha256.js +0 -130
  390. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha3.js +0 -214
  391. package/dist/cjs/js/src/static_dependencies/noble-hashes/sha512.js +0 -239
  392. package/dist/cjs/js/src/static_dependencies/noble-hashes/utils.js +0 -93
  393. package/dist/cjs/js/src/static_dependencies/node-fetch/body.js +0 -354
  394. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/abort-error.js +0 -16
  395. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/base.js +0 -20
  396. package/dist/cjs/js/src/static_dependencies/node-fetch/errors/fetch-error.js +0 -30
  397. package/dist/cjs/js/src/static_dependencies/node-fetch/headers.js +0 -239
  398. package/dist/cjs/js/src/static_dependencies/node-fetch/index.js +0 -372
  399. package/dist/cjs/js/src/static_dependencies/node-fetch/request.js +0 -273
  400. package/dist/cjs/js/src/static_dependencies/node-fetch/response.js +0 -139
  401. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/get-search.js +0 -14
  402. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is-redirect.js +0 -16
  403. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/is.js +0 -81
  404. package/dist/cjs/js/src/static_dependencies/node-fetch/utils/referrer.js +0 -292
  405. package/dist/cjs/js/src/static_dependencies/proxies/agent-base/index.js +0 -103
  406. package/dist/cjs/js/src/static_dependencies/proxies/http-proxy-agent/index.js +0 -140
  407. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/index.js +0 -175
  408. package/dist/cjs/js/src/static_dependencies/proxies/https-proxy-agent/parse-proxy-response.js +0 -95
  409. package/dist/cjs/js/src/static_dependencies/qs/index.cjs.js +0 -7
  410. package/dist/cjs/js/src/static_dependencies/scure-base/index.js +0 -383
  411. package/dist/cjs/js/src/timex.js +0 -1562
  412. package/dist/cjs/js/src/tokocrypto.js +0 -2542
  413. package/dist/cjs/js/src/upbit.js +0 -1844
  414. package/dist/cjs/js/src/wavesexchange.js +0 -2607
  415. package/dist/cjs/js/src/wazirx.js +0 -953
  416. package/dist/cjs/js/src/whitebit.js +0 -2310
  417. package/dist/cjs/js/src/woo.js +0 -2769
  418. package/dist/cjs/js/src/yobit.js +0 -1314
  419. package/dist/cjs/js/src/zaif.js +0 -736
  420. package/dist/cjs/js/src/zonda.js +0 -1883
  421. package/dist/cjs/src/abstract/bitpanda.js +0 -9
  422. package/test.ts +0 -0
  423. /package/dist/cjs/{js/src/abstract/ace.js → src/abstract/onetrading.js} +0 -0
  424. /package/dist/cjs/{js/src → src}/pro/coincheck.js +0 -0
  425. /package/dist/cjs/{js/src → src}/pro/coinone.js +0 -0
  426. /package/js/src/abstract/{bitpanda.js → onetrading.js} +0 -0
@@ -1,1760 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var util = require('./util.js');
6
-
7
- // Copyright (c) 2005 Tom Wu
8
- // Bits per digit
9
- let dbits;
10
- // JavaScript engine analysis
11
- const canary = 0xdeadbeefcafe;
12
- const j_lm = ((canary & 0xffffff) == 0xefcafe);
13
- //#region
14
- const lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];
15
- const lplim = (1 << 26) / lowprimes[lowprimes.length - 1];
16
- //#endregion
17
- // (public) Constructor
18
- /**
19
- * @type Class
20
- */
21
- class BigInteger {
22
- constructor(a, b, c) {
23
- if (a != null) {
24
- if ("number" == typeof a) {
25
- this.fromNumber(a, b, c);
26
- }
27
- else if (b == null && "string" != typeof a) {
28
- this.fromString(a, 256);
29
- }
30
- else {
31
- this.fromString(a, b);
32
- }
33
- }
34
- }
35
- //#region PUBLIC
36
- // BigInteger.prototype.toString = bnToString;
37
- // (public) return string representation in given radix
38
- toString(b) {
39
- if (this.s < 0) {
40
- return "-" + this.negate().toString(b);
41
- }
42
- let k;
43
- if (b == 16) {
44
- k = 4;
45
- }
46
- else if (b == 8) {
47
- k = 3;
48
- }
49
- else if (b == 2) {
50
- k = 1;
51
- }
52
- else if (b == 32) {
53
- k = 5;
54
- }
55
- else if (b == 4) {
56
- k = 2;
57
- }
58
- else {
59
- return this.toRadix(b);
60
- }
61
- const km = (1 << k) - 1;
62
- let d;
63
- let m = false;
64
- let r = "";
65
- let i = this.t;
66
- let p = this.DB - (i * this.DB) % k;
67
- if (i-- > 0) {
68
- if (p < this.DB && (d = this[i] >> p) > 0) {
69
- m = true;
70
- r = util.int2char(d);
71
- }
72
- while (i >= 0) {
73
- if (p < k) {
74
- d = (this[i] & ((1 << p) - 1)) << (k - p);
75
- d |= this[--i] >> (p += this.DB - k);
76
- }
77
- else {
78
- d = (this[i] >> (p -= k)) & km;
79
- if (p <= 0) {
80
- p += this.DB;
81
- --i;
82
- }
83
- }
84
- if (d > 0) {
85
- m = true;
86
- }
87
- if (m) {
88
- r += util.int2char(d);
89
- }
90
- }
91
- }
92
- return m ? r : "0";
93
- }
94
- // BigInteger.prototype.negate = bnNegate;
95
- // (public) -this
96
- negate() {
97
- const r = nbi();
98
- BigInteger.ZERO.subTo(this, r);
99
- return r;
100
- }
101
- // BigInteger.prototype.abs = bnAbs;
102
- // (public) |this|
103
- abs() {
104
- return (this.s < 0) ? this.negate() : this;
105
- }
106
- // BigInteger.prototype.compareTo = bnCompareTo;
107
- // (public) return + if this > a, - if this < a, 0 if equal
108
- compareTo(a) {
109
- let r = this.s - a.s;
110
- if (r != 0) {
111
- return r;
112
- }
113
- let i = this.t;
114
- r = i - a.t;
115
- if (r != 0) {
116
- return (this.s < 0) ? -r : r;
117
- }
118
- while (--i >= 0) {
119
- if ((r = this[i] - a[i]) != 0) {
120
- return r;
121
- }
122
- }
123
- return 0;
124
- }
125
- // BigInteger.prototype.bitLength = bnBitLength;
126
- // (public) return the number of bits in "this"
127
- bitLength() {
128
- if (this.t <= 0) {
129
- return 0;
130
- }
131
- return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));
132
- }
133
- // BigInteger.prototype.mod = bnMod;
134
- // (public) this mod a
135
- mod(a) {
136
- const r = nbi();
137
- this.abs().divRemTo(a, null, r);
138
- if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {
139
- a.subTo(r, r);
140
- }
141
- return r;
142
- }
143
- // BigInteger.prototype.modPowInt = bnModPowInt;
144
- // (public) this^e % m, 0 <= e < 2^32
145
- modPowInt(e, m) {
146
- let z;
147
- if (e < 256 || m.isEven()) {
148
- z = new Classic(m);
149
- }
150
- else {
151
- z = new Montgomery(m);
152
- }
153
- return this.exp(e, z);
154
- }
155
- // BigInteger.prototype.clone = bnClone;
156
- // (public)
157
- clone() {
158
- const r = nbi();
159
- this.copyTo(r);
160
- return r;
161
- }
162
- // BigInteger.prototype.intValue = bnIntValue;
163
- // (public) return value as integer
164
- intValue() {
165
- if (this.s < 0) {
166
- if (this.t == 1) {
167
- return this[0] - this.DV;
168
- }
169
- else if (this.t == 0) {
170
- return -1;
171
- }
172
- }
173
- else if (this.t == 1) {
174
- return this[0];
175
- }
176
- else if (this.t == 0) {
177
- return 0;
178
- }
179
- // assumes 16 < DB < 32
180
- return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];
181
- }
182
- // BigInteger.prototype.byteValue = bnByteValue;
183
- // (public) return value as byte
184
- byteValue() {
185
- return (this.t == 0) ? this.s : (this[0] << 24) >> 24;
186
- }
187
- // BigInteger.prototype.shortValue = bnShortValue;
188
- // (public) return value as short (assumes DB>=16)
189
- shortValue() {
190
- return (this.t == 0) ? this.s : (this[0] << 16) >> 16;
191
- }
192
- // BigInteger.prototype.signum = bnSigNum;
193
- // (public) 0 if this == 0, 1 if this > 0
194
- signum() {
195
- if (this.s < 0) {
196
- return -1;
197
- }
198
- else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {
199
- return 0;
200
- }
201
- else {
202
- return 1;
203
- }
204
- }
205
- // BigInteger.prototype.toByteArray = bnToByteArray;
206
- // (public) convert to bigendian byte array
207
- toByteArray() {
208
- let i = this.t;
209
- const r = [];
210
- r[0] = this.s;
211
- let p = this.DB - (i * this.DB) % 8;
212
- let d;
213
- let k = 0;
214
- if (i-- > 0) {
215
- if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {
216
- r[k++] = d | (this.s << (this.DB - p));
217
- }
218
- while (i >= 0) {
219
- if (p < 8) {
220
- d = (this[i] & ((1 << p) - 1)) << (8 - p);
221
- d |= this[--i] >> (p += this.DB - 8);
222
- }
223
- else {
224
- d = (this[i] >> (p -= 8)) & 0xff;
225
- if (p <= 0) {
226
- p += this.DB;
227
- --i;
228
- }
229
- }
230
- if ((d & 0x80) != 0) {
231
- d |= -256;
232
- }
233
- if (k == 0 && (this.s & 0x80) != (d & 0x80)) {
234
- ++k;
235
- }
236
- if (k > 0 || d != this.s) {
237
- r[k++] = d;
238
- }
239
- }
240
- }
241
- return r;
242
- }
243
- // BigInteger.prototype.equals = bnEquals;
244
- equals(a) {
245
- return (this.compareTo(a) == 0);
246
- }
247
- // BigInteger.prototype.min = bnMin;
248
- min(a) {
249
- return (this.compareTo(a) < 0) ? this : a;
250
- }
251
- // BigInteger.prototype.max = bnMax;
252
- max(a) {
253
- return (this.compareTo(a) > 0) ? this : a;
254
- }
255
- // BigInteger.prototype.and = bnAnd;
256
- and(a) {
257
- const r = nbi();
258
- this.bitwiseTo(a, util.op_and, r);
259
- return r;
260
- }
261
- // BigInteger.prototype.or = bnOr;
262
- or(a) {
263
- const r = nbi();
264
- this.bitwiseTo(a, util.op_or, r);
265
- return r;
266
- }
267
- // BigInteger.prototype.xor = bnXor;
268
- xor(a) {
269
- const r = nbi();
270
- this.bitwiseTo(a, util.op_xor, r);
271
- return r;
272
- }
273
- // BigInteger.prototype.andNot = bnAndNot;
274
- andNot(a) {
275
- const r = nbi();
276
- this.bitwiseTo(a, util.op_andnot, r);
277
- return r;
278
- }
279
- // BigInteger.prototype.not = bnNot;
280
- // (public) ~this
281
- not() {
282
- const r = nbi();
283
- for (let i = 0; i < this.t; ++i) {
284
- r[i] = this.DM & ~this[i];
285
- }
286
- r.t = this.t;
287
- r.s = ~this.s;
288
- return r;
289
- }
290
- // BigInteger.prototype.shiftLeft = bnShiftLeft;
291
- // (public) this << n
292
- shiftLeft(n) {
293
- const r = nbi();
294
- if (n < 0) {
295
- this.rShiftTo(-n, r);
296
- }
297
- else {
298
- this.lShiftTo(n, r);
299
- }
300
- return r;
301
- }
302
- // BigInteger.prototype.shiftRight = bnShiftRight;
303
- // (public) this >> n
304
- shiftRight(n) {
305
- const r = nbi();
306
- if (n < 0) {
307
- this.lShiftTo(-n, r);
308
- }
309
- else {
310
- this.rShiftTo(n, r);
311
- }
312
- return r;
313
- }
314
- // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
315
- // (public) returns index of lowest 1-bit (or -1 if none)
316
- getLowestSetBit() {
317
- for (let i = 0; i < this.t; ++i) {
318
- if (this[i] != 0) {
319
- return i * this.DB + util.lbit(this[i]);
320
- }
321
- }
322
- if (this.s < 0) {
323
- return this.t * this.DB;
324
- }
325
- return -1;
326
- }
327
- // BigInteger.prototype.bitCount = bnBitCount;
328
- // (public) return number of set bits
329
- bitCount() {
330
- let r = 0;
331
- const x = this.s & this.DM;
332
- for (let i = 0; i < this.t; ++i) {
333
- r += util.cbit(this[i] ^ x);
334
- }
335
- return r;
336
- }
337
- // BigInteger.prototype.testBit = bnTestBit;
338
- // (public) true iff nth bit is set
339
- testBit(n) {
340
- const j = Math.floor(n / this.DB);
341
- if (j >= this.t) {
342
- return (this.s != 0);
343
- }
344
- return ((this[j] & (1 << (n % this.DB))) != 0);
345
- }
346
- // BigInteger.prototype.setBit = bnSetBit;
347
- // (public) this | (1<<n)
348
- setBit(n) {
349
- return this.changeBit(n, util.op_or);
350
- }
351
- // BigInteger.prototype.clearBit = bnClearBit;
352
- // (public) this & ~(1<<n)
353
- clearBit(n) {
354
- return this.changeBit(n, util.op_andnot);
355
- }
356
- // BigInteger.prototype.flipBit = bnFlipBit;
357
- // (public) this ^ (1<<n)
358
- flipBit(n) {
359
- return this.changeBit(n, util.op_xor);
360
- }
361
- // BigInteger.prototype.add = bnAdd;
362
- // (public) this + a
363
- add(a) {
364
- const r = nbi();
365
- this.addTo(a, r);
366
- return r;
367
- }
368
- // BigInteger.prototype.subtract = bnSubtract;
369
- // (public) this - a
370
- subtract(a) {
371
- const r = nbi();
372
- this.subTo(a, r);
373
- return r;
374
- }
375
- // BigInteger.prototype.multiply = bnMultiply;
376
- // (public) this * a
377
- multiply(a) {
378
- const r = nbi();
379
- this.multiplyTo(a, r);
380
- return r;
381
- }
382
- // BigInteger.prototype.divide = bnDivide;
383
- // (public) this / a
384
- divide(a) {
385
- const r = nbi();
386
- this.divRemTo(a, r, null);
387
- return r;
388
- }
389
- // BigInteger.prototype.remainder = bnRemainder;
390
- // (public) this % a
391
- remainder(a) {
392
- const r = nbi();
393
- this.divRemTo(a, null, r);
394
- return r;
395
- }
396
- // BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
397
- // (public) [this/a,this%a]
398
- divideAndRemainder(a) {
399
- const q = nbi();
400
- const r = nbi();
401
- this.divRemTo(a, q, r);
402
- return [q, r];
403
- }
404
- // BigInteger.prototype.modPow = bnModPow;
405
- // (public) this^e % m (HAC 14.85)
406
- modPow(e, m) {
407
- let i = e.bitLength();
408
- let k;
409
- let r = nbv(1);
410
- let z;
411
- if (i <= 0) {
412
- return r;
413
- }
414
- else if (i < 18) {
415
- k = 1;
416
- }
417
- else if (i < 48) {
418
- k = 3;
419
- }
420
- else if (i < 144) {
421
- k = 4;
422
- }
423
- else if (i < 768) {
424
- k = 5;
425
- }
426
- else {
427
- k = 6;
428
- }
429
- if (i < 8) {
430
- z = new Classic(m);
431
- }
432
- else if (m.isEven()) {
433
- z = new Barrett(m);
434
- }
435
- else {
436
- z = new Montgomery(m);
437
- }
438
- // precomputation
439
- const g = [];
440
- let n = 3;
441
- const k1 = k - 1;
442
- const km = (1 << k) - 1;
443
- g[1] = z.convert(this);
444
- if (k > 1) {
445
- const g2 = nbi();
446
- z.sqrTo(g[1], g2);
447
- while (n <= km) {
448
- g[n] = nbi();
449
- z.mulTo(g2, g[n - 2], g[n]);
450
- n += 2;
451
- }
452
- }
453
- let j = e.t - 1;
454
- let w;
455
- let is1 = true;
456
- let r2 = nbi();
457
- let t;
458
- i = nbits(e[j]) - 1;
459
- while (j >= 0) {
460
- if (i >= k1) {
461
- w = (e[j] >> (i - k1)) & km;
462
- }
463
- else {
464
- w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);
465
- if (j > 0) {
466
- w |= e[j - 1] >> (this.DB + i - k1);
467
- }
468
- }
469
- n = k;
470
- while ((w & 1) == 0) {
471
- w >>= 1;
472
- --n;
473
- }
474
- if ((i -= n) < 0) {
475
- i += this.DB;
476
- --j;
477
- }
478
- if (is1) { // ret == 1, don't bother squaring or multiplying it
479
- g[w].copyTo(r);
480
- is1 = false;
481
- }
482
- else {
483
- while (n > 1) {
484
- z.sqrTo(r, r2);
485
- z.sqrTo(r2, r);
486
- n -= 2;
487
- }
488
- if (n > 0) {
489
- z.sqrTo(r, r2);
490
- }
491
- else {
492
- t = r;
493
- r = r2;
494
- r2 = t;
495
- }
496
- z.mulTo(r2, g[w], r);
497
- }
498
- while (j >= 0 && (e[j] & (1 << i)) == 0) {
499
- z.sqrTo(r, r2);
500
- t = r;
501
- r = r2;
502
- r2 = t;
503
- if (--i < 0) {
504
- i = this.DB - 1;
505
- --j;
506
- }
507
- }
508
- }
509
- return z.revert(r);
510
- }
511
- // BigInteger.prototype.modInverse = bnModInverse;
512
- // (public) 1/this % m (HAC 14.61)
513
- modInverse(m) {
514
- const ac = m.isEven();
515
- if ((this.isEven() && ac) || m.signum() == 0) {
516
- return BigInteger.ZERO;
517
- }
518
- const u = m.clone();
519
- const v = this.clone();
520
- const a = nbv(1);
521
- const b = nbv(0);
522
- const c = nbv(0);
523
- const d = nbv(1);
524
- while (u.signum() != 0) {
525
- while (u.isEven()) {
526
- u.rShiftTo(1, u);
527
- if (ac) {
528
- if (!a.isEven() || !b.isEven()) {
529
- a.addTo(this, a);
530
- b.subTo(m, b);
531
- }
532
- a.rShiftTo(1, a);
533
- }
534
- else if (!b.isEven()) {
535
- b.subTo(m, b);
536
- }
537
- b.rShiftTo(1, b);
538
- }
539
- while (v.isEven()) {
540
- v.rShiftTo(1, v);
541
- if (ac) {
542
- if (!c.isEven() || !d.isEven()) {
543
- c.addTo(this, c);
544
- d.subTo(m, d);
545
- }
546
- c.rShiftTo(1, c);
547
- }
548
- else if (!d.isEven()) {
549
- d.subTo(m, d);
550
- }
551
- d.rShiftTo(1, d);
552
- }
553
- if (u.compareTo(v) >= 0) {
554
- u.subTo(v, u);
555
- if (ac) {
556
- a.subTo(c, a);
557
- }
558
- b.subTo(d, b);
559
- }
560
- else {
561
- v.subTo(u, v);
562
- if (ac) {
563
- c.subTo(a, c);
564
- }
565
- d.subTo(b, d);
566
- }
567
- }
568
- if (v.compareTo(BigInteger.ONE) != 0) {
569
- return BigInteger.ZERO;
570
- }
571
- if (d.compareTo(m) >= 0) {
572
- return d.subtract(m);
573
- }
574
- if (d.signum() < 0) {
575
- d.addTo(m, d);
576
- }
577
- else {
578
- return d;
579
- }
580
- if (d.signum() < 0) {
581
- return d.add(m);
582
- }
583
- else {
584
- return d;
585
- }
586
- }
587
- // BigInteger.prototype.pow = bnPow;
588
- // (public) this^e
589
- pow(e) {
590
- return this.exp(e, new NullExp());
591
- }
592
- // BigInteger.prototype.gcd = bnGCD;
593
- // (public) gcd(this,a) (HAC 14.54)
594
- gcd(a) {
595
- let x = (this.s < 0) ? this.negate() : this.clone();
596
- let y = (a.s < 0) ? a.negate() : a.clone();
597
- if (x.compareTo(y) < 0) {
598
- const t = x;
599
- x = y;
600
- y = t;
601
- }
602
- let i = x.getLowestSetBit();
603
- let g = y.getLowestSetBit();
604
- if (g < 0) {
605
- return x;
606
- }
607
- if (i < g) {
608
- g = i;
609
- }
610
- if (g > 0) {
611
- x.rShiftTo(g, x);
612
- y.rShiftTo(g, y);
613
- }
614
- while (x.signum() > 0) {
615
- if ((i = x.getLowestSetBit()) > 0) {
616
- x.rShiftTo(i, x);
617
- }
618
- if ((i = y.getLowestSetBit()) > 0) {
619
- y.rShiftTo(i, y);
620
- }
621
- if (x.compareTo(y) >= 0) {
622
- x.subTo(y, x);
623
- x.rShiftTo(1, x);
624
- }
625
- else {
626
- y.subTo(x, y);
627
- y.rShiftTo(1, y);
628
- }
629
- }
630
- if (g > 0) {
631
- y.lShiftTo(g, y);
632
- }
633
- return y;
634
- }
635
- // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
636
- // (public) test primality with certainty >= 1-.5^t
637
- isProbablePrime(t) {
638
- let i;
639
- const x = this.abs();
640
- if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {
641
- for (i = 0; i < lowprimes.length; ++i) {
642
- if (x[0] == lowprimes[i]) {
643
- return true;
644
- }
645
- }
646
- return false;
647
- }
648
- if (x.isEven()) {
649
- return false;
650
- }
651
- i = 1;
652
- while (i < lowprimes.length) {
653
- let m = lowprimes[i];
654
- let j = i + 1;
655
- while (j < lowprimes.length && m < lplim) {
656
- m *= lowprimes[j++];
657
- }
658
- m = x.modInt(m);
659
- while (i < j) {
660
- if (m % lowprimes[i++] == 0) {
661
- return false;
662
- }
663
- }
664
- }
665
- return x.millerRabin(t);
666
- }
667
- //#endregion PUBLIC
668
- //#region PROTECTED
669
- // BigInteger.prototype.copyTo = bnpCopyTo;
670
- // (protected) copy this to r
671
- copyTo(r) {
672
- for (let i = this.t - 1; i >= 0; --i) {
673
- r[i] = this[i];
674
- }
675
- r.t = this.t;
676
- r.s = this.s;
677
- }
678
- // BigInteger.prototype.fromInt = bnpFromInt;
679
- // (protected) set from integer value x, -DV <= x < DV
680
- fromInt(x) {
681
- this.t = 1;
682
- this.s = (x < 0) ? -1 : 0;
683
- if (x > 0) {
684
- this[0] = x;
685
- }
686
- else if (x < -1) {
687
- this[0] = x + this.DV;
688
- }
689
- else {
690
- this.t = 0;
691
- }
692
- }
693
- // BigInteger.prototype.fromString = bnpFromString;
694
- // (protected) set from string and radix
695
- fromString(s, b) {
696
- let k;
697
- if (b == 16) {
698
- k = 4;
699
- }
700
- else if (b == 8) {
701
- k = 3;
702
- }
703
- else if (b == 256) {
704
- k = 8;
705
- /* byte array */
706
- }
707
- else if (b == 2) {
708
- k = 1;
709
- }
710
- else if (b == 32) {
711
- k = 5;
712
- }
713
- else if (b == 4) {
714
- k = 2;
715
- }
716
- else {
717
- this.fromRadix(s, b);
718
- return;
719
- }
720
- this.t = 0;
721
- this.s = 0;
722
- let i = s.length;
723
- let mi = false;
724
- let sh = 0;
725
- while (--i >= 0) {
726
- const x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);
727
- if (x < 0) {
728
- if (s.charAt(i) == "-") {
729
- mi = true;
730
- }
731
- continue;
732
- }
733
- mi = false;
734
- if (sh == 0) {
735
- this[this.t++] = x;
736
- }
737
- else if (sh + k > this.DB) {
738
- this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;
739
- this[this.t++] = (x >> (this.DB - sh));
740
- }
741
- else {
742
- this[this.t - 1] |= x << sh;
743
- }
744
- sh += k;
745
- if (sh >= this.DB) {
746
- sh -= this.DB;
747
- }
748
- }
749
- if (k == 8 && ((+s[0]) & 0x80) != 0) {
750
- this.s = -1;
751
- if (sh > 0) {
752
- this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;
753
- }
754
- }
755
- this.clamp();
756
- if (mi) {
757
- BigInteger.ZERO.subTo(this, this);
758
- }
759
- }
760
- // BigInteger.prototype.clamp = bnpClamp;
761
- // (protected) clamp off excess high words
762
- clamp() {
763
- const c = this.s & this.DM;
764
- while (this.t > 0 && this[this.t - 1] == c) {
765
- --this.t;
766
- }
767
- }
768
- // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
769
- // (protected) r = this << n*DB
770
- dlShiftTo(n, r) {
771
- let i;
772
- for (i = this.t - 1; i >= 0; --i) {
773
- r[i + n] = this[i];
774
- }
775
- for (i = n - 1; i >= 0; --i) {
776
- r[i] = 0;
777
- }
778
- r.t = this.t + n;
779
- r.s = this.s;
780
- }
781
- // BigInteger.prototype.drShiftTo = bnpDRShiftTo;
782
- // (protected) r = this >> n*DB
783
- drShiftTo(n, r) {
784
- for (let i = n; i < this.t; ++i) {
785
- r[i - n] = this[i];
786
- }
787
- r.t = Math.max(this.t - n, 0);
788
- r.s = this.s;
789
- }
790
- // BigInteger.prototype.lShiftTo = bnpLShiftTo;
791
- // (protected) r = this << n
792
- lShiftTo(n, r) {
793
- const bs = n % this.DB;
794
- const cbs = this.DB - bs;
795
- const bm = (1 << cbs) - 1;
796
- const ds = Math.floor(n / this.DB);
797
- let c = (this.s << bs) & this.DM;
798
- for (let i = this.t - 1; i >= 0; --i) {
799
- r[i + ds + 1] = (this[i] >> cbs) | c;
800
- c = (this[i] & bm) << bs;
801
- }
802
- for (let i = ds - 1; i >= 0; --i) {
803
- r[i] = 0;
804
- }
805
- r[ds] = c;
806
- r.t = this.t + ds + 1;
807
- r.s = this.s;
808
- r.clamp();
809
- }
810
- // BigInteger.prototype.rShiftTo = bnpRShiftTo;
811
- // (protected) r = this >> n
812
- rShiftTo(n, r) {
813
- r.s = this.s;
814
- const ds = Math.floor(n / this.DB);
815
- if (ds >= this.t) {
816
- r.t = 0;
817
- return;
818
- }
819
- const bs = n % this.DB;
820
- const cbs = this.DB - bs;
821
- const bm = (1 << bs) - 1;
822
- r[0] = this[ds] >> bs;
823
- for (let i = ds + 1; i < this.t; ++i) {
824
- r[i - ds - 1] |= (this[i] & bm) << cbs;
825
- r[i - ds] = this[i] >> bs;
826
- }
827
- if (bs > 0) {
828
- r[this.t - ds - 1] |= (this.s & bm) << cbs;
829
- }
830
- r.t = this.t - ds;
831
- r.clamp();
832
- }
833
- // BigInteger.prototype.subTo = bnpSubTo;
834
- // (protected) r = this - a
835
- subTo(a, r) {
836
- let i = 0;
837
- let c = 0;
838
- const m = Math.min(a.t, this.t);
839
- while (i < m) {
840
- c += this[i] - a[i];
841
- r[i++] = c & this.DM;
842
- c >>= this.DB;
843
- }
844
- if (a.t < this.t) {
845
- c -= a.s;
846
- while (i < this.t) {
847
- c += this[i];
848
- r[i++] = c & this.DM;
849
- c >>= this.DB;
850
- }
851
- c += this.s;
852
- }
853
- else {
854
- c += this.s;
855
- while (i < a.t) {
856
- c -= a[i];
857
- r[i++] = c & this.DM;
858
- c >>= this.DB;
859
- }
860
- c -= a.s;
861
- }
862
- r.s = (c < 0) ? -1 : 0;
863
- if (c < -1) {
864
- r[i++] = this.DV + c;
865
- }
866
- else if (c > 0) {
867
- r[i++] = c;
868
- }
869
- r.t = i;
870
- r.clamp();
871
- }
872
- // BigInteger.prototype.multiplyTo = bnpMultiplyTo;
873
- // (protected) r = this * a, r != this,a (HAC 14.12)
874
- // "this" should be the larger one if appropriate.
875
- multiplyTo(a, r) {
876
- const x = this.abs();
877
- const y = a.abs();
878
- let i = x.t;
879
- r.t = i + y.t;
880
- while (--i >= 0) {
881
- r[i] = 0;
882
- }
883
- for (i = 0; i < y.t; ++i) {
884
- r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);
885
- }
886
- r.s = 0;
887
- r.clamp();
888
- if (this.s != a.s) {
889
- BigInteger.ZERO.subTo(r, r);
890
- }
891
- }
892
- // BigInteger.prototype.squareTo = bnpSquareTo;
893
- // (protected) r = this^2, r != this (HAC 14.16)
894
- squareTo(r) {
895
- const x = this.abs();
896
- let i = r.t = 2 * x.t;
897
- while (--i >= 0) {
898
- r[i] = 0;
899
- }
900
- for (i = 0; i < x.t - 1; ++i) {
901
- const c = x.am(i, x[i], r, 2 * i, 0, 1);
902
- if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {
903
- r[i + x.t] -= x.DV;
904
- r[i + x.t + 1] = 1;
905
- }
906
- }
907
- if (r.t > 0) {
908
- r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);
909
- }
910
- r.s = 0;
911
- r.clamp();
912
- }
913
- // BigInteger.prototype.divRemTo = bnpDivRemTo;
914
- // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
915
- // r != q, this != m. q or r may be null.
916
- divRemTo(m, q, r) {
917
- const pm = m.abs();
918
- if (pm.t <= 0) {
919
- return;
920
- }
921
- const pt = this.abs();
922
- if (pt.t < pm.t) {
923
- if (q != null) {
924
- q.fromInt(0);
925
- }
926
- if (r != null) {
927
- this.copyTo(r);
928
- }
929
- return;
930
- }
931
- if (r == null) {
932
- r = nbi();
933
- }
934
- const y = nbi();
935
- const ts = this.s;
936
- const ms = m.s;
937
- const nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus
938
- if (nsh > 0) {
939
- pm.lShiftTo(nsh, y);
940
- pt.lShiftTo(nsh, r);
941
- }
942
- else {
943
- pm.copyTo(y);
944
- pt.copyTo(r);
945
- }
946
- const ys = y.t;
947
- const y0 = y[ys - 1];
948
- if (y0 == 0) {
949
- return;
950
- }
951
- const yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);
952
- const d1 = this.FV / yt;
953
- const d2 = (1 << this.F1) / yt;
954
- const e = 1 << this.F2;
955
- let i = r.t;
956
- let j = i - ys;
957
- const t = (q == null) ? nbi() : q;
958
- y.dlShiftTo(j, t);
959
- if (r.compareTo(t) >= 0) {
960
- r[r.t++] = 1;
961
- r.subTo(t, r);
962
- }
963
- BigInteger.ONE.dlShiftTo(ys, t);
964
- t.subTo(y, y); // "negative" y so we can replace sub with am later
965
- while (y.t < ys) {
966
- y[y.t++] = 0;
967
- }
968
- while (--j >= 0) {
969
- // Estimate quotient digit
970
- let qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);
971
- if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out
972
- y.dlShiftTo(j, t);
973
- r.subTo(t, r);
974
- while (r[i] < --qd) {
975
- r.subTo(t, r);
976
- }
977
- }
978
- }
979
- if (q != null) {
980
- r.drShiftTo(ys, q);
981
- if (ts != ms) {
982
- BigInteger.ZERO.subTo(q, q);
983
- }
984
- }
985
- r.t = ys;
986
- r.clamp();
987
- if (nsh > 0) {
988
- r.rShiftTo(nsh, r);
989
- } // Denormalize remainder
990
- if (ts < 0) {
991
- BigInteger.ZERO.subTo(r, r);
992
- }
993
- }
994
- // BigInteger.prototype.invDigit = bnpInvDigit;
995
- // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
996
- // justification:
997
- // xy == 1 (mod m)
998
- // xy = 1+km
999
- // xy(2-xy) = (1+km)(1-km)
1000
- // x[y(2-xy)] = 1-k^2m^2
1001
- // x[y(2-xy)] == 1 (mod m^2)
1002
- // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
1003
- // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
1004
- // JS multiply "overflows" differently from C/C++, so care is needed here.
1005
- invDigit() {
1006
- if (this.t < 1) {
1007
- return 0;
1008
- }
1009
- const x = this[0];
1010
- if ((x & 1) == 0) {
1011
- return 0;
1012
- }
1013
- let y = x & 3; // y == 1/x mod 2^2
1014
- y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4
1015
- y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8
1016
- y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16
1017
- // last step - calculate inverse mod DV directly;
1018
- // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
1019
- y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits
1020
- // we really want the negative inverse, and -DV < y < DV
1021
- return (y > 0) ? this.DV - y : -y;
1022
- }
1023
- // BigInteger.prototype.isEven = bnpIsEven;
1024
- // (protected) true iff this is even
1025
- isEven() {
1026
- return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;
1027
- }
1028
- // BigInteger.prototype.exp = bnpExp;
1029
- // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
1030
- exp(e, z) {
1031
- if (e > 0xffffffff || e < 1) {
1032
- return BigInteger.ONE;
1033
- }
1034
- let r = nbi();
1035
- let r2 = nbi();
1036
- const g = z.convert(this);
1037
- let i = nbits(e) - 1;
1038
- g.copyTo(r);
1039
- while (--i >= 0) {
1040
- z.sqrTo(r, r2);
1041
- if ((e & (1 << i)) > 0) {
1042
- z.mulTo(r2, g, r);
1043
- }
1044
- else {
1045
- const t = r;
1046
- r = r2;
1047
- r2 = t;
1048
- }
1049
- }
1050
- return z.revert(r);
1051
- }
1052
- // BigInteger.prototype.chunkSize = bnpChunkSize;
1053
- // (protected) return x s.t. r^x < DV
1054
- chunkSize(r) {
1055
- return Math.floor(Math.LN2 * this.DB / Math.log(r));
1056
- }
1057
- // BigInteger.prototype.toRadix = bnpToRadix;
1058
- // (protected) convert to radix string
1059
- toRadix(b) {
1060
- if (b == null) {
1061
- b = 10;
1062
- }
1063
- if (this.signum() == 0 || b < 2 || b > 36) {
1064
- return "0";
1065
- }
1066
- const cs = this.chunkSize(b);
1067
- const a = Math.pow(b, cs);
1068
- const d = nbv(a);
1069
- const y = nbi();
1070
- const z = nbi();
1071
- let r = "";
1072
- this.divRemTo(d, y, z);
1073
- while (y.signum() > 0) {
1074
- r = (a + z.intValue()).toString(b).substr(1) + r;
1075
- y.divRemTo(d, y, z);
1076
- }
1077
- return z.intValue().toString(b) + r;
1078
- }
1079
- // BigInteger.prototype.fromRadix = bnpFromRadix;
1080
- // (protected) convert from radix string
1081
- fromRadix(s, b) {
1082
- this.fromInt(0);
1083
- if (b == null) {
1084
- b = 10;
1085
- }
1086
- const cs = this.chunkSize(b);
1087
- const d = Math.pow(b, cs);
1088
- let mi = false;
1089
- let j = 0;
1090
- let w = 0;
1091
- for (let i = 0; i < s.length; ++i) {
1092
- const x = intAt(s, i);
1093
- if (x < 0) {
1094
- if (s.charAt(i) == "-" && this.signum() == 0) {
1095
- mi = true;
1096
- }
1097
- continue;
1098
- }
1099
- w = b * w + x;
1100
- if (++j >= cs) {
1101
- this.dMultiply(d);
1102
- this.dAddOffset(w, 0);
1103
- j = 0;
1104
- w = 0;
1105
- }
1106
- }
1107
- if (j > 0) {
1108
- this.dMultiply(Math.pow(b, j));
1109
- this.dAddOffset(w, 0);
1110
- }
1111
- if (mi) {
1112
- BigInteger.ZERO.subTo(this, this);
1113
- }
1114
- }
1115
- // BigInteger.prototype.fromNumber = bnpFromNumber;
1116
- // (protected) alternate constructor
1117
- fromNumber(a, b, c) {
1118
- if ("number" == typeof b) {
1119
- // new BigInteger(int,int,RNG)
1120
- if (a < 2) {
1121
- this.fromInt(1);
1122
- }
1123
- else {
1124
- this.fromNumber(a, c);
1125
- if (!this.testBit(a - 1)) {
1126
- // force MSB set
1127
- this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), util.op_or, this);
1128
- }
1129
- if (this.isEven()) {
1130
- this.dAddOffset(1, 0);
1131
- } // force odd
1132
- while (!this.isProbablePrime(b)) {
1133
- this.dAddOffset(2, 0);
1134
- if (this.bitLength() > a) {
1135
- this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);
1136
- }
1137
- }
1138
- }
1139
- }
1140
- else {
1141
- // new BigInteger(int,RNG)
1142
- const x = [];
1143
- const t = a & 7;
1144
- x.length = (a >> 3) + 1;
1145
- b.nextBytes(x);
1146
- if (t > 0) {
1147
- x[0] &= ((1 << t) - 1);
1148
- }
1149
- else {
1150
- x[0] = 0;
1151
- }
1152
- this.fromString(x, 256);
1153
- }
1154
- }
1155
- // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
1156
- // (protected) r = this op a (bitwise)
1157
- bitwiseTo(a, op, r) {
1158
- let i;
1159
- let f;
1160
- const m = Math.min(a.t, this.t);
1161
- for (i = 0; i < m; ++i) {
1162
- r[i] = op(this[i], a[i]);
1163
- }
1164
- if (a.t < this.t) {
1165
- f = a.s & this.DM;
1166
- for (i = m; i < this.t; ++i) {
1167
- r[i] = op(this[i], f);
1168
- }
1169
- r.t = this.t;
1170
- }
1171
- else {
1172
- f = this.s & this.DM;
1173
- for (i = m; i < a.t; ++i) {
1174
- r[i] = op(f, a[i]);
1175
- }
1176
- r.t = a.t;
1177
- }
1178
- r.s = op(this.s, a.s);
1179
- r.clamp();
1180
- }
1181
- // BigInteger.prototype.changeBit = bnpChangeBit;
1182
- // (protected) this op (1<<n)
1183
- changeBit(n, op) {
1184
- const r = BigInteger.ONE.shiftLeft(n);
1185
- this.bitwiseTo(r, op, r);
1186
- return r;
1187
- }
1188
- // BigInteger.prototype.addTo = bnpAddTo;
1189
- // (protected) r = this + a
1190
- addTo(a, r) {
1191
- let i = 0;
1192
- let c = 0;
1193
- const m = Math.min(a.t, this.t);
1194
- while (i < m) {
1195
- c += this[i] + a[i];
1196
- r[i++] = c & this.DM;
1197
- c >>= this.DB;
1198
- }
1199
- if (a.t < this.t) {
1200
- c += a.s;
1201
- while (i < this.t) {
1202
- c += this[i];
1203
- r[i++] = c & this.DM;
1204
- c >>= this.DB;
1205
- }
1206
- c += this.s;
1207
- }
1208
- else {
1209
- c += this.s;
1210
- while (i < a.t) {
1211
- c += a[i];
1212
- r[i++] = c & this.DM;
1213
- c >>= this.DB;
1214
- }
1215
- c += a.s;
1216
- }
1217
- r.s = (c < 0) ? -1 : 0;
1218
- if (c > 0) {
1219
- r[i++] = c;
1220
- }
1221
- else if (c < -1) {
1222
- r[i++] = this.DV + c;
1223
- }
1224
- r.t = i;
1225
- r.clamp();
1226
- }
1227
- // BigInteger.prototype.dMultiply = bnpDMultiply;
1228
- // (protected) this *= n, this >= 0, 1 < n < DV
1229
- dMultiply(n) {
1230
- this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);
1231
- ++this.t;
1232
- this.clamp();
1233
- }
1234
- // BigInteger.prototype.dAddOffset = bnpDAddOffset;
1235
- // (protected) this += n << w words, this >= 0
1236
- dAddOffset(n, w) {
1237
- if (n == 0) {
1238
- return;
1239
- }
1240
- while (this.t <= w) {
1241
- this[this.t++] = 0;
1242
- }
1243
- this[w] += n;
1244
- while (this[w] >= this.DV) {
1245
- this[w] -= this.DV;
1246
- if (++w >= this.t) {
1247
- this[this.t++] = 0;
1248
- }
1249
- ++this[w];
1250
- }
1251
- }
1252
- // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
1253
- // (protected) r = lower n words of "this * a", a.t <= n
1254
- // "this" should be the larger one if appropriate.
1255
- multiplyLowerTo(a, n, r) {
1256
- let i = Math.min(this.t + a.t, n);
1257
- r.s = 0; // assumes a,this >= 0
1258
- r.t = i;
1259
- while (i > 0) {
1260
- r[--i] = 0;
1261
- }
1262
- for (const j = r.t - this.t; i < j; ++i) {
1263
- r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);
1264
- }
1265
- for (const j = Math.min(a.t, n); i < j; ++i) {
1266
- this.am(0, a[i], r, i, 0, n - i);
1267
- }
1268
- r.clamp();
1269
- }
1270
- // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
1271
- // (protected) r = "this * a" without lower n words, n > 0
1272
- // "this" should be the larger one if appropriate.
1273
- multiplyUpperTo(a, n, r) {
1274
- --n;
1275
- let i = r.t = this.t + a.t - n;
1276
- r.s = 0; // assumes a,this >= 0
1277
- while (--i >= 0) {
1278
- r[i] = 0;
1279
- }
1280
- for (i = Math.max(n - this.t, 0); i < a.t; ++i) {
1281
- r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);
1282
- }
1283
- r.clamp();
1284
- r.drShiftTo(1, r);
1285
- }
1286
- // BigInteger.prototype.modInt = bnpModInt;
1287
- // (protected) this % n, n < 2^26
1288
- modInt(n) {
1289
- if (n <= 0) {
1290
- return 0;
1291
- }
1292
- const d = this.DV % n;
1293
- let r = (this.s < 0) ? n - 1 : 0;
1294
- if (this.t > 0) {
1295
- if (d == 0) {
1296
- r = this[0] % n;
1297
- }
1298
- else {
1299
- for (let i = this.t - 1; i >= 0; --i) {
1300
- r = (d * r + this[i]) % n;
1301
- }
1302
- }
1303
- }
1304
- return r;
1305
- }
1306
- // BigInteger.prototype.millerRabin = bnpMillerRabin;
1307
- // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
1308
- millerRabin(t) {
1309
- const n1 = this.subtract(BigInteger.ONE);
1310
- const k = n1.getLowestSetBit();
1311
- if (k <= 0) {
1312
- return false;
1313
- }
1314
- const r = n1.shiftRight(k);
1315
- t = (t + 1) >> 1;
1316
- if (t > lowprimes.length) {
1317
- t = lowprimes.length;
1318
- }
1319
- const a = nbi();
1320
- for (let i = 0; i < t; ++i) {
1321
- // Pick bases at random, instead of starting at 2
1322
- a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);
1323
- let y = a.modPow(r, this);
1324
- if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
1325
- let j = 1;
1326
- while (j++ < k && y.compareTo(n1) != 0) {
1327
- y = y.modPowInt(2, this);
1328
- if (y.compareTo(BigInteger.ONE) == 0) {
1329
- return false;
1330
- }
1331
- }
1332
- if (y.compareTo(n1) != 0) {
1333
- return false;
1334
- }
1335
- }
1336
- }
1337
- return true;
1338
- }
1339
- // BigInteger.prototype.square = bnSquare;
1340
- // (public) this^2
1341
- square() {
1342
- const r = nbi();
1343
- this.squareTo(r);
1344
- return r;
1345
- }
1346
- //#region ASYNC
1347
- // Public API method
1348
- gcda(a, callback) {
1349
- let x = (this.s < 0) ? this.negate() : this.clone();
1350
- let y = (a.s < 0) ? a.negate() : a.clone();
1351
- if (x.compareTo(y) < 0) {
1352
- const t = x;
1353
- x = y;
1354
- y = t;
1355
- }
1356
- let i = x.getLowestSetBit();
1357
- let g = y.getLowestSetBit();
1358
- if (g < 0) {
1359
- callback(x);
1360
- return;
1361
- }
1362
- if (i < g) {
1363
- g = i;
1364
- }
1365
- if (g > 0) {
1366
- x.rShiftTo(g, x);
1367
- y.rShiftTo(g, y);
1368
- }
1369
- // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.
1370
- const gcda1 = function () {
1371
- if ((i = x.getLowestSetBit()) > 0) {
1372
- x.rShiftTo(i, x);
1373
- }
1374
- if ((i = y.getLowestSetBit()) > 0) {
1375
- y.rShiftTo(i, y);
1376
- }
1377
- if (x.compareTo(y) >= 0) {
1378
- x.subTo(y, x);
1379
- x.rShiftTo(1, x);
1380
- }
1381
- else {
1382
- y.subTo(x, y);
1383
- y.rShiftTo(1, y);
1384
- }
1385
- if (!(x.signum() > 0)) {
1386
- if (g > 0) {
1387
- y.lShiftTo(g, y);
1388
- }
1389
- setTimeout(function () { callback(y); }, 0); // escape
1390
- }
1391
- else {
1392
- setTimeout(gcda1, 0);
1393
- }
1394
- };
1395
- setTimeout(gcda1, 10);
1396
- }
1397
- // (protected) alternate constructor
1398
- fromNumberAsync(a, b, c, callback) {
1399
- if ("number" == typeof b) {
1400
- if (a < 2) {
1401
- this.fromInt(1);
1402
- }
1403
- else {
1404
- this.fromNumber(a, c);
1405
- if (!this.testBit(a - 1)) {
1406
- this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), util.op_or, this);
1407
- }
1408
- if (this.isEven()) {
1409
- this.dAddOffset(1, 0);
1410
- }
1411
- const bnp = this;
1412
- const bnpfn1 = function () {
1413
- bnp.dAddOffset(2, 0);
1414
- if (bnp.bitLength() > a) {
1415
- bnp.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp);
1416
- }
1417
- if (bnp.isProbablePrime(b)) {
1418
- setTimeout(function () { callback(); }, 0); // escape
1419
- }
1420
- else {
1421
- setTimeout(bnpfn1, 0);
1422
- }
1423
- };
1424
- setTimeout(bnpfn1, 0);
1425
- }
1426
- }
1427
- else {
1428
- const x = [];
1429
- const t = a & 7;
1430
- x.length = (a >> 3) + 1;
1431
- b.nextBytes(x);
1432
- if (t > 0) {
1433
- x[0] &= ((1 << t) - 1);
1434
- }
1435
- else {
1436
- x[0] = 0;
1437
- }
1438
- this.fromString(x, 256);
1439
- }
1440
- }
1441
- }
1442
- //#region REDUCERS
1443
- //#region NullExp
1444
- class NullExp {
1445
- constructor() {
1446
- }
1447
- // NullExp.prototype.convert = nNop;
1448
- convert(x) {
1449
- return x;
1450
- }
1451
- // NullExp.prototype.revert = nNop;
1452
- revert(x) {
1453
- return x;
1454
- }
1455
- // NullExp.prototype.mulTo = nMulTo;
1456
- mulTo(x, y, r) {
1457
- x.multiplyTo(y, r);
1458
- }
1459
- // NullExp.prototype.sqrTo = nSqrTo;
1460
- sqrTo(x, r) {
1461
- x.squareTo(r);
1462
- }
1463
- }
1464
- // Modular reduction using "classic" algorithm
1465
- class Classic {
1466
- constructor(m) {
1467
- this.m = m;
1468
- }
1469
- // Classic.prototype.convert = cConvert;
1470
- convert(x) {
1471
- if (x.s < 0 || x.compareTo(this.m) >= 0) {
1472
- return x.mod(this.m);
1473
- }
1474
- else {
1475
- return x;
1476
- }
1477
- }
1478
- // Classic.prototype.revert = cRevert;
1479
- revert(x) {
1480
- return x;
1481
- }
1482
- // Classic.prototype.reduce = cReduce;
1483
- reduce(x) {
1484
- x.divRemTo(this.m, null, x);
1485
- }
1486
- // Classic.prototype.mulTo = cMulTo;
1487
- mulTo(x, y, r) {
1488
- x.multiplyTo(y, r);
1489
- this.reduce(r);
1490
- }
1491
- // Classic.prototype.sqrTo = cSqrTo;
1492
- sqrTo(x, r) {
1493
- x.squareTo(r);
1494
- this.reduce(r);
1495
- }
1496
- }
1497
- //#endregion
1498
- //#region Montgomery
1499
- // Montgomery reduction
1500
- class Montgomery {
1501
- constructor(m) {
1502
- this.m = m;
1503
- this.mp = m.invDigit();
1504
- this.mpl = this.mp & 0x7fff;
1505
- this.mph = this.mp >> 15;
1506
- this.um = (1 << (m.DB - 15)) - 1;
1507
- this.mt2 = 2 * m.t;
1508
- }
1509
- // Montgomery.prototype.convert = montConvert;
1510
- // xR mod m
1511
- convert(x) {
1512
- const r = nbi();
1513
- x.abs().dlShiftTo(this.m.t, r);
1514
- r.divRemTo(this.m, null, r);
1515
- if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {
1516
- this.m.subTo(r, r);
1517
- }
1518
- return r;
1519
- }
1520
- // Montgomery.prototype.revert = montRevert;
1521
- // x/R mod m
1522
- revert(x) {
1523
- const r = nbi();
1524
- x.copyTo(r);
1525
- this.reduce(r);
1526
- return r;
1527
- }
1528
- // Montgomery.prototype.reduce = montReduce;
1529
- // x = x/R mod m (HAC 14.32)
1530
- reduce(x) {
1531
- while (x.t <= this.mt2) {
1532
- // pad x so am has enough room later
1533
- x[x.t++] = 0;
1534
- }
1535
- for (let i = 0; i < this.m.t; ++i) {
1536
- // faster way of calculating u0 = x[i]*mp mod DV
1537
- let j = x[i] & 0x7fff;
1538
- const u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;
1539
- // use am to combine the multiply-shift-add into one call
1540
- j = i + this.m.t;
1541
- x[j] += this.m.am(0, u0, x, i, 0, this.m.t);
1542
- // propagate carry
1543
- while (x[j] >= x.DV) {
1544
- x[j] -= x.DV;
1545
- x[++j]++;
1546
- }
1547
- }
1548
- x.clamp();
1549
- x.drShiftTo(this.m.t, x);
1550
- if (x.compareTo(this.m) >= 0) {
1551
- x.subTo(this.m, x);
1552
- }
1553
- }
1554
- // Montgomery.prototype.mulTo = montMulTo;
1555
- // r = "xy/R mod m"; x,y != r
1556
- mulTo(x, y, r) {
1557
- x.multiplyTo(y, r);
1558
- this.reduce(r);
1559
- }
1560
- // Montgomery.prototype.sqrTo = montSqrTo;
1561
- // r = "x^2/R mod m"; x != r
1562
- sqrTo(x, r) {
1563
- x.squareTo(r);
1564
- this.reduce(r);
1565
- }
1566
- }
1567
- //#endregion Montgomery
1568
- //#region Barrett
1569
- // Barrett modular reduction
1570
- class Barrett {
1571
- constructor(m) {
1572
- this.m = m;
1573
- // setup Barrett
1574
- this.r2 = nbi();
1575
- this.q3 = nbi();
1576
- BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);
1577
- this.mu = this.r2.divide(m);
1578
- }
1579
- // Barrett.prototype.convert = barrettConvert;
1580
- convert(x) {
1581
- if (x.s < 0 || x.t > 2 * this.m.t) {
1582
- return x.mod(this.m);
1583
- }
1584
- else if (x.compareTo(this.m) < 0) {
1585
- return x;
1586
- }
1587
- else {
1588
- const r = nbi();
1589
- x.copyTo(r);
1590
- this.reduce(r);
1591
- return r;
1592
- }
1593
- }
1594
- // Barrett.prototype.revert = barrettRevert;
1595
- revert(x) {
1596
- return x;
1597
- }
1598
- // Barrett.prototype.reduce = barrettReduce;
1599
- // x = x mod m (HAC 14.42)
1600
- reduce(x) {
1601
- x.drShiftTo(this.m.t - 1, this.r2);
1602
- if (x.t > this.m.t + 1) {
1603
- x.t = this.m.t + 1;
1604
- x.clamp();
1605
- }
1606
- this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);
1607
- this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);
1608
- while (x.compareTo(this.r2) < 0) {
1609
- x.dAddOffset(1, this.m.t + 1);
1610
- }
1611
- x.subTo(this.r2, x);
1612
- while (x.compareTo(this.m) >= 0) {
1613
- x.subTo(this.m, x);
1614
- }
1615
- }
1616
- // Barrett.prototype.mulTo = barrettMulTo;
1617
- // r = x*y mod m; x,y != r
1618
- mulTo(x, y, r) {
1619
- x.multiplyTo(y, r);
1620
- this.reduce(r);
1621
- }
1622
- // Barrett.prototype.sqrTo = barrettSqrTo;
1623
- // r = x^2 mod m; x != r
1624
- sqrTo(x, r) {
1625
- x.squareTo(r);
1626
- this.reduce(r);
1627
- }
1628
- }
1629
- //#endregion
1630
- //#endregion REDUCERS
1631
- // return new, unset BigInteger
1632
- function nbi() { return new BigInteger(null); }
1633
- function parseBigInt(str, r) {
1634
- return new BigInteger(str, r);
1635
- }
1636
- // am: Compute w_j += (x*this_i), propagate carries,
1637
- // c is initial carry, returns final carry.
1638
- // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
1639
- // We need to select the fastest one that works in this environment.
1640
- const inBrowser = typeof navigator !== "undefined";
1641
- if (inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
1642
- // am2 avoids a big mult-and-extract completely.
1643
- // Max digit bits should be <= 30 because we do bitwise ops
1644
- // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
1645
- BigInteger.prototype.am = function am2(i, x, w, j, c, n) {
1646
- const xl = x & 0x7fff;
1647
- const xh = x >> 15;
1648
- while (--n >= 0) {
1649
- let l = this[i] & 0x7fff;
1650
- const h = this[i++] >> 15;
1651
- const m = xh * l + h * xl;
1652
- l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);
1653
- c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);
1654
- w[j++] = l & 0x3fffffff;
1655
- }
1656
- return c;
1657
- };
1658
- dbits = 30;
1659
- }
1660
- else if (inBrowser && j_lm && (navigator.appName != "Netscape")) {
1661
- // am1: use a single mult and divide to get the high bits,
1662
- // max digit bits should be 26 because
1663
- // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
1664
- BigInteger.prototype.am = function am1(i, x, w, j, c, n) {
1665
- while (--n >= 0) {
1666
- const v = x * this[i++] + w[j] + c;
1667
- c = Math.floor(v / 0x4000000);
1668
- w[j++] = v & 0x3ffffff;
1669
- }
1670
- return c;
1671
- };
1672
- dbits = 26;
1673
- }
1674
- else { // Mozilla/Netscape seems to prefer am3
1675
- // Alternately, set max digit bits to 28 since some
1676
- // browsers slow down when dealing with 32-bit numbers.
1677
- BigInteger.prototype.am = function am3(i, x, w, j, c, n) {
1678
- const xl = x & 0x3fff;
1679
- const xh = x >> 14;
1680
- while (--n >= 0) {
1681
- let l = this[i] & 0x3fff;
1682
- const h = this[i++] >> 14;
1683
- const m = xh * l + h * xl;
1684
- l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;
1685
- c = (l >> 28) + (m >> 14) + xh * h;
1686
- w[j++] = l & 0xfffffff;
1687
- }
1688
- return c;
1689
- };
1690
- dbits = 28;
1691
- }
1692
- BigInteger.prototype.DB = dbits;
1693
- BigInteger.prototype.DM = ((1 << dbits) - 1);
1694
- BigInteger.prototype.DV = (1 << dbits);
1695
- const BI_FP = 52;
1696
- BigInteger.prototype.FV = Math.pow(2, BI_FP);
1697
- BigInteger.prototype.F1 = BI_FP - dbits;
1698
- BigInteger.prototype.F2 = 2 * dbits - BI_FP;
1699
- // Digit conversions
1700
- const BI_RC = [];
1701
- let rr;
1702
- let vv;
1703
- rr = "0".charCodeAt(0);
1704
- for (vv = 0; vv <= 9; ++vv) {
1705
- BI_RC[rr++] = vv;
1706
- }
1707
- rr = "a".charCodeAt(0);
1708
- for (vv = 10; vv < 36; ++vv) {
1709
- BI_RC[rr++] = vv;
1710
- }
1711
- rr = "A".charCodeAt(0);
1712
- for (vv = 10; vv < 36; ++vv) {
1713
- BI_RC[rr++] = vv;
1714
- }
1715
- function intAt(s, i) {
1716
- const c = BI_RC[s.charCodeAt(i)];
1717
- return (c == null) ? -1 : c;
1718
- }
1719
- // return bigint initialized to value
1720
- function nbv(i) {
1721
- const r = nbi();
1722
- r.fromInt(i);
1723
- return r;
1724
- }
1725
- // returns bit length of the integer x
1726
- function nbits(x) {
1727
- let r = 1;
1728
- let t;
1729
- if ((t = x >>> 16) != 0) {
1730
- x = t;
1731
- r += 16;
1732
- }
1733
- if ((t = x >> 8) != 0) {
1734
- x = t;
1735
- r += 8;
1736
- }
1737
- if ((t = x >> 4) != 0) {
1738
- x = t;
1739
- r += 4;
1740
- }
1741
- if ((t = x >> 2) != 0) {
1742
- x = t;
1743
- r += 2;
1744
- }
1745
- if ((t = x >> 1) != 0) {
1746
- x = t;
1747
- r += 1;
1748
- }
1749
- return r;
1750
- }
1751
- // "constants"
1752
- BigInteger.ZERO = nbv(0);
1753
- BigInteger.ONE = nbv(1);
1754
-
1755
- exports.BigInteger = BigInteger;
1756
- exports.intAt = intAt;
1757
- exports.nbi = nbi;
1758
- exports.nbits = nbits;
1759
- exports.nbv = nbv;
1760
- exports.parseBigInt = parseBigInt;