@laceio/sdk 0.1.1 → 0.1.2-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/dist/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-CCjOn7NA.cjs} +42 -0
  2. package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-CIzdw18M.js} +1 -1
  3. package/dist/{_polyfill-buffer-patch-BnPVerlG.cjs → _polyfill-buffer-patch-CM8X7JiY.cjs} +21 -2
  4. package/dist/_polyfill-buffer-patch-yNxN4d5E.js +1467 -0
  5. package/dist/_web-crypto-random-bytes-Bo-GTcRS.js +197 -0
  6. package/dist/acc-module-4iIUv6My.cjs +27654 -0
  7. package/dist/acc-module-Cmj8EsIb.js +27624 -0
  8. package/dist/account-BOQruszJ.js +6 -0
  9. package/dist/account-BUOj4pYJ.cjs +11 -0
  10. package/dist/account-call-7wnopBq0.cjs +5 -0
  11. package/dist/account-call-B9d_2Xwi.js +4 -0
  12. package/dist/account-call-Bd4Rpbvt.cjs +323 -0
  13. package/dist/account-call-C3CkDqEC.js +276 -0
  14. package/dist/account-guards-BtjTGxDZ.cjs +42 -0
  15. package/dist/account-guards-D9Lu5T3W.js +36 -0
  16. package/dist/account-tokens-DvkOFVON.js +16 -0
  17. package/dist/account-tokens-nwcvwLu4.cjs +21 -0
  18. package/dist/{activity-type.stable-BJEfeLxL.cjs → activity-type-Ch6ljxBy.cjs} +2 -1
  19. package/dist/{activity-type.stable-C76_hWd7.js → activity-type-GsJGWs-3.js} +2 -1
  20. package/dist/address-B9ntKL8K.js +13761 -0
  21. package/dist/address-BXp-mY8H.cjs +11270 -0
  22. package/dist/{address-book-address-validator-DIUolI-s.js → address-book-address-validator-0J9XAADH.js} +2 -2
  23. package/dist/address-book-address-validator-DK0dnsRS.cjs +41 -0
  24. package/dist/address-book-address-validator-Di_ywo8M.js +39 -0
  25. package/dist/{address-book-address-validator-DNwQGlOB.cjs → address-book-address-validator-Dte_YQ2L.cjs} +2 -2
  26. package/dist/artefact-loader-BWWYAD7E.cjs +183 -0
  27. package/dist/artefact-loader-Dik4HIfv.js +160 -0
  28. package/dist/auto-dismiss-failure-on-success-C-qoJuid.cjs +37 -0
  29. package/dist/auto-dismiss-failure-on-success-s8MGDEIu.js +31 -0
  30. package/dist/bip32-D6wd_QMn.cjs +3851 -0
  31. package/dist/bitcoin-data-provider-BYPSmuZS.js +21 -0
  32. package/dist/bitcoin-data-provider-w1oEDSU3.cjs +26 -0
  33. package/dist/bitcoin.cjs +45 -0
  34. package/dist/bitcoin.d.ts +29906 -1
  35. package/dist/bitcoin.js +20 -0
  36. package/dist/{blockfrost-tx-submit-provider-DPTrapz-.js → blockfrost-tx-submit-provider-CBWQ0wK9.js} +5 -157
  37. package/dist/{blockfrost-tx-submit-provider-BAIzV5o3.cjs → blockfrost-tx-submit-provider-CLNQ5ycR.cjs} +3 -167
  38. package/dist/bn-d3nSOIf7.cjs +2553 -0
  39. package/dist/browser-B1eMbDwh.js +7468 -0
  40. package/dist/bytes.vo-BB7_4JK6.js +23 -0
  41. package/dist/bytes.vo-BNRquqaO.cjs +34 -0
  42. package/dist/cardano-DfPwhwm-.js +3 -0
  43. package/dist/{cardano-network-id.vo-DSxrFk9S.cjs → cardano-network-id.vo-BEDPn6Li.cjs} +1 -1
  44. package/dist/{cardano-network-id.vo-CK1tNQDg.js → cardano-network-id.vo-Cfpvbod9.js} +1 -1
  45. package/dist/cardano.cjs +22 -18
  46. package/dist/cardano.d.ts +16956 -1716
  47. package/dist/cardano.js +16 -11
  48. package/dist/client-DXBLHk7K.cjs +808 -0
  49. package/dist/codecs-Cswkg7Tm.cjs +4051 -0
  50. package/dist/codecs-Dc1Krpbt.js +3903 -0
  51. package/dist/{const-C84qHkjp.js → const-BJfIK_G-.js} +4 -4
  52. package/dist/const-BhYOdznB.cjs +42 -0
  53. package/dist/const-BsnjG2_Q.cjs +32071 -0
  54. package/dist/const-CUnCl5U0.js +13 -0
  55. package/dist/{const-DXk2tFyv.js → const-CjmfjBP3.js} +1 -1
  56. package/dist/{const-BDEg2Trq.cjs → const-D-eZIS4n.cjs} +4 -4
  57. package/dist/const-D0CbQlo4.js +154 -0
  58. package/dist/{const-BY8B3_0_.cjs → const-iwzZEE_w.cjs} +1 -1
  59. package/dist/contract-1R86jhSw.js +171 -0
  60. package/dist/contract-MKLzYVkW.cjs +189 -0
  61. package/dist/create-add-accounts-Brqk84vF.js +102 -0
  62. package/dist/create-add-accounts-DzXIh7Ot.cjs +114 -0
  63. package/dist/{delegation-tx-builder-CRpLP6jH.cjs → delegation-tx-builder-CCjiakoy.cjs} +6 -6
  64. package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-DZFjHDS8.js} +5 -5
  65. package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-Bf6xAYp4.js} +5 -5
  66. package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CQP35yex.cjs} +6 -6
  67. package/dist/device-commitment-hex.vo-5wFtQvDS.js +26 -0
  68. package/dist/device-commitment-hex.vo-CT3RmAug.cjs +31 -0
  69. package/dist/device-readers-CUHYoYOH.js +145 -0
  70. package/dist/device-readers-CdxS2btd.cjs +168 -0
  71. package/dist/device-readers-D_JZeNL2.cjs +8 -0
  72. package/dist/device-readers-DwSNCGPP.js +4 -0
  73. package/dist/dist-BMi5ZjEq.cjs +43175 -0
  74. package/dist/dist-BtIq4XFn.cjs +535 -0
  75. package/dist/dist-C3SHC_Ho.cjs +1394 -0
  76. package/dist/dist-CykEjYEX.cjs +3814 -0
  77. package/dist/dist-Dcsxh3be.cjs +3452 -0
  78. package/dist/dist-DqJfSlTd.cjs +4413 -0
  79. package/dist/dist-nTZ70qj7.cjs +1306 -0
  80. package/dist/{earn-rewards-tx-builder-BDbTDZmD.js → earn-rewards-tx-builder-Bsga3yFb.js} +5 -5
  81. package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-GuxofYns.cjs} +6 -6
  82. package/dist/enc-key-circuits-B7BjgUL9.js +13 -0
  83. package/dist/enc-key-circuits-BLrZrBVI.cjs +24 -0
  84. package/dist/english-Byb9M0E_.cjs +2057 -0
  85. package/dist/envelopes-BGoO_v8m.js +1621 -0
  86. package/dist/envelopes-CH25R-DN.cjs +1722 -0
  87. package/dist/errors-BIftM8ZN.cjs +688 -0
  88. package/dist/errors-DSq5wUwt.js +466 -0
  89. package/dist/esm-HBSUQw3w.js +384 -0
  90. package/dist/esm-LZuaZjMf.cjs +389 -0
  91. package/dist/experimental.cjs +7349 -0
  92. package/dist/experimental.d.ts +86273 -0
  93. package/dist/experimental.js +7184 -0
  94. package/dist/gated-call-CDCVZIK-.cjs +5 -0
  95. package/dist/gated-call-D-tT7P_t.js +722 -0
  96. package/dist/gated-call-D_VT2quk.js +4 -0
  97. package/dist/gated-call-DgJm1Mi_.cjs +787 -0
  98. package/dist/grant-circuits-DswmW3nI.cjs +71 -0
  99. package/dist/grant-circuits-Jxb5y1HW.js +42 -0
  100. package/dist/grant-rules-By07_eDi.js +6824 -0
  101. package/dist/grant-rules-BzVTWXS7.cjs +7099 -0
  102. package/dist/grant-spend-B3Md9L0n.js +215 -0
  103. package/dist/grant-spend-oWmzRsjH.cjs +217 -0
  104. package/dist/grant-status-B2y49iIu.js +2688 -0
  105. package/dist/grant-status-DOr3t_u8.cjs +2820 -0
  106. package/dist/grants-2BZ-qEVQ.js +5 -0
  107. package/dist/grants-BPoLSiMt.cjs +18 -0
  108. package/dist/grants-BoI5uwSF.cjs +272 -0
  109. package/dist/grants-CtofFu-e.js +213 -0
  110. package/dist/{group-cardano-addresses-by-account-B533oVXR.cjs → group-cardano-addresses-by-account-Bp0g4wEY.cjs} +3 -39
  111. package/dist/{group-cardano-addresses-by-account-RHKoEskR.js → group-cardano-addresses-by-account-SR8MMrZf.js} +5 -35
  112. package/dist/{guarded-transaction-signer-Bxl6_XNd.cjs → guarded-transaction-signer-MFpPg98D.cjs} +17 -18
  113. package/dist/{guarded-transaction-signer-CpKLj8Kp.js → guarded-transaction-signer-P6Rp1faj.js} +8 -15
  114. package/dist/hex-D9ITYbwt.cjs +263 -0
  115. package/dist/hex-mkXcV3pN.js +191 -0
  116. package/dist/http-client-B3N-TMxu.cjs +167 -0
  117. package/dist/http-client-TRlhDZGh.js +155 -0
  118. package/dist/identity-BMLuufva.cjs +263 -0
  119. package/dist/identity-DII6f-h7.js +233 -0
  120. package/dist/in-memory-wallet-integration-B2xzxORj.cjs +20741 -0
  121. package/dist/in-memory-wallet-integration-CBRiPjLO.js +130 -0
  122. package/dist/in-memory-wallet-integration-CULUB5Tf.cjs +240 -0
  123. package/dist/{in-memory-wallet-integration-D-qn65Kx.js → in-memory-wallet-integration-ChIOirMW.js} +5 -2
  124. package/dist/{in-memory-wallet-integration-Croiuopx.js → in-memory-wallet-integration-CljprQQV.js} +7 -104
  125. package/dist/{in-memory-wallet-integration-DVh9sRXa.cjs → in-memory-wallet-integration-Cm6P8sk6.cjs} +3 -2
  126. package/dist/in-memory-wallet-integration-TM9bBphA.js +20738 -0
  127. package/dist/{in-memory-wallet-integration-CnLYeX4-.cjs → in-memory-wallet-integration-t9I00R_V.cjs} +17 -108
  128. package/dist/index.cjs +84 -47
  129. package/dist/index.d.ts +37496 -10033
  130. package/dist/index.js +52 -24
  131. package/dist/{init-CLHuAMB-.js → init-0zzs9aqU.js} +4 -4
  132. package/dist/{init-U8c9yHYx.cjs → init-5KcGcBb5.cjs} +1 -1
  133. package/dist/init-8v_n8boO.js +1177 -0
  134. package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
  135. package/dist/init-B8U3ABhS.cjs +107 -0
  136. package/dist/init-BJn-8_hf.js +141 -0
  137. package/dist/init-BPU3j8sT.cjs +6 -0
  138. package/dist/init-BRzH6xu-2.cjs +2797 -0
  139. package/dist/init-BmzfDaKL.js +1142 -0
  140. package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
  141. package/dist/init-BpHTq2R5.js +105 -0
  142. package/dist/init-BpSITBfF.js +39 -0
  143. package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
  144. package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
  145. package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
  146. package/dist/init-C00gw1zi.js +422 -0
  147. package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
  148. package/dist/{init-DcYY6zMD.js → init-C8URA2OX.js} +1 -1
  149. package/dist/init-CDkRynJa.js +2796 -0
  150. package/dist/{init-Cg9XdAru.js → init-CNM5m7M2.js} +4 -4
  151. package/dist/init-CR7BfztQ.cjs +18 -0
  152. package/dist/{init-CSHwHnfg.cjs → init-CSDpdu0Q.cjs} +2 -2
  153. package/dist/{init-aJHl-7AO.js → init-CX0AMQUn.js} +2 -2
  154. package/dist/{init-FMGDET-9.js → init-CfTbSEKy.js} +259 -60
  155. package/dist/{init-CR6tpw1B.js → init-Cigr_tKx.js} +47 -43
  156. package/dist/init-CuW7rHNA.js +3584 -0
  157. package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
  158. package/dist/init-Cz0rz5fU.cjs +3585 -0
  159. package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
  160. package/dist/init-D8OeObDF.cjs +1141 -0
  161. package/dist/init-D9g1HXYf.cjs +40 -0
  162. package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
  163. package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
  164. package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
  165. package/dist/init-DGjXwWs2.cjs +143 -0
  166. package/dist/init-DHrCbpkW.cjs +121 -0
  167. package/dist/{init-B64zCLxG.cjs → init-DUF4ar8P.cjs} +4 -4
  168. package/dist/init-DlqJuHhl.js +119 -0
  169. package/dist/{init-y2Ra0vZP.js → init-Dnsv155v.js} +3 -3
  170. package/dist/init-DrRdf5sZ.cjs +1176 -0
  171. package/dist/init-DuYENxci.js +17 -0
  172. package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
  173. package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
  174. package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
  175. package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
  176. package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
  177. package/dist/init-GsT2AEa4.cjs +424 -0
  178. package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
  179. package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
  180. package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
  181. package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
  182. package/dist/init-c4l6r-o-.js +5 -0
  183. package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
  184. package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
  185. package/dist/{init-anYu6XB7.cjs → init-rmt7-fQE.cjs} +2 -2
  186. package/dist/{init-C4Bkib9u.cjs → init-zU-_9Gsp.cjs} +67 -65
  187. package/dist/{is-retriable-error-BU0e3hVI.js → is-retriable-error-BUiVJDwH.js} +1 -1
  188. package/dist/{is-retriable-error-CeeuHqDa.cjs → is-retriable-error-Dpt860if.cjs} +1 -1
  189. package/dist/jubjub-authoriser-D7zDXu3V.js +86 -0
  190. package/dist/jubjub-authoriser-Dgu6o3Sv.cjs +87 -0
  191. package/dist/key-source-5oUBFiC7.cjs +583 -0
  192. package/dist/key-source-B08HukZg.js +2550 -0
  193. package/dist/keyDerivation-D3k9XyHg.js +4077 -0
  194. package/dist/keyDerivation-u0nBA93T.cjs +274 -0
  195. package/dist/{lace-context-CZcNHr4M.js → lace-context-BZciB9c7.js} +4 -4
  196. package/dist/{lace-context-fJTDghdp.cjs → lace-context-DgR6vLli.cjs} +4 -4
  197. package/dist/lib--iqvW4O_.js +2354 -0
  198. package/dist/lib-Yk6Upl5D.cjs +2359 -0
  199. package/dist/{libsodium-wrappers-UH0LaOUE.js → libsodium-wrappers-BhbOA8dQ.js} +3 -1647
  200. package/dist/midnight-account-id.vo-0x9X-r3l.cjs +10 -0
  201. package/dist/midnight-account-id.vo-DjCAGcqc.js +5 -0
  202. package/dist/midnight-engine-DpemplKO.js +5 -0
  203. package/dist/midnight-engine-xU1wotne.cjs +6 -0
  204. package/dist/midnight-wallet-DIsAlSn6.js +18 -0
  205. package/dist/midnight-wallet-XTZc2li7.cjs +24 -0
  206. package/dist/midnight.cjs +1408 -0
  207. package/dist/midnight.d.ts +28934 -0
  208. package/dist/midnight.js +1352 -0
  209. package/dist/modules-cardano-B1nDUWqy.js +995 -0
  210. package/dist/modules-cardano-BYeYHrRm.cjs +1108 -0
  211. package/dist/node-relay-DWe1U0w2.cjs +49 -0
  212. package/dist/node-relay-h4i5IlAQ.js +48 -0
  213. package/dist/outputs-Bd2yZVjx.js +720 -0
  214. package/dist/outputs-CJoQBIA2.cjs +990 -0
  215. package/dist/pbkdf2-CIW-oWrm.cjs +1337 -0
  216. package/dist/pending-operation-B0_P78Jo.cjs +26 -0
  217. package/dist/pending-operation-BIS6mpjB.js +21 -0
  218. package/dist/providers-FjhM47BH.cjs +388 -0
  219. package/dist/providers-WtiSuxFu.js +365 -0
  220. package/dist/redacted-BmE2aXqr.js +81 -0
  221. package/dist/redacted-CRZJLS3w.cjs +86 -0
  222. package/dist/{retry-config-DC5IMaH7.cjs → retry-config-BaCfVC1H.cjs} +1 -1
  223. package/dist/{retry-config-BcUmMS--.js → retry-config-Dmgt28wM.js} +1 -1
  224. package/dist/safe-buffer-B_vMqJWU.js +43 -0
  225. package/dist/safe-buffer-DYOwEfHB.cjs +48 -0
  226. package/dist/sdk-Cb-gZnS9.js +1241 -0
  227. package/dist/sdk-DffwmX8b.cjs +1439 -0
  228. package/dist/sdk-init-Bln9rFtn.js +4138 -0
  229. package/dist/sdk-init-CYViTJY_.cjs +3841 -0
  230. package/dist/{seam-cardano-CATqBEyK.js → seam-cardano-B_etH4F4.js} +1 -1
  231. package/dist/{bytes.vo-TgiwogWF.js → secret-box-DUR0ACYz.js} +3 -25
  232. package/dist/{bytes.vo-Ck5u40RA.cjs → secret-box-DrjLZuS1.cjs} +1 -35
  233. package/dist/send-proof-progress-C-ljq1x5.js +30 -0
  234. package/dist/send-proof-progress-vmsaSfbz.cjs +47 -0
  235. package/dist/side-effects-BnqYz7Nl.js +768 -0
  236. package/dist/side-effects-CngaeXi0.cjs +804 -0
  237. package/dist/sign-bitcoin-transaction-with-seed-D4z62-jV.js +147 -0
  238. package/dist/sign-bitcoin-transaction-with-seed-DsLYXnCY.cjs +158 -0
  239. package/dist/signer-3fk8lZtE.cjs +7 -0
  240. package/dist/signer-CsL28DrK.cjs +121 -0
  241. package/dist/signer-DGluibtn.js +92 -0
  242. package/dist/signer-RqB5pu3K.js +2 -0
  243. package/dist/signer-factory-BA7WFJVZ.js +282 -0
  244. package/dist/signer-factory-Cwd6o-lG.cjs +281 -0
  245. package/dist/{signer-factory-9URFliA5.js → signer-factory-DObB55D4.js} +6 -3
  246. package/dist/signer-factory-DhZiE03y.cjs +149 -0
  247. package/dist/{signer-factory-BWGUmnvm.cjs → signer-factory-Ds6G2AZk.cjs} +4 -3
  248. package/dist/signer-factory-hzSRaIw2.js +148 -0
  249. package/dist/{slice-CuHUaPZx.cjs → slice-7G2xxYKJ.cjs} +3 -3
  250. package/dist/{slice-DZmQJNV8.cjs → slice-B4CdYoPu.cjs} +2 -2
  251. package/dist/slice-BPNuHKfw.js +9091 -0
  252. package/dist/{slice-DGcNrbPR.cjs → slice-Bg6HEr3K.cjs} +4 -4
  253. package/dist/{slice-DtaO72qY.cjs → slice-Bs2aMERu.cjs} +3 -3
  254. package/dist/{slice-HeHCv3bl.cjs → slice-C34iOOUH.cjs} +7 -7
  255. package/dist/{slice-Do2R2CYW.cjs → slice-C9TT5KhY.cjs} +6 -6
  256. package/dist/{slice-eIwcwKHI.js → slice-CK07EBCo.js} +4 -4
  257. package/dist/{slice-CnyWevM9.js → slice-CU80pbiu.js} +3 -3
  258. package/dist/{slice-CobanYgn.js → slice-CwyYrh1H.js} +2 -2
  259. package/dist/slice-Czfp6t84.cjs +436 -0
  260. package/dist/{slice-d0p6-xj5.js → slice-D-9aPKG-.js} +6 -6
  261. package/dist/{slice-maaskdUn.js → slice-DBpJ2QGf.js} +6 -6
  262. package/dist/{slice-mxLQ_FeY.cjs → slice-DTZTiJle.cjs} +352 -39
  263. package/dist/{slice-zJ9XVYjZ.js → slice-Da426sf9.js} +1 -1
  264. package/dist/{slice-D11m2EKl.cjs → slice-DayJvMRD.cjs} +1 -1
  265. package/dist/slice-DnBWfA-k.cjs +9109 -0
  266. package/dist/{slice-oqm_r1cS.cjs → slice-DnG-yvpI.cjs} +2 -2
  267. package/dist/{slice-BNu73oBa.js → slice-DyNs7oWp.js} +2 -2
  268. package/dist/{slice-CB4SnzMm.js → slice-GwiiJRoq.js} +3 -3
  269. package/dist/slice-oWnc7YVD.js +412 -0
  270. package/dist/{slice-B2PhoWAg.js → slice-qt0uBExh.js} +325 -37
  271. package/dist/slice-t8Gzj55G2.cjs +106 -0
  272. package/dist/slice-t8Q1cHm-.js +88 -0
  273. package/dist/src-BDzYIksE.cjs +20637 -0
  274. package/dist/src-BFoefPv_.js +20755 -0
  275. package/dist/store-B1Lq3cEf.cjs +66 -0
  276. package/dist/store-DuBG8qh5.js +37 -0
  277. package/dist/submit-Bs77dPn_.cjs +413 -0
  278. package/dist/submit-DOv8Z0Vf.js +336 -0
  279. package/dist/submit-bitcoin-tx-D6oYgH5S.js +983 -0
  280. package/dist/submit-bitcoin-tx-goFuRL7K.cjs +1049 -0
  281. package/dist/{sync-operation-utils-BYXLO80m.js → sync-operation-utils-31iFLExW.js} +2 -38
  282. package/dist/{sync-operation-utils-SdPbwFoD.cjs → sync-operation-utils-COIZ66-I.cjs} +1 -67
  283. package/dist/token-id-mapper-Bnds3xKH.cjs +18 -0
  284. package/dist/{token-id-mapper-DsPAL6Nh.cjs → token-id-mapper-CVyQJUKY.cjs} +2 -2
  285. package/dist/token-id-mapper-CnKHQ8DV.js +16 -0
  286. package/dist/{token-id-mapper-B2ivlLv3.js → token-id-mapper-D29Ggv8h.js} +2 -2
  287. package/dist/tokens-Cevp7rdU.cjs +62 -0
  288. package/dist/tokens-Diw4MLRM.js +44 -0
  289. package/dist/types-B8uiJn-X.js +12 -0
  290. package/dist/types-BHC12eSa.js +33 -0
  291. package/dist/types-CJT6XF2c.js +10 -0
  292. package/dist/types-CLRUYpfe.cjs +23 -0
  293. package/dist/types-Cc3mC8u0.cjs +50 -0
  294. package/dist/types-DWbVZpnF.cjs +15 -0
  295. package/dist/unwrap-provider-result-BZSiwabU.js +32 -0
  296. package/dist/unwrap-provider-result-ZqfBsTkk.cjs +39 -0
  297. package/dist/{util-CGzqQ8IV.cjs → util-Bu4W5lF4.cjs} +1 -1
  298. package/dist/{util-BaLzwa32.js → util-Cp5cZkfK.js} +1 -1
  299. package/dist/{utils-o8aMjfln.js → utils-BfBEUvWA.js} +2 -2
  300. package/dist/utils-DFwzEvbv.js +65 -0
  301. package/dist/{utils-5JvjbqH3.cjs → utils-DsElZgCI.cjs} +7 -1
  302. package/dist/utils-IXxR-Djh.cjs +112 -0
  303. package/dist/v8Signatures-CO_Uloy7.cjs +71 -0
  304. package/dist/{vote-delegation-tx-builder-BpEMSti4.cjs → vote-delegation-tx-builder-BUg1S2Ep.cjs} +6 -6
  305. package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-C6FiS7zI.js} +5 -5
  306. package/dist/watch-CUEvcP-V.js +21997 -0
  307. package/dist/watch-DMF2s-II.cjs +52281 -0
  308. package/package.json +96 -4
  309. package/dist/account-guards.stable-B1DSSh9D.cjs +0 -10
  310. package/dist/account-guards.stable-JRQ5qx2V.js +0 -5
  311. package/dist/codecs-B7X9pAsK.cjs +0 -1945
  312. package/dist/codecs-CC1Xjntz.js +0 -1882
  313. package/dist/init-Bv53hpLM.js +0 -19
  314. package/dist/init-CRbjI7p1.js +0 -3494
  315. package/dist/init-DAna1KCg.cjs +0 -3495
  316. package/dist/init-DGe47B22.cjs +0 -364
  317. package/dist/init-DMtyvYfC.cjs +0 -21
  318. package/dist/init-TkPDD750.js +0 -363
  319. package/dist/modules-cardano-BDvuL4Xx.js +0 -5248
  320. package/dist/modules-cardano-D2G3De2P.cjs +0 -5432
  321. package/dist/slice-CGVHXHDt.cjs +0 -125
  322. package/dist/slice-DhvF7L6X.js +0 -107
  323. /package/dist/{account-id.vo-LvCBVn5r.cjs → account-id.vo-DwqFjK5u.cjs} +0 -0
  324. /package/dist/{account-id.vo-MYSI7YFm.js → account-id.vo-OPz2v-JZ.js} +0 -0
  325. /package/dist/{actions-DdGbj7c7.cjs → actions-B2BJ4RTy.cjs} +0 -0
  326. /package/dist/{actions-9QSQR-GB.js → actions-iLXdgL5Y.js} +0 -0
  327. /package/dist/{apply-vkey-witnesses-ClZbpk5w.js → apply-vkey-witnesses-BKx3lcs0.js} +0 -0
  328. /package/dist/{apply-vkey-witnesses-CLzVSWxl.cjs → apply-vkey-witnesses-ZnFS0jnJ.cjs} +0 -0
  329. /package/dist/{asyncoption-Cw07zPH7.js → asyncoption-CruEYOBI.js} +0 -0
  330. /package/dist/{asyncoption-DYoGuQfP.cjs → asyncoption-i0VbqVTq.cjs} +0 -0
  331. /package/dist/{bignum.vo-B0rK_PQ1.js → bignum.vo-CEXOIew0.js} +0 -0
  332. /package/dist/{bignum.vo-DsG3kNiZ.cjs → bignum.vo-hx2kuqlA.cjs} +0 -0
  333. /package/dist/{bip32ed25519-1ApqeAZk.cjs → bip32ed25519-B7Yat217.cjs} +0 -0
  334. /package/dist/{bip32ed25519-DetAdGwD.js → bip32ed25519-FQ8qvdcq.js} +0 -0
  335. /package/dist/{blake2b-DOEVc57D.js → blake2b-BiQTw3GC.js} +0 -0
  336. /package/dist/{blake2b-B9tftbvG.cjs → blake2b-DEeVUdKR.cjs} +0 -0
  337. /package/dist/{blockchain-network-id.vo-BXpZhvvQ.cjs → blockchain-network-id.vo-BAKEwGjG.cjs} +0 -0
  338. /package/dist/{blockchain-network-id.vo-DNRkuT5B.js → blockchain-network-id.vo-CiVykuqG.js} +0 -0
  339. /package/dist/{blockingWithLatestFrom-C5wp_uA-.js → blockingWithLatestFrom-Cd8c8EPG.js} +0 -0
  340. /package/dist/{blockingWithLatestFrom-DY8OPg0w.cjs → blockingWithLatestFrom-D8kBPBMX.cjs} +0 -0
  341. /package/dist/{cardano-network-id-to-network-type-CrZfUcyP.js → cardano-network-id-to-network-type-BWwzeEtM.js} +0 -0
  342. /package/dist/{cardano-network-id-to-network-type-BDTF-HmK.cjs → cardano-network-id-to-network-type-C0ufJOyE.cjs} +0 -0
  343. /package/dist/{cardano-tx-id.vo-BPhV-AmZ.cjs → cardano-tx-id.vo-TLjJZHCI.cjs} +0 -0
  344. /package/dist/{cardano-tx-id.vo-DF9NzZXk.js → cardano-tx-id.vo-eVnKuzlm.js} +0 -0
  345. /package/dist/{composite-signer-factory-_46QsNBz.js → composite-signer-factory-CR8YHA1y.js} +0 -0
  346. /package/dist/{composite-signer-factory-BpF1mIYA.cjs → composite-signer-factory-m5cVs9h_.cjs} +0 -0
  347. /package/dist/{error-CNIquqT5.cjs → error-Cb3EnD0u.cjs} +0 -0
  348. /package/dist/{error-BCp9NkPi.js → error-DIZOY2Lw.js} +0 -0
  349. /package/dist/{esm-browser-C93Q-EOI.js → esm-browser-MG97cre9.js} +0 -0
  350. /package/dist/{esm-browser-DTc9IK3D.cjs → esm-browser-bweqfBlL.cjs} +0 -0
  351. /package/dist/{feature-flag-key.vo-ofrB6ZVQ.js → feature-flag-key.vo-DN_-4-sG.js} +0 -0
  352. /package/dist/{feature-flag-key.vo-BPz-ZAp6.cjs → feature-flag-key.vo-RlfHL3hq.cjs} +0 -0
  353. /package/dist/{first-state-of-status-OROkXcRv.cjs → first-state-of-status-CbT7hPa4.cjs} +0 -0
  354. /package/dist/{first-state-of-status-DQnMT3ya.js → first-state-of-status-unPynOuM.js} +0 -0
  355. /package/dist/{init-Es3wHW7D.js → init-829HRYcz.js} +0 -0
  356. /package/dist/{init-CKipPE_c.js → init-A-VyGSNW2.js} +0 -0
  357. /package/dist/{init-DFQQ9dTW.cjs → init-Atisw4x2.cjs} +0 -0
  358. /package/dist/{init-C5CEZ1m0.cjs → init-BFcvPHL-.cjs} +0 -0
  359. /package/dist/{init-IAk_CkGa.cjs → init-BgNobbNq.cjs} +0 -0
  360. /package/dist/{init-cqN3uX2j.js → init-atCFur0v.js} +0 -0
  361. /package/dist/{is-redux-persist-state-CTn3WZVh.cjs → is-redux-persist-state-BCFnSm36.cjs} +0 -0
  362. /package/dist/{is-redux-persist-state-Cxcd0_bM.js → is-redux-persist-state-yBfq0h_E.js} +0 -0
  363. /package/dist/{key-value-store-8cMzeNyG.js → key-value-store--W3SrMaw.js} +0 -0
  364. /package/dist/{key-value-store-DUAepXQf.cjs → key-value-store-C2Xt5Emp.cjs} +0 -0
  365. /package/dist/{repo-slice-WxetRhMY.cjs → repo-slice-7X4AYYVm.cjs} +0 -0
  366. /package/dist/{repo-slice-DwyMhCR1.js → repo-slice-RxFm0zDZ.js} +0 -0
  367. /package/dist/{reselect-CRDqmQY9.cjs → reselect-Bd94u0K-.cjs} +0 -0
  368. /package/dist/{reselect-C06X06oX.js → reselect-CGoLzEPv.js} +0 -0
  369. /package/dist/{serializable-B8GahgE1.js → serializable-BHdKIgk3.js} +0 -0
  370. /package/dist/{serializable-CRdnFaLZ.cjs → serializable-BxHkoPdk.cjs} +0 -0
  371. /package/dist/{slice-D11FHQuQ.cjs → slice-BiRsDKOK.cjs} +0 -0
  372. /package/dist/{slice-Be7hj4Iy.js → slice-Bk0Sv05J.js} +0 -0
  373. /package/dist/{slice-FioKeHtA.cjs → slice-Dqw1ecum.cjs} +0 -0
  374. /package/dist/{slice-B87b52iM.js → slice-obCSLm1x.js} +0 -0
  375. /package/dist/{src-vq1wS9sZ.js → src-BlxEp6Mm.js} +0 -0
  376. /package/dist/{src-BTPIvlDI.cjs → src-Cqp0B2M_.cjs} +0 -0
  377. /package/dist/{time.vo-CQ8pSXz2.cjs → time.vo-D3wWRw9L.cjs} +0 -0
  378. /package/dist/{time.vo-DkYYGYp6.js → time.vo-tNheinXm.js} +0 -0
  379. /package/dist/{toEmpty-CgAl3097.js → toEmpty-8Zax1MPd.js} +0 -0
  380. /package/dist/{toEmpty-DAMmNB5r.cjs → toEmpty-CYAbupM4.cjs} +0 -0
  381. /package/dist/{token-id.vo-ClsroxHO.js → token-id.vo-Bvwhr3ZE.js} +0 -0
  382. /package/dist/{token-id.vo-BxG9TG0O.cjs → token-id.vo-DXv5uS9n.cjs} +0 -0
  383. /package/dist/{util-DxzlYNS5.js → util-C8a4fA9p.js} +0 -0
  384. /package/dist/{util-CmdAhheh.cjs → util-CzeB3hfa.cjs} +0 -0
  385. /package/dist/{util-selector-CcK-GAdE.js → util-selector-BSTsxgne.js} +0 -0
  386. /package/dist/{util-selector-BcAncU4L.cjs → util-selector-BWPH68_l.cjs} +0 -0
  387. /package/dist/{while-active-BpppWuCs.js → while-active-B0lWy_6l.js} +0 -0
  388. /package/dist/{while-active-Dhc2LwOm.cjs → while-active-Dsowp0Fi.cjs} +0 -0
@@ -0,0 +1,2553 @@
1
+ const require_rolldown_runtime = require("./rolldown-runtime-Br2OG8yv.cjs");
2
+ const require__polyfill_buffer_patch = require("./_polyfill-buffer-patch-CM8X7JiY.cjs");
3
+ //#region ../../node_modules/bn.js/lib/bn.js
4
+ var require_bn = /* @__PURE__ */ require_rolldown_runtime.__commonJSMin(((exports, module) => {
5
+ (function(module$1, exports$1) {
6
+ "use strict";
7
+ function assert(val, msg) {
8
+ if (!val) throw new Error(msg || "Assertion failed");
9
+ }
10
+ function inherits(ctor, superCtor) {
11
+ ctor.super_ = superCtor;
12
+ var TempCtor = function() {};
13
+ TempCtor.prototype = superCtor.prototype;
14
+ ctor.prototype = new TempCtor();
15
+ ctor.prototype.constructor = ctor;
16
+ }
17
+ function BN(number, base, endian) {
18
+ if (BN.isBN(number)) return number;
19
+ this.negative = 0;
20
+ this.words = null;
21
+ this.length = 0;
22
+ this.red = null;
23
+ if (number !== null) {
24
+ if (base === "le" || base === "be") {
25
+ endian = base;
26
+ base = 10;
27
+ }
28
+ this._init(number || 0, base || 10, endian || "be");
29
+ }
30
+ }
31
+ if (typeof module$1 === "object") module$1.exports = BN;
32
+ else exports$1.BN = BN;
33
+ BN.BN = BN;
34
+ BN.wordSize = 26;
35
+ var Buffer;
36
+ try {
37
+ if (typeof window !== "undefined" && typeof window.Buffer !== "undefined") Buffer = window.Buffer;
38
+ else Buffer = (require__polyfill_buffer_patch.init__polyfill_buffer_patch(), require_rolldown_runtime.__toCommonJS(require__polyfill_buffer_patch._polyfill_buffer_patch_exports)).Buffer;
39
+ } catch (e) {}
40
+ BN.isBN = function isBN(num) {
41
+ if (num instanceof BN) return true;
42
+ return num !== null && typeof num === "object" && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);
43
+ };
44
+ BN.max = function max(left, right) {
45
+ if (left.cmp(right) > 0) return left;
46
+ return right;
47
+ };
48
+ BN.min = function min(left, right) {
49
+ if (left.cmp(right) < 0) return left;
50
+ return right;
51
+ };
52
+ BN.prototype._init = function init(number, base, endian) {
53
+ if (typeof number === "number") return this._initNumber(number, base, endian);
54
+ if (typeof number === "object") return this._initArray(number, base, endian);
55
+ if (base === "hex") base = 16;
56
+ assert(base === (base | 0) && base >= 2 && base <= 36);
57
+ number = number.toString().replace(/\s+/g, "");
58
+ var start = 0;
59
+ if (number[0] === "-") {
60
+ start++;
61
+ this.negative = 1;
62
+ }
63
+ if (start < number.length) if (base === 16) this._parseHex(number, start, endian);
64
+ else {
65
+ this._parseBase(number, base, start);
66
+ if (endian === "le") this._initArray(this.toArray(), base, endian);
67
+ }
68
+ };
69
+ BN.prototype._initNumber = function _initNumber(number, base, endian) {
70
+ if (number < 0) {
71
+ this.negative = 1;
72
+ number = -number;
73
+ }
74
+ if (number < 67108864) {
75
+ this.words = [number & 67108863];
76
+ this.length = 1;
77
+ } else if (number < 4503599627370496) {
78
+ this.words = [number & 67108863, number / 67108864 & 67108863];
79
+ this.length = 2;
80
+ } else {
81
+ assert(number < 9007199254740992);
82
+ this.words = [
83
+ number & 67108863,
84
+ number / 67108864 & 67108863,
85
+ 1
86
+ ];
87
+ this.length = 3;
88
+ }
89
+ if (endian !== "le") return;
90
+ this._initArray(this.toArray(), base, endian);
91
+ };
92
+ BN.prototype._initArray = function _initArray(number, base, endian) {
93
+ assert(typeof number.length === "number");
94
+ if (number.length <= 0) {
95
+ this.words = [0];
96
+ this.length = 1;
97
+ return this;
98
+ }
99
+ this.length = Math.ceil(number.length / 3);
100
+ this.words = new Array(this.length);
101
+ for (var i = 0; i < this.length; i++) this.words[i] = 0;
102
+ var j, w;
103
+ var off = 0;
104
+ if (endian === "be") for (i = number.length - 1, j = 0; i >= 0; i -= 3) {
105
+ w = number[i] | number[i - 1] << 8 | number[i - 2] << 16;
106
+ this.words[j] |= w << off & 67108863;
107
+ this.words[j + 1] = w >>> 26 - off & 67108863;
108
+ off += 24;
109
+ if (off >= 26) {
110
+ off -= 26;
111
+ j++;
112
+ }
113
+ }
114
+ else if (endian === "le") for (i = 0, j = 0; i < number.length; i += 3) {
115
+ w = number[i] | number[i + 1] << 8 | number[i + 2] << 16;
116
+ this.words[j] |= w << off & 67108863;
117
+ this.words[j + 1] = w >>> 26 - off & 67108863;
118
+ off += 24;
119
+ if (off >= 26) {
120
+ off -= 26;
121
+ j++;
122
+ }
123
+ }
124
+ return this._strip();
125
+ };
126
+ function parseHex4Bits(string, index) {
127
+ var c = string.charCodeAt(index);
128
+ if (c >= 48 && c <= 57) return c - 48;
129
+ else if (c >= 65 && c <= 70) return c - 55;
130
+ else if (c >= 97 && c <= 102) return c - 87;
131
+ else assert(false, "Invalid character in " + string);
132
+ }
133
+ function parseHexByte(string, lowerBound, index) {
134
+ var r = parseHex4Bits(string, index);
135
+ if (index - 1 >= lowerBound) r |= parseHex4Bits(string, index - 1) << 4;
136
+ return r;
137
+ }
138
+ BN.prototype._parseHex = function _parseHex(number, start, endian) {
139
+ this.length = Math.ceil((number.length - start) / 6);
140
+ this.words = new Array(this.length);
141
+ for (var i = 0; i < this.length; i++) this.words[i] = 0;
142
+ var off = 0;
143
+ var j = 0;
144
+ var w;
145
+ if (endian === "be") for (i = number.length - 1; i >= start; i -= 2) {
146
+ w = parseHexByte(number, start, i) << off;
147
+ this.words[j] |= w & 67108863;
148
+ if (off >= 18) {
149
+ off -= 18;
150
+ j += 1;
151
+ this.words[j] |= w >>> 26;
152
+ } else off += 8;
153
+ }
154
+ else for (i = (number.length - start) % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {
155
+ w = parseHexByte(number, start, i) << off;
156
+ this.words[j] |= w & 67108863;
157
+ if (off >= 18) {
158
+ off -= 18;
159
+ j += 1;
160
+ this.words[j] |= w >>> 26;
161
+ } else off += 8;
162
+ }
163
+ this._strip();
164
+ };
165
+ function parseBase(str, start, end, mul) {
166
+ var r = 0;
167
+ var b = 0;
168
+ var len = Math.min(str.length, end);
169
+ for (var i = start; i < len; i++) {
170
+ var c = str.charCodeAt(i) - 48;
171
+ r *= mul;
172
+ if (c >= 49) b = c - 49 + 10;
173
+ else if (c >= 17) b = c - 17 + 10;
174
+ else b = c;
175
+ assert(c >= 0 && b < mul, "Invalid character");
176
+ r += b;
177
+ }
178
+ return r;
179
+ }
180
+ BN.prototype._parseBase = function _parseBase(number, base, start) {
181
+ this.words = [0];
182
+ this.length = 1;
183
+ for (var limbLen = 0, limbPow = 1; limbPow <= 67108863; limbPow *= base) limbLen++;
184
+ limbLen--;
185
+ limbPow = limbPow / base | 0;
186
+ var total = number.length - start;
187
+ var mod = total % limbLen;
188
+ var end = Math.min(total, total - mod) + start;
189
+ var word = 0;
190
+ for (var i = start; i < end; i += limbLen) {
191
+ word = parseBase(number, i, i + limbLen, base);
192
+ this.imuln(limbPow);
193
+ if (this.words[0] + word < 67108864) this.words[0] += word;
194
+ else this._iaddn(word);
195
+ }
196
+ if (mod !== 0) {
197
+ var pow = 1;
198
+ word = parseBase(number, i, number.length, base);
199
+ for (i = 0; i < mod; i++) pow *= base;
200
+ this.imuln(pow);
201
+ if (this.words[0] + word < 67108864) this.words[0] += word;
202
+ else this._iaddn(word);
203
+ }
204
+ this._strip();
205
+ };
206
+ BN.prototype.copy = function copy(dest) {
207
+ dest.words = new Array(this.length);
208
+ for (var i = 0; i < this.length; i++) dest.words[i] = this.words[i];
209
+ dest.length = this.length;
210
+ dest.negative = this.negative;
211
+ dest.red = this.red;
212
+ };
213
+ function move(dest, src) {
214
+ dest.words = src.words;
215
+ dest.length = src.length;
216
+ dest.negative = src.negative;
217
+ dest.red = src.red;
218
+ }
219
+ BN.prototype._move = function _move(dest) {
220
+ move(dest, this);
221
+ };
222
+ BN.prototype.clone = function clone() {
223
+ var r = new BN(null);
224
+ this.copy(r);
225
+ return r;
226
+ };
227
+ BN.prototype._expand = function _expand(size) {
228
+ while (this.length < size) this.words[this.length++] = 0;
229
+ return this;
230
+ };
231
+ BN.prototype._strip = function strip() {
232
+ while (this.length > 1 && this.words[this.length - 1] === 0) this.length--;
233
+ return this._normSign();
234
+ };
235
+ BN.prototype._normSign = function _normSign() {
236
+ if (this.length === 1 && this.words[0] === 0) this.negative = 0;
237
+ return this;
238
+ };
239
+ if (typeof Symbol !== "undefined" && typeof Symbol.for === "function") try {
240
+ BN.prototype[Symbol.for("nodejs.util.inspect.custom")] = inspect;
241
+ } catch (e) {
242
+ BN.prototype.inspect = inspect;
243
+ }
244
+ else BN.prototype.inspect = inspect;
245
+ function inspect() {
246
+ return (this.red ? "<BN-R: " : "<BN: ") + this.toString(16) + ">";
247
+ }
248
+ var zeros = [
249
+ "",
250
+ "0",
251
+ "00",
252
+ "000",
253
+ "0000",
254
+ "00000",
255
+ "000000",
256
+ "0000000",
257
+ "00000000",
258
+ "000000000",
259
+ "0000000000",
260
+ "00000000000",
261
+ "000000000000",
262
+ "0000000000000",
263
+ "00000000000000",
264
+ "000000000000000",
265
+ "0000000000000000",
266
+ "00000000000000000",
267
+ "000000000000000000",
268
+ "0000000000000000000",
269
+ "00000000000000000000",
270
+ "000000000000000000000",
271
+ "0000000000000000000000",
272
+ "00000000000000000000000",
273
+ "000000000000000000000000",
274
+ "0000000000000000000000000"
275
+ ];
276
+ var groupSizes = [
277
+ 0,
278
+ 0,
279
+ 25,
280
+ 16,
281
+ 12,
282
+ 11,
283
+ 10,
284
+ 9,
285
+ 8,
286
+ 8,
287
+ 7,
288
+ 7,
289
+ 7,
290
+ 7,
291
+ 6,
292
+ 6,
293
+ 6,
294
+ 6,
295
+ 6,
296
+ 6,
297
+ 6,
298
+ 5,
299
+ 5,
300
+ 5,
301
+ 5,
302
+ 5,
303
+ 5,
304
+ 5,
305
+ 5,
306
+ 5,
307
+ 5,
308
+ 5,
309
+ 5,
310
+ 5,
311
+ 5,
312
+ 5,
313
+ 5
314
+ ];
315
+ var groupBases = [
316
+ 0,
317
+ 0,
318
+ 33554432,
319
+ 43046721,
320
+ 16777216,
321
+ 48828125,
322
+ 60466176,
323
+ 40353607,
324
+ 16777216,
325
+ 43046721,
326
+ 1e7,
327
+ 19487171,
328
+ 35831808,
329
+ 62748517,
330
+ 7529536,
331
+ 11390625,
332
+ 16777216,
333
+ 24137569,
334
+ 34012224,
335
+ 47045881,
336
+ 64e6,
337
+ 4084101,
338
+ 5153632,
339
+ 6436343,
340
+ 7962624,
341
+ 9765625,
342
+ 11881376,
343
+ 14348907,
344
+ 17210368,
345
+ 20511149,
346
+ 243e5,
347
+ 28629151,
348
+ 33554432,
349
+ 39135393,
350
+ 45435424,
351
+ 52521875,
352
+ 60466176
353
+ ];
354
+ BN.prototype.toString = function toString(base, padding) {
355
+ base = base || 10;
356
+ padding = padding | 0 || 1;
357
+ var out;
358
+ if (base === 16 || base === "hex") {
359
+ out = "";
360
+ var off = 0;
361
+ var carry = 0;
362
+ for (var i = 0; i < this.length; i++) {
363
+ var w = this.words[i];
364
+ var word = ((w << off | carry) & 16777215).toString(16);
365
+ carry = w >>> 24 - off & 16777215;
366
+ off += 2;
367
+ if (off >= 26) {
368
+ off -= 26;
369
+ i--;
370
+ }
371
+ if (carry !== 0 || i !== this.length - 1) out = zeros[6 - word.length] + word + out;
372
+ else out = word + out;
373
+ }
374
+ if (carry !== 0) out = carry.toString(16) + out;
375
+ while (out.length % padding !== 0) out = "0" + out;
376
+ if (this.negative !== 0) out = "-" + out;
377
+ return out;
378
+ }
379
+ if (base === (base | 0) && base >= 2 && base <= 36) {
380
+ var groupSize = groupSizes[base];
381
+ var groupBase = groupBases[base];
382
+ out = "";
383
+ var c = this.clone();
384
+ c.negative = 0;
385
+ while (!c.isZero()) {
386
+ var r = c.modrn(groupBase).toString(base);
387
+ c = c.idivn(groupBase);
388
+ if (!c.isZero()) out = zeros[groupSize - r.length] + r + out;
389
+ else out = r + out;
390
+ }
391
+ if (this.isZero()) out = "0" + out;
392
+ while (out.length % padding !== 0) out = "0" + out;
393
+ if (this.negative !== 0) out = "-" + out;
394
+ return out;
395
+ }
396
+ assert(false, "Base should be between 2 and 36");
397
+ };
398
+ BN.prototype.toNumber = function toNumber() {
399
+ var ret = this.words[0];
400
+ if (this.length === 2) ret += this.words[1] * 67108864;
401
+ else if (this.length === 3 && this.words[2] === 1) ret += 4503599627370496 + this.words[1] * 67108864;
402
+ else if (this.length > 2) assert(false, "Number can only safely store up to 53 bits");
403
+ return this.negative !== 0 ? -ret : ret;
404
+ };
405
+ BN.prototype.toJSON = function toJSON() {
406
+ return this.toString(16, 2);
407
+ };
408
+ if (Buffer) BN.prototype.toBuffer = function toBuffer(endian, length) {
409
+ return this.toArrayLike(Buffer, endian, length);
410
+ };
411
+ BN.prototype.toArray = function toArray(endian, length) {
412
+ return this.toArrayLike(Array, endian, length);
413
+ };
414
+ var allocate = function allocate(ArrayType, size) {
415
+ if (ArrayType.allocUnsafe) return ArrayType.allocUnsafe(size);
416
+ return new ArrayType(size);
417
+ };
418
+ BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {
419
+ this._strip();
420
+ var byteLength = this.byteLength();
421
+ var reqLength = length || Math.max(1, byteLength);
422
+ assert(byteLength <= reqLength, "byte array longer than desired length");
423
+ assert(reqLength > 0, "Requested array length <= 0");
424
+ var res = allocate(ArrayType, reqLength);
425
+ this["_toArrayLike" + (endian === "le" ? "LE" : "BE")](res, byteLength);
426
+ return res;
427
+ };
428
+ BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {
429
+ var position = 0;
430
+ var carry = 0;
431
+ for (var i = 0, shift = 0; i < this.length; i++) {
432
+ var word = this.words[i] << shift | carry;
433
+ res[position++] = word & 255;
434
+ if (position < res.length) res[position++] = word >> 8 & 255;
435
+ if (position < res.length) res[position++] = word >> 16 & 255;
436
+ if (shift === 6) {
437
+ if (position < res.length) res[position++] = word >> 24 & 255;
438
+ carry = 0;
439
+ shift = 0;
440
+ } else {
441
+ carry = word >>> 24;
442
+ shift += 2;
443
+ }
444
+ }
445
+ if (position < res.length) {
446
+ res[position++] = carry;
447
+ while (position < res.length) res[position++] = 0;
448
+ }
449
+ };
450
+ BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {
451
+ var position = res.length - 1;
452
+ var carry = 0;
453
+ for (var i = 0, shift = 0; i < this.length; i++) {
454
+ var word = this.words[i] << shift | carry;
455
+ res[position--] = word & 255;
456
+ if (position >= 0) res[position--] = word >> 8 & 255;
457
+ if (position >= 0) res[position--] = word >> 16 & 255;
458
+ if (shift === 6) {
459
+ if (position >= 0) res[position--] = word >> 24 & 255;
460
+ carry = 0;
461
+ shift = 0;
462
+ } else {
463
+ carry = word >>> 24;
464
+ shift += 2;
465
+ }
466
+ }
467
+ if (position >= 0) {
468
+ res[position--] = carry;
469
+ while (position >= 0) res[position--] = 0;
470
+ }
471
+ };
472
+ if (Math.clz32) BN.prototype._countBits = function _countBits(w) {
473
+ return 32 - Math.clz32(w);
474
+ };
475
+ else BN.prototype._countBits = function _countBits(w) {
476
+ var t = w;
477
+ var r = 0;
478
+ if (t >= 4096) {
479
+ r += 13;
480
+ t >>>= 13;
481
+ }
482
+ if (t >= 64) {
483
+ r += 7;
484
+ t >>>= 7;
485
+ }
486
+ if (t >= 8) {
487
+ r += 4;
488
+ t >>>= 4;
489
+ }
490
+ if (t >= 2) {
491
+ r += 2;
492
+ t >>>= 2;
493
+ }
494
+ return r + t;
495
+ };
496
+ BN.prototype._zeroBits = function _zeroBits(w) {
497
+ if (w === 0) return 26;
498
+ var t = w;
499
+ var r = 0;
500
+ if ((t & 8191) === 0) {
501
+ r += 13;
502
+ t >>>= 13;
503
+ }
504
+ if ((t & 127) === 0) {
505
+ r += 7;
506
+ t >>>= 7;
507
+ }
508
+ if ((t & 15) === 0) {
509
+ r += 4;
510
+ t >>>= 4;
511
+ }
512
+ if ((t & 3) === 0) {
513
+ r += 2;
514
+ t >>>= 2;
515
+ }
516
+ if ((t & 1) === 0) r++;
517
+ return r;
518
+ };
519
+ BN.prototype.bitLength = function bitLength() {
520
+ var w = this.words[this.length - 1];
521
+ var hi = this._countBits(w);
522
+ return (this.length - 1) * 26 + hi;
523
+ };
524
+ function toBitArray(num) {
525
+ var w = new Array(num.bitLength());
526
+ for (var bit = 0; bit < w.length; bit++) {
527
+ var off = bit / 26 | 0;
528
+ var wbit = bit % 26;
529
+ w[bit] = num.words[off] >>> wbit & 1;
530
+ }
531
+ return w;
532
+ }
533
+ BN.prototype.zeroBits = function zeroBits() {
534
+ if (this.isZero()) return 0;
535
+ var r = 0;
536
+ for (var i = 0; i < this.length; i++) {
537
+ var b = this._zeroBits(this.words[i]);
538
+ r += b;
539
+ if (b !== 26) break;
540
+ }
541
+ return r;
542
+ };
543
+ BN.prototype.byteLength = function byteLength() {
544
+ return Math.ceil(this.bitLength() / 8);
545
+ };
546
+ BN.prototype.toTwos = function toTwos(width) {
547
+ if (this.negative !== 0) return this.abs().inotn(width).iaddn(1);
548
+ return this.clone();
549
+ };
550
+ BN.prototype.fromTwos = function fromTwos(width) {
551
+ if (this.testn(width - 1)) return this.notn(width).iaddn(1).ineg();
552
+ return this.clone();
553
+ };
554
+ BN.prototype.isNeg = function isNeg() {
555
+ return this.negative !== 0;
556
+ };
557
+ BN.prototype.neg = function neg() {
558
+ return this.clone().ineg();
559
+ };
560
+ BN.prototype.ineg = function ineg() {
561
+ if (!this.isZero()) this.negative ^= 1;
562
+ return this;
563
+ };
564
+ BN.prototype.iuor = function iuor(num) {
565
+ while (this.length < num.length) this.words[this.length++] = 0;
566
+ for (var i = 0; i < num.length; i++) this.words[i] = this.words[i] | num.words[i];
567
+ return this._strip();
568
+ };
569
+ BN.prototype.ior = function ior(num) {
570
+ assert((this.negative | num.negative) === 0);
571
+ return this.iuor(num);
572
+ };
573
+ BN.prototype.or = function or(num) {
574
+ if (this.length > num.length) return this.clone().ior(num);
575
+ return num.clone().ior(this);
576
+ };
577
+ BN.prototype.uor = function uor(num) {
578
+ if (this.length > num.length) return this.clone().iuor(num);
579
+ return num.clone().iuor(this);
580
+ };
581
+ BN.prototype.iuand = function iuand(num) {
582
+ var b;
583
+ if (this.length > num.length) b = num;
584
+ else b = this;
585
+ for (var i = 0; i < b.length; i++) this.words[i] = this.words[i] & num.words[i];
586
+ this.length = b.length;
587
+ return this._strip();
588
+ };
589
+ BN.prototype.iand = function iand(num) {
590
+ assert((this.negative | num.negative) === 0);
591
+ return this.iuand(num);
592
+ };
593
+ BN.prototype.and = function and(num) {
594
+ if (this.length > num.length) return this.clone().iand(num);
595
+ return num.clone().iand(this);
596
+ };
597
+ BN.prototype.uand = function uand(num) {
598
+ if (this.length > num.length) return this.clone().iuand(num);
599
+ return num.clone().iuand(this);
600
+ };
601
+ BN.prototype.iuxor = function iuxor(num) {
602
+ var a;
603
+ var b;
604
+ if (this.length > num.length) {
605
+ a = this;
606
+ b = num;
607
+ } else {
608
+ a = num;
609
+ b = this;
610
+ }
611
+ for (var i = 0; i < b.length; i++) this.words[i] = a.words[i] ^ b.words[i];
612
+ if (this !== a) for (; i < a.length; i++) this.words[i] = a.words[i];
613
+ this.length = a.length;
614
+ return this._strip();
615
+ };
616
+ BN.prototype.ixor = function ixor(num) {
617
+ assert((this.negative | num.negative) === 0);
618
+ return this.iuxor(num);
619
+ };
620
+ BN.prototype.xor = function xor(num) {
621
+ if (this.length > num.length) return this.clone().ixor(num);
622
+ return num.clone().ixor(this);
623
+ };
624
+ BN.prototype.uxor = function uxor(num) {
625
+ if (this.length > num.length) return this.clone().iuxor(num);
626
+ return num.clone().iuxor(this);
627
+ };
628
+ BN.prototype.inotn = function inotn(width) {
629
+ assert(typeof width === "number" && width >= 0);
630
+ var bytesNeeded = Math.ceil(width / 26) | 0;
631
+ var bitsLeft = width % 26;
632
+ this._expand(bytesNeeded);
633
+ if (bitsLeft > 0) bytesNeeded--;
634
+ for (var i = 0; i < bytesNeeded; i++) this.words[i] = ~this.words[i] & 67108863;
635
+ if (bitsLeft > 0) this.words[i] = ~this.words[i] & 67108863 >> 26 - bitsLeft;
636
+ return this._strip();
637
+ };
638
+ BN.prototype.notn = function notn(width) {
639
+ return this.clone().inotn(width);
640
+ };
641
+ BN.prototype.setn = function setn(bit, val) {
642
+ assert(typeof bit === "number" && bit >= 0);
643
+ var off = bit / 26 | 0;
644
+ var wbit = bit % 26;
645
+ this._expand(off + 1);
646
+ if (val) this.words[off] = this.words[off] | 1 << wbit;
647
+ else this.words[off] = this.words[off] & ~(1 << wbit);
648
+ return this._strip();
649
+ };
650
+ BN.prototype.iadd = function iadd(num) {
651
+ var r;
652
+ if (this.negative !== 0 && num.negative === 0) {
653
+ this.negative = 0;
654
+ r = this.isub(num);
655
+ this.negative ^= 1;
656
+ return this._normSign();
657
+ } else if (this.negative === 0 && num.negative !== 0) {
658
+ num.negative = 0;
659
+ r = this.isub(num);
660
+ num.negative = 1;
661
+ return r._normSign();
662
+ }
663
+ var a, b;
664
+ if (this.length > num.length) {
665
+ a = this;
666
+ b = num;
667
+ } else {
668
+ a = num;
669
+ b = this;
670
+ }
671
+ var carry = 0;
672
+ for (var i = 0; i < b.length; i++) {
673
+ r = (a.words[i] | 0) + (b.words[i] | 0) + carry;
674
+ this.words[i] = r & 67108863;
675
+ carry = r >>> 26;
676
+ }
677
+ for (; carry !== 0 && i < a.length; i++) {
678
+ r = (a.words[i] | 0) + carry;
679
+ this.words[i] = r & 67108863;
680
+ carry = r >>> 26;
681
+ }
682
+ this.length = a.length;
683
+ if (carry !== 0) {
684
+ this.words[this.length] = carry;
685
+ this.length++;
686
+ } else if (a !== this) for (; i < a.length; i++) this.words[i] = a.words[i];
687
+ return this;
688
+ };
689
+ BN.prototype.add = function add(num) {
690
+ var res;
691
+ if (num.negative !== 0 && this.negative === 0) {
692
+ num.negative = 0;
693
+ res = this.sub(num);
694
+ num.negative ^= 1;
695
+ return res;
696
+ } else if (num.negative === 0 && this.negative !== 0) {
697
+ this.negative = 0;
698
+ res = num.sub(this);
699
+ this.negative = 1;
700
+ return res;
701
+ }
702
+ if (this.length > num.length) return this.clone().iadd(num);
703
+ return num.clone().iadd(this);
704
+ };
705
+ BN.prototype.isub = function isub(num) {
706
+ if (num.negative !== 0) {
707
+ num.negative = 0;
708
+ var r = this.iadd(num);
709
+ num.negative = 1;
710
+ return r._normSign();
711
+ } else if (this.negative !== 0) {
712
+ this.negative = 0;
713
+ this.iadd(num);
714
+ this.negative = 1;
715
+ return this._normSign();
716
+ }
717
+ var cmp = this.cmp(num);
718
+ if (cmp === 0) {
719
+ this.negative = 0;
720
+ this.length = 1;
721
+ this.words[0] = 0;
722
+ return this;
723
+ }
724
+ var a, b;
725
+ if (cmp > 0) {
726
+ a = this;
727
+ b = num;
728
+ } else {
729
+ a = num;
730
+ b = this;
731
+ }
732
+ var carry = 0;
733
+ for (var i = 0; i < b.length; i++) {
734
+ r = (a.words[i] | 0) - (b.words[i] | 0) + carry;
735
+ carry = r >> 26;
736
+ this.words[i] = r & 67108863;
737
+ }
738
+ for (; carry !== 0 && i < a.length; i++) {
739
+ r = (a.words[i] | 0) + carry;
740
+ carry = r >> 26;
741
+ this.words[i] = r & 67108863;
742
+ }
743
+ if (carry === 0 && i < a.length && a !== this) for (; i < a.length; i++) this.words[i] = a.words[i];
744
+ this.length = Math.max(this.length, i);
745
+ if (a !== this) this.negative = 1;
746
+ return this._strip();
747
+ };
748
+ BN.prototype.sub = function sub(num) {
749
+ return this.clone().isub(num);
750
+ };
751
+ function smallMulTo(self, num, out) {
752
+ out.negative = num.negative ^ self.negative;
753
+ var len = self.length + num.length | 0;
754
+ out.length = len;
755
+ len = len - 1 | 0;
756
+ var a = self.words[0] | 0;
757
+ var b = num.words[0] | 0;
758
+ var r = a * b;
759
+ var lo = r & 67108863;
760
+ var carry = r / 67108864 | 0;
761
+ out.words[0] = lo;
762
+ for (var k = 1; k < len; k++) {
763
+ var ncarry = carry >>> 26;
764
+ var rword = carry & 67108863;
765
+ var maxJ = Math.min(k, num.length - 1);
766
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
767
+ var i = k - j | 0;
768
+ a = self.words[i] | 0;
769
+ b = num.words[j] | 0;
770
+ r = a * b + rword;
771
+ ncarry += r / 67108864 | 0;
772
+ rword = r & 67108863;
773
+ }
774
+ out.words[k] = rword | 0;
775
+ carry = ncarry | 0;
776
+ }
777
+ if (carry !== 0) out.words[k] = carry | 0;
778
+ else out.length--;
779
+ return out._strip();
780
+ }
781
+ var comb10MulTo = function comb10MulTo(self, num, out) {
782
+ var a = self.words;
783
+ var b = num.words;
784
+ var o = out.words;
785
+ var c = 0;
786
+ var lo;
787
+ var mid;
788
+ var hi;
789
+ var a0 = a[0] | 0;
790
+ var al0 = a0 & 8191;
791
+ var ah0 = a0 >>> 13;
792
+ var a1 = a[1] | 0;
793
+ var al1 = a1 & 8191;
794
+ var ah1 = a1 >>> 13;
795
+ var a2 = a[2] | 0;
796
+ var al2 = a2 & 8191;
797
+ var ah2 = a2 >>> 13;
798
+ var a3 = a[3] | 0;
799
+ var al3 = a3 & 8191;
800
+ var ah3 = a3 >>> 13;
801
+ var a4 = a[4] | 0;
802
+ var al4 = a4 & 8191;
803
+ var ah4 = a4 >>> 13;
804
+ var a5 = a[5] | 0;
805
+ var al5 = a5 & 8191;
806
+ var ah5 = a5 >>> 13;
807
+ var a6 = a[6] | 0;
808
+ var al6 = a6 & 8191;
809
+ var ah6 = a6 >>> 13;
810
+ var a7 = a[7] | 0;
811
+ var al7 = a7 & 8191;
812
+ var ah7 = a7 >>> 13;
813
+ var a8 = a[8] | 0;
814
+ var al8 = a8 & 8191;
815
+ var ah8 = a8 >>> 13;
816
+ var a9 = a[9] | 0;
817
+ var al9 = a9 & 8191;
818
+ var ah9 = a9 >>> 13;
819
+ var b0 = b[0] | 0;
820
+ var bl0 = b0 & 8191;
821
+ var bh0 = b0 >>> 13;
822
+ var b1 = b[1] | 0;
823
+ var bl1 = b1 & 8191;
824
+ var bh1 = b1 >>> 13;
825
+ var b2 = b[2] | 0;
826
+ var bl2 = b2 & 8191;
827
+ var bh2 = b2 >>> 13;
828
+ var b3 = b[3] | 0;
829
+ var bl3 = b3 & 8191;
830
+ var bh3 = b3 >>> 13;
831
+ var b4 = b[4] | 0;
832
+ var bl4 = b4 & 8191;
833
+ var bh4 = b4 >>> 13;
834
+ var b5 = b[5] | 0;
835
+ var bl5 = b5 & 8191;
836
+ var bh5 = b5 >>> 13;
837
+ var b6 = b[6] | 0;
838
+ var bl6 = b6 & 8191;
839
+ var bh6 = b6 >>> 13;
840
+ var b7 = b[7] | 0;
841
+ var bl7 = b7 & 8191;
842
+ var bh7 = b7 >>> 13;
843
+ var b8 = b[8] | 0;
844
+ var bl8 = b8 & 8191;
845
+ var bh8 = b8 >>> 13;
846
+ var b9 = b[9] | 0;
847
+ var bl9 = b9 & 8191;
848
+ var bh9 = b9 >>> 13;
849
+ out.negative = self.negative ^ num.negative;
850
+ out.length = 19;
851
+ lo = Math.imul(al0, bl0);
852
+ mid = Math.imul(al0, bh0);
853
+ mid = mid + Math.imul(ah0, bl0) | 0;
854
+ hi = Math.imul(ah0, bh0);
855
+ var w0 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
856
+ c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0;
857
+ w0 &= 67108863;
858
+ lo = Math.imul(al1, bl0);
859
+ mid = Math.imul(al1, bh0);
860
+ mid = mid + Math.imul(ah1, bl0) | 0;
861
+ hi = Math.imul(ah1, bh0);
862
+ lo = lo + Math.imul(al0, bl1) | 0;
863
+ mid = mid + Math.imul(al0, bh1) | 0;
864
+ mid = mid + Math.imul(ah0, bl1) | 0;
865
+ hi = hi + Math.imul(ah0, bh1) | 0;
866
+ var w1 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
867
+ c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0;
868
+ w1 &= 67108863;
869
+ lo = Math.imul(al2, bl0);
870
+ mid = Math.imul(al2, bh0);
871
+ mid = mid + Math.imul(ah2, bl0) | 0;
872
+ hi = Math.imul(ah2, bh0);
873
+ lo = lo + Math.imul(al1, bl1) | 0;
874
+ mid = mid + Math.imul(al1, bh1) | 0;
875
+ mid = mid + Math.imul(ah1, bl1) | 0;
876
+ hi = hi + Math.imul(ah1, bh1) | 0;
877
+ lo = lo + Math.imul(al0, bl2) | 0;
878
+ mid = mid + Math.imul(al0, bh2) | 0;
879
+ mid = mid + Math.imul(ah0, bl2) | 0;
880
+ hi = hi + Math.imul(ah0, bh2) | 0;
881
+ var w2 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
882
+ c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0;
883
+ w2 &= 67108863;
884
+ lo = Math.imul(al3, bl0);
885
+ mid = Math.imul(al3, bh0);
886
+ mid = mid + Math.imul(ah3, bl0) | 0;
887
+ hi = Math.imul(ah3, bh0);
888
+ lo = lo + Math.imul(al2, bl1) | 0;
889
+ mid = mid + Math.imul(al2, bh1) | 0;
890
+ mid = mid + Math.imul(ah2, bl1) | 0;
891
+ hi = hi + Math.imul(ah2, bh1) | 0;
892
+ lo = lo + Math.imul(al1, bl2) | 0;
893
+ mid = mid + Math.imul(al1, bh2) | 0;
894
+ mid = mid + Math.imul(ah1, bl2) | 0;
895
+ hi = hi + Math.imul(ah1, bh2) | 0;
896
+ lo = lo + Math.imul(al0, bl3) | 0;
897
+ mid = mid + Math.imul(al0, bh3) | 0;
898
+ mid = mid + Math.imul(ah0, bl3) | 0;
899
+ hi = hi + Math.imul(ah0, bh3) | 0;
900
+ var w3 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
901
+ c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0;
902
+ w3 &= 67108863;
903
+ lo = Math.imul(al4, bl0);
904
+ mid = Math.imul(al4, bh0);
905
+ mid = mid + Math.imul(ah4, bl0) | 0;
906
+ hi = Math.imul(ah4, bh0);
907
+ lo = lo + Math.imul(al3, bl1) | 0;
908
+ mid = mid + Math.imul(al3, bh1) | 0;
909
+ mid = mid + Math.imul(ah3, bl1) | 0;
910
+ hi = hi + Math.imul(ah3, bh1) | 0;
911
+ lo = lo + Math.imul(al2, bl2) | 0;
912
+ mid = mid + Math.imul(al2, bh2) | 0;
913
+ mid = mid + Math.imul(ah2, bl2) | 0;
914
+ hi = hi + Math.imul(ah2, bh2) | 0;
915
+ lo = lo + Math.imul(al1, bl3) | 0;
916
+ mid = mid + Math.imul(al1, bh3) | 0;
917
+ mid = mid + Math.imul(ah1, bl3) | 0;
918
+ hi = hi + Math.imul(ah1, bh3) | 0;
919
+ lo = lo + Math.imul(al0, bl4) | 0;
920
+ mid = mid + Math.imul(al0, bh4) | 0;
921
+ mid = mid + Math.imul(ah0, bl4) | 0;
922
+ hi = hi + Math.imul(ah0, bh4) | 0;
923
+ var w4 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
924
+ c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0;
925
+ w4 &= 67108863;
926
+ lo = Math.imul(al5, bl0);
927
+ mid = Math.imul(al5, bh0);
928
+ mid = mid + Math.imul(ah5, bl0) | 0;
929
+ hi = Math.imul(ah5, bh0);
930
+ lo = lo + Math.imul(al4, bl1) | 0;
931
+ mid = mid + Math.imul(al4, bh1) | 0;
932
+ mid = mid + Math.imul(ah4, bl1) | 0;
933
+ hi = hi + Math.imul(ah4, bh1) | 0;
934
+ lo = lo + Math.imul(al3, bl2) | 0;
935
+ mid = mid + Math.imul(al3, bh2) | 0;
936
+ mid = mid + Math.imul(ah3, bl2) | 0;
937
+ hi = hi + Math.imul(ah3, bh2) | 0;
938
+ lo = lo + Math.imul(al2, bl3) | 0;
939
+ mid = mid + Math.imul(al2, bh3) | 0;
940
+ mid = mid + Math.imul(ah2, bl3) | 0;
941
+ hi = hi + Math.imul(ah2, bh3) | 0;
942
+ lo = lo + Math.imul(al1, bl4) | 0;
943
+ mid = mid + Math.imul(al1, bh4) | 0;
944
+ mid = mid + Math.imul(ah1, bl4) | 0;
945
+ hi = hi + Math.imul(ah1, bh4) | 0;
946
+ lo = lo + Math.imul(al0, bl5) | 0;
947
+ mid = mid + Math.imul(al0, bh5) | 0;
948
+ mid = mid + Math.imul(ah0, bl5) | 0;
949
+ hi = hi + Math.imul(ah0, bh5) | 0;
950
+ var w5 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
951
+ c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0;
952
+ w5 &= 67108863;
953
+ lo = Math.imul(al6, bl0);
954
+ mid = Math.imul(al6, bh0);
955
+ mid = mid + Math.imul(ah6, bl0) | 0;
956
+ hi = Math.imul(ah6, bh0);
957
+ lo = lo + Math.imul(al5, bl1) | 0;
958
+ mid = mid + Math.imul(al5, bh1) | 0;
959
+ mid = mid + Math.imul(ah5, bl1) | 0;
960
+ hi = hi + Math.imul(ah5, bh1) | 0;
961
+ lo = lo + Math.imul(al4, bl2) | 0;
962
+ mid = mid + Math.imul(al4, bh2) | 0;
963
+ mid = mid + Math.imul(ah4, bl2) | 0;
964
+ hi = hi + Math.imul(ah4, bh2) | 0;
965
+ lo = lo + Math.imul(al3, bl3) | 0;
966
+ mid = mid + Math.imul(al3, bh3) | 0;
967
+ mid = mid + Math.imul(ah3, bl3) | 0;
968
+ hi = hi + Math.imul(ah3, bh3) | 0;
969
+ lo = lo + Math.imul(al2, bl4) | 0;
970
+ mid = mid + Math.imul(al2, bh4) | 0;
971
+ mid = mid + Math.imul(ah2, bl4) | 0;
972
+ hi = hi + Math.imul(ah2, bh4) | 0;
973
+ lo = lo + Math.imul(al1, bl5) | 0;
974
+ mid = mid + Math.imul(al1, bh5) | 0;
975
+ mid = mid + Math.imul(ah1, bl5) | 0;
976
+ hi = hi + Math.imul(ah1, bh5) | 0;
977
+ lo = lo + Math.imul(al0, bl6) | 0;
978
+ mid = mid + Math.imul(al0, bh6) | 0;
979
+ mid = mid + Math.imul(ah0, bl6) | 0;
980
+ hi = hi + Math.imul(ah0, bh6) | 0;
981
+ var w6 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
982
+ c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0;
983
+ w6 &= 67108863;
984
+ lo = Math.imul(al7, bl0);
985
+ mid = Math.imul(al7, bh0);
986
+ mid = mid + Math.imul(ah7, bl0) | 0;
987
+ hi = Math.imul(ah7, bh0);
988
+ lo = lo + Math.imul(al6, bl1) | 0;
989
+ mid = mid + Math.imul(al6, bh1) | 0;
990
+ mid = mid + Math.imul(ah6, bl1) | 0;
991
+ hi = hi + Math.imul(ah6, bh1) | 0;
992
+ lo = lo + Math.imul(al5, bl2) | 0;
993
+ mid = mid + Math.imul(al5, bh2) | 0;
994
+ mid = mid + Math.imul(ah5, bl2) | 0;
995
+ hi = hi + Math.imul(ah5, bh2) | 0;
996
+ lo = lo + Math.imul(al4, bl3) | 0;
997
+ mid = mid + Math.imul(al4, bh3) | 0;
998
+ mid = mid + Math.imul(ah4, bl3) | 0;
999
+ hi = hi + Math.imul(ah4, bh3) | 0;
1000
+ lo = lo + Math.imul(al3, bl4) | 0;
1001
+ mid = mid + Math.imul(al3, bh4) | 0;
1002
+ mid = mid + Math.imul(ah3, bl4) | 0;
1003
+ hi = hi + Math.imul(ah3, bh4) | 0;
1004
+ lo = lo + Math.imul(al2, bl5) | 0;
1005
+ mid = mid + Math.imul(al2, bh5) | 0;
1006
+ mid = mid + Math.imul(ah2, bl5) | 0;
1007
+ hi = hi + Math.imul(ah2, bh5) | 0;
1008
+ lo = lo + Math.imul(al1, bl6) | 0;
1009
+ mid = mid + Math.imul(al1, bh6) | 0;
1010
+ mid = mid + Math.imul(ah1, bl6) | 0;
1011
+ hi = hi + Math.imul(ah1, bh6) | 0;
1012
+ lo = lo + Math.imul(al0, bl7) | 0;
1013
+ mid = mid + Math.imul(al0, bh7) | 0;
1014
+ mid = mid + Math.imul(ah0, bl7) | 0;
1015
+ hi = hi + Math.imul(ah0, bh7) | 0;
1016
+ var w7 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1017
+ c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0;
1018
+ w7 &= 67108863;
1019
+ lo = Math.imul(al8, bl0);
1020
+ mid = Math.imul(al8, bh0);
1021
+ mid = mid + Math.imul(ah8, bl0) | 0;
1022
+ hi = Math.imul(ah8, bh0);
1023
+ lo = lo + Math.imul(al7, bl1) | 0;
1024
+ mid = mid + Math.imul(al7, bh1) | 0;
1025
+ mid = mid + Math.imul(ah7, bl1) | 0;
1026
+ hi = hi + Math.imul(ah7, bh1) | 0;
1027
+ lo = lo + Math.imul(al6, bl2) | 0;
1028
+ mid = mid + Math.imul(al6, bh2) | 0;
1029
+ mid = mid + Math.imul(ah6, bl2) | 0;
1030
+ hi = hi + Math.imul(ah6, bh2) | 0;
1031
+ lo = lo + Math.imul(al5, bl3) | 0;
1032
+ mid = mid + Math.imul(al5, bh3) | 0;
1033
+ mid = mid + Math.imul(ah5, bl3) | 0;
1034
+ hi = hi + Math.imul(ah5, bh3) | 0;
1035
+ lo = lo + Math.imul(al4, bl4) | 0;
1036
+ mid = mid + Math.imul(al4, bh4) | 0;
1037
+ mid = mid + Math.imul(ah4, bl4) | 0;
1038
+ hi = hi + Math.imul(ah4, bh4) | 0;
1039
+ lo = lo + Math.imul(al3, bl5) | 0;
1040
+ mid = mid + Math.imul(al3, bh5) | 0;
1041
+ mid = mid + Math.imul(ah3, bl5) | 0;
1042
+ hi = hi + Math.imul(ah3, bh5) | 0;
1043
+ lo = lo + Math.imul(al2, bl6) | 0;
1044
+ mid = mid + Math.imul(al2, bh6) | 0;
1045
+ mid = mid + Math.imul(ah2, bl6) | 0;
1046
+ hi = hi + Math.imul(ah2, bh6) | 0;
1047
+ lo = lo + Math.imul(al1, bl7) | 0;
1048
+ mid = mid + Math.imul(al1, bh7) | 0;
1049
+ mid = mid + Math.imul(ah1, bl7) | 0;
1050
+ hi = hi + Math.imul(ah1, bh7) | 0;
1051
+ lo = lo + Math.imul(al0, bl8) | 0;
1052
+ mid = mid + Math.imul(al0, bh8) | 0;
1053
+ mid = mid + Math.imul(ah0, bl8) | 0;
1054
+ hi = hi + Math.imul(ah0, bh8) | 0;
1055
+ var w8 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1056
+ c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0;
1057
+ w8 &= 67108863;
1058
+ lo = Math.imul(al9, bl0);
1059
+ mid = Math.imul(al9, bh0);
1060
+ mid = mid + Math.imul(ah9, bl0) | 0;
1061
+ hi = Math.imul(ah9, bh0);
1062
+ lo = lo + Math.imul(al8, bl1) | 0;
1063
+ mid = mid + Math.imul(al8, bh1) | 0;
1064
+ mid = mid + Math.imul(ah8, bl1) | 0;
1065
+ hi = hi + Math.imul(ah8, bh1) | 0;
1066
+ lo = lo + Math.imul(al7, bl2) | 0;
1067
+ mid = mid + Math.imul(al7, bh2) | 0;
1068
+ mid = mid + Math.imul(ah7, bl2) | 0;
1069
+ hi = hi + Math.imul(ah7, bh2) | 0;
1070
+ lo = lo + Math.imul(al6, bl3) | 0;
1071
+ mid = mid + Math.imul(al6, bh3) | 0;
1072
+ mid = mid + Math.imul(ah6, bl3) | 0;
1073
+ hi = hi + Math.imul(ah6, bh3) | 0;
1074
+ lo = lo + Math.imul(al5, bl4) | 0;
1075
+ mid = mid + Math.imul(al5, bh4) | 0;
1076
+ mid = mid + Math.imul(ah5, bl4) | 0;
1077
+ hi = hi + Math.imul(ah5, bh4) | 0;
1078
+ lo = lo + Math.imul(al4, bl5) | 0;
1079
+ mid = mid + Math.imul(al4, bh5) | 0;
1080
+ mid = mid + Math.imul(ah4, bl5) | 0;
1081
+ hi = hi + Math.imul(ah4, bh5) | 0;
1082
+ lo = lo + Math.imul(al3, bl6) | 0;
1083
+ mid = mid + Math.imul(al3, bh6) | 0;
1084
+ mid = mid + Math.imul(ah3, bl6) | 0;
1085
+ hi = hi + Math.imul(ah3, bh6) | 0;
1086
+ lo = lo + Math.imul(al2, bl7) | 0;
1087
+ mid = mid + Math.imul(al2, bh7) | 0;
1088
+ mid = mid + Math.imul(ah2, bl7) | 0;
1089
+ hi = hi + Math.imul(ah2, bh7) | 0;
1090
+ lo = lo + Math.imul(al1, bl8) | 0;
1091
+ mid = mid + Math.imul(al1, bh8) | 0;
1092
+ mid = mid + Math.imul(ah1, bl8) | 0;
1093
+ hi = hi + Math.imul(ah1, bh8) | 0;
1094
+ lo = lo + Math.imul(al0, bl9) | 0;
1095
+ mid = mid + Math.imul(al0, bh9) | 0;
1096
+ mid = mid + Math.imul(ah0, bl9) | 0;
1097
+ hi = hi + Math.imul(ah0, bh9) | 0;
1098
+ var w9 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1099
+ c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0;
1100
+ w9 &= 67108863;
1101
+ lo = Math.imul(al9, bl1);
1102
+ mid = Math.imul(al9, bh1);
1103
+ mid = mid + Math.imul(ah9, bl1) | 0;
1104
+ hi = Math.imul(ah9, bh1);
1105
+ lo = lo + Math.imul(al8, bl2) | 0;
1106
+ mid = mid + Math.imul(al8, bh2) | 0;
1107
+ mid = mid + Math.imul(ah8, bl2) | 0;
1108
+ hi = hi + Math.imul(ah8, bh2) | 0;
1109
+ lo = lo + Math.imul(al7, bl3) | 0;
1110
+ mid = mid + Math.imul(al7, bh3) | 0;
1111
+ mid = mid + Math.imul(ah7, bl3) | 0;
1112
+ hi = hi + Math.imul(ah7, bh3) | 0;
1113
+ lo = lo + Math.imul(al6, bl4) | 0;
1114
+ mid = mid + Math.imul(al6, bh4) | 0;
1115
+ mid = mid + Math.imul(ah6, bl4) | 0;
1116
+ hi = hi + Math.imul(ah6, bh4) | 0;
1117
+ lo = lo + Math.imul(al5, bl5) | 0;
1118
+ mid = mid + Math.imul(al5, bh5) | 0;
1119
+ mid = mid + Math.imul(ah5, bl5) | 0;
1120
+ hi = hi + Math.imul(ah5, bh5) | 0;
1121
+ lo = lo + Math.imul(al4, bl6) | 0;
1122
+ mid = mid + Math.imul(al4, bh6) | 0;
1123
+ mid = mid + Math.imul(ah4, bl6) | 0;
1124
+ hi = hi + Math.imul(ah4, bh6) | 0;
1125
+ lo = lo + Math.imul(al3, bl7) | 0;
1126
+ mid = mid + Math.imul(al3, bh7) | 0;
1127
+ mid = mid + Math.imul(ah3, bl7) | 0;
1128
+ hi = hi + Math.imul(ah3, bh7) | 0;
1129
+ lo = lo + Math.imul(al2, bl8) | 0;
1130
+ mid = mid + Math.imul(al2, bh8) | 0;
1131
+ mid = mid + Math.imul(ah2, bl8) | 0;
1132
+ hi = hi + Math.imul(ah2, bh8) | 0;
1133
+ lo = lo + Math.imul(al1, bl9) | 0;
1134
+ mid = mid + Math.imul(al1, bh9) | 0;
1135
+ mid = mid + Math.imul(ah1, bl9) | 0;
1136
+ hi = hi + Math.imul(ah1, bh9) | 0;
1137
+ var w10 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1138
+ c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0;
1139
+ w10 &= 67108863;
1140
+ lo = Math.imul(al9, bl2);
1141
+ mid = Math.imul(al9, bh2);
1142
+ mid = mid + Math.imul(ah9, bl2) | 0;
1143
+ hi = Math.imul(ah9, bh2);
1144
+ lo = lo + Math.imul(al8, bl3) | 0;
1145
+ mid = mid + Math.imul(al8, bh3) | 0;
1146
+ mid = mid + Math.imul(ah8, bl3) | 0;
1147
+ hi = hi + Math.imul(ah8, bh3) | 0;
1148
+ lo = lo + Math.imul(al7, bl4) | 0;
1149
+ mid = mid + Math.imul(al7, bh4) | 0;
1150
+ mid = mid + Math.imul(ah7, bl4) | 0;
1151
+ hi = hi + Math.imul(ah7, bh4) | 0;
1152
+ lo = lo + Math.imul(al6, bl5) | 0;
1153
+ mid = mid + Math.imul(al6, bh5) | 0;
1154
+ mid = mid + Math.imul(ah6, bl5) | 0;
1155
+ hi = hi + Math.imul(ah6, bh5) | 0;
1156
+ lo = lo + Math.imul(al5, bl6) | 0;
1157
+ mid = mid + Math.imul(al5, bh6) | 0;
1158
+ mid = mid + Math.imul(ah5, bl6) | 0;
1159
+ hi = hi + Math.imul(ah5, bh6) | 0;
1160
+ lo = lo + Math.imul(al4, bl7) | 0;
1161
+ mid = mid + Math.imul(al4, bh7) | 0;
1162
+ mid = mid + Math.imul(ah4, bl7) | 0;
1163
+ hi = hi + Math.imul(ah4, bh7) | 0;
1164
+ lo = lo + Math.imul(al3, bl8) | 0;
1165
+ mid = mid + Math.imul(al3, bh8) | 0;
1166
+ mid = mid + Math.imul(ah3, bl8) | 0;
1167
+ hi = hi + Math.imul(ah3, bh8) | 0;
1168
+ lo = lo + Math.imul(al2, bl9) | 0;
1169
+ mid = mid + Math.imul(al2, bh9) | 0;
1170
+ mid = mid + Math.imul(ah2, bl9) | 0;
1171
+ hi = hi + Math.imul(ah2, bh9) | 0;
1172
+ var w11 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1173
+ c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0;
1174
+ w11 &= 67108863;
1175
+ lo = Math.imul(al9, bl3);
1176
+ mid = Math.imul(al9, bh3);
1177
+ mid = mid + Math.imul(ah9, bl3) | 0;
1178
+ hi = Math.imul(ah9, bh3);
1179
+ lo = lo + Math.imul(al8, bl4) | 0;
1180
+ mid = mid + Math.imul(al8, bh4) | 0;
1181
+ mid = mid + Math.imul(ah8, bl4) | 0;
1182
+ hi = hi + Math.imul(ah8, bh4) | 0;
1183
+ lo = lo + Math.imul(al7, bl5) | 0;
1184
+ mid = mid + Math.imul(al7, bh5) | 0;
1185
+ mid = mid + Math.imul(ah7, bl5) | 0;
1186
+ hi = hi + Math.imul(ah7, bh5) | 0;
1187
+ lo = lo + Math.imul(al6, bl6) | 0;
1188
+ mid = mid + Math.imul(al6, bh6) | 0;
1189
+ mid = mid + Math.imul(ah6, bl6) | 0;
1190
+ hi = hi + Math.imul(ah6, bh6) | 0;
1191
+ lo = lo + Math.imul(al5, bl7) | 0;
1192
+ mid = mid + Math.imul(al5, bh7) | 0;
1193
+ mid = mid + Math.imul(ah5, bl7) | 0;
1194
+ hi = hi + Math.imul(ah5, bh7) | 0;
1195
+ lo = lo + Math.imul(al4, bl8) | 0;
1196
+ mid = mid + Math.imul(al4, bh8) | 0;
1197
+ mid = mid + Math.imul(ah4, bl8) | 0;
1198
+ hi = hi + Math.imul(ah4, bh8) | 0;
1199
+ lo = lo + Math.imul(al3, bl9) | 0;
1200
+ mid = mid + Math.imul(al3, bh9) | 0;
1201
+ mid = mid + Math.imul(ah3, bl9) | 0;
1202
+ hi = hi + Math.imul(ah3, bh9) | 0;
1203
+ var w12 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1204
+ c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0;
1205
+ w12 &= 67108863;
1206
+ lo = Math.imul(al9, bl4);
1207
+ mid = Math.imul(al9, bh4);
1208
+ mid = mid + Math.imul(ah9, bl4) | 0;
1209
+ hi = Math.imul(ah9, bh4);
1210
+ lo = lo + Math.imul(al8, bl5) | 0;
1211
+ mid = mid + Math.imul(al8, bh5) | 0;
1212
+ mid = mid + Math.imul(ah8, bl5) | 0;
1213
+ hi = hi + Math.imul(ah8, bh5) | 0;
1214
+ lo = lo + Math.imul(al7, bl6) | 0;
1215
+ mid = mid + Math.imul(al7, bh6) | 0;
1216
+ mid = mid + Math.imul(ah7, bl6) | 0;
1217
+ hi = hi + Math.imul(ah7, bh6) | 0;
1218
+ lo = lo + Math.imul(al6, bl7) | 0;
1219
+ mid = mid + Math.imul(al6, bh7) | 0;
1220
+ mid = mid + Math.imul(ah6, bl7) | 0;
1221
+ hi = hi + Math.imul(ah6, bh7) | 0;
1222
+ lo = lo + Math.imul(al5, bl8) | 0;
1223
+ mid = mid + Math.imul(al5, bh8) | 0;
1224
+ mid = mid + Math.imul(ah5, bl8) | 0;
1225
+ hi = hi + Math.imul(ah5, bh8) | 0;
1226
+ lo = lo + Math.imul(al4, bl9) | 0;
1227
+ mid = mid + Math.imul(al4, bh9) | 0;
1228
+ mid = mid + Math.imul(ah4, bl9) | 0;
1229
+ hi = hi + Math.imul(ah4, bh9) | 0;
1230
+ var w13 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1231
+ c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0;
1232
+ w13 &= 67108863;
1233
+ lo = Math.imul(al9, bl5);
1234
+ mid = Math.imul(al9, bh5);
1235
+ mid = mid + Math.imul(ah9, bl5) | 0;
1236
+ hi = Math.imul(ah9, bh5);
1237
+ lo = lo + Math.imul(al8, bl6) | 0;
1238
+ mid = mid + Math.imul(al8, bh6) | 0;
1239
+ mid = mid + Math.imul(ah8, bl6) | 0;
1240
+ hi = hi + Math.imul(ah8, bh6) | 0;
1241
+ lo = lo + Math.imul(al7, bl7) | 0;
1242
+ mid = mid + Math.imul(al7, bh7) | 0;
1243
+ mid = mid + Math.imul(ah7, bl7) | 0;
1244
+ hi = hi + Math.imul(ah7, bh7) | 0;
1245
+ lo = lo + Math.imul(al6, bl8) | 0;
1246
+ mid = mid + Math.imul(al6, bh8) | 0;
1247
+ mid = mid + Math.imul(ah6, bl8) | 0;
1248
+ hi = hi + Math.imul(ah6, bh8) | 0;
1249
+ lo = lo + Math.imul(al5, bl9) | 0;
1250
+ mid = mid + Math.imul(al5, bh9) | 0;
1251
+ mid = mid + Math.imul(ah5, bl9) | 0;
1252
+ hi = hi + Math.imul(ah5, bh9) | 0;
1253
+ var w14 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1254
+ c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0;
1255
+ w14 &= 67108863;
1256
+ lo = Math.imul(al9, bl6);
1257
+ mid = Math.imul(al9, bh6);
1258
+ mid = mid + Math.imul(ah9, bl6) | 0;
1259
+ hi = Math.imul(ah9, bh6);
1260
+ lo = lo + Math.imul(al8, bl7) | 0;
1261
+ mid = mid + Math.imul(al8, bh7) | 0;
1262
+ mid = mid + Math.imul(ah8, bl7) | 0;
1263
+ hi = hi + Math.imul(ah8, bh7) | 0;
1264
+ lo = lo + Math.imul(al7, bl8) | 0;
1265
+ mid = mid + Math.imul(al7, bh8) | 0;
1266
+ mid = mid + Math.imul(ah7, bl8) | 0;
1267
+ hi = hi + Math.imul(ah7, bh8) | 0;
1268
+ lo = lo + Math.imul(al6, bl9) | 0;
1269
+ mid = mid + Math.imul(al6, bh9) | 0;
1270
+ mid = mid + Math.imul(ah6, bl9) | 0;
1271
+ hi = hi + Math.imul(ah6, bh9) | 0;
1272
+ var w15 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1273
+ c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0;
1274
+ w15 &= 67108863;
1275
+ lo = Math.imul(al9, bl7);
1276
+ mid = Math.imul(al9, bh7);
1277
+ mid = mid + Math.imul(ah9, bl7) | 0;
1278
+ hi = Math.imul(ah9, bh7);
1279
+ lo = lo + Math.imul(al8, bl8) | 0;
1280
+ mid = mid + Math.imul(al8, bh8) | 0;
1281
+ mid = mid + Math.imul(ah8, bl8) | 0;
1282
+ hi = hi + Math.imul(ah8, bh8) | 0;
1283
+ lo = lo + Math.imul(al7, bl9) | 0;
1284
+ mid = mid + Math.imul(al7, bh9) | 0;
1285
+ mid = mid + Math.imul(ah7, bl9) | 0;
1286
+ hi = hi + Math.imul(ah7, bh9) | 0;
1287
+ var w16 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1288
+ c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0;
1289
+ w16 &= 67108863;
1290
+ lo = Math.imul(al9, bl8);
1291
+ mid = Math.imul(al9, bh8);
1292
+ mid = mid + Math.imul(ah9, bl8) | 0;
1293
+ hi = Math.imul(ah9, bh8);
1294
+ lo = lo + Math.imul(al8, bl9) | 0;
1295
+ mid = mid + Math.imul(al8, bh9) | 0;
1296
+ mid = mid + Math.imul(ah8, bl9) | 0;
1297
+ hi = hi + Math.imul(ah8, bh9) | 0;
1298
+ var w17 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1299
+ c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0;
1300
+ w17 &= 67108863;
1301
+ lo = Math.imul(al9, bl9);
1302
+ mid = Math.imul(al9, bh9);
1303
+ mid = mid + Math.imul(ah9, bl9) | 0;
1304
+ hi = Math.imul(ah9, bh9);
1305
+ var w18 = (c + lo | 0) + ((mid & 8191) << 13) | 0;
1306
+ c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0;
1307
+ w18 &= 67108863;
1308
+ o[0] = w0;
1309
+ o[1] = w1;
1310
+ o[2] = w2;
1311
+ o[3] = w3;
1312
+ o[4] = w4;
1313
+ o[5] = w5;
1314
+ o[6] = w6;
1315
+ o[7] = w7;
1316
+ o[8] = w8;
1317
+ o[9] = w9;
1318
+ o[10] = w10;
1319
+ o[11] = w11;
1320
+ o[12] = w12;
1321
+ o[13] = w13;
1322
+ o[14] = w14;
1323
+ o[15] = w15;
1324
+ o[16] = w16;
1325
+ o[17] = w17;
1326
+ o[18] = w18;
1327
+ if (c !== 0) {
1328
+ o[19] = c;
1329
+ out.length++;
1330
+ }
1331
+ return out;
1332
+ };
1333
+ if (!Math.imul) comb10MulTo = smallMulTo;
1334
+ function bigMulTo(self, num, out) {
1335
+ out.negative = num.negative ^ self.negative;
1336
+ out.length = self.length + num.length;
1337
+ var carry = 0;
1338
+ var hncarry = 0;
1339
+ for (var k = 0; k < out.length - 1; k++) {
1340
+ var ncarry = hncarry;
1341
+ hncarry = 0;
1342
+ var rword = carry & 67108863;
1343
+ var maxJ = Math.min(k, num.length - 1);
1344
+ for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {
1345
+ var i = k - j;
1346
+ var r = (self.words[i] | 0) * (num.words[j] | 0);
1347
+ var lo = r & 67108863;
1348
+ ncarry = ncarry + (r / 67108864 | 0) | 0;
1349
+ lo = lo + rword | 0;
1350
+ rword = lo & 67108863;
1351
+ ncarry = ncarry + (lo >>> 26) | 0;
1352
+ hncarry += ncarry >>> 26;
1353
+ ncarry &= 67108863;
1354
+ }
1355
+ out.words[k] = rword;
1356
+ carry = ncarry;
1357
+ ncarry = hncarry;
1358
+ }
1359
+ if (carry !== 0) out.words[k] = carry;
1360
+ else out.length--;
1361
+ return out._strip();
1362
+ }
1363
+ function jumboMulTo(self, num, out) {
1364
+ return bigMulTo(self, num, out);
1365
+ }
1366
+ BN.prototype.mulTo = function mulTo(num, out) {
1367
+ var res;
1368
+ var len = this.length + num.length;
1369
+ if (this.length === 10 && num.length === 10) res = comb10MulTo(this, num, out);
1370
+ else if (len < 63) res = smallMulTo(this, num, out);
1371
+ else if (len < 1024) res = bigMulTo(this, num, out);
1372
+ else res = jumboMulTo(this, num, out);
1373
+ return res;
1374
+ };
1375
+ function FFTM(x, y) {
1376
+ this.x = x;
1377
+ this.y = y;
1378
+ }
1379
+ FFTM.prototype.makeRBT = function makeRBT(N) {
1380
+ var t = new Array(N);
1381
+ var l = BN.prototype._countBits(N) - 1;
1382
+ for (var i = 0; i < N; i++) t[i] = this.revBin(i, l, N);
1383
+ return t;
1384
+ };
1385
+ FFTM.prototype.revBin = function revBin(x, l, N) {
1386
+ if (x === 0 || x === N - 1) return x;
1387
+ var rb = 0;
1388
+ for (var i = 0; i < l; i++) {
1389
+ rb |= (x & 1) << l - i - 1;
1390
+ x >>= 1;
1391
+ }
1392
+ return rb;
1393
+ };
1394
+ FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {
1395
+ for (var i = 0; i < N; i++) {
1396
+ rtws[i] = rws[rbt[i]];
1397
+ itws[i] = iws[rbt[i]];
1398
+ }
1399
+ };
1400
+ FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {
1401
+ this.permute(rbt, rws, iws, rtws, itws, N);
1402
+ for (var s = 1; s < N; s <<= 1) {
1403
+ var l = s << 1;
1404
+ var rtwdf = Math.cos(2 * Math.PI / l);
1405
+ var itwdf = Math.sin(2 * Math.PI / l);
1406
+ for (var p = 0; p < N; p += l) {
1407
+ var rtwdf_ = rtwdf;
1408
+ var itwdf_ = itwdf;
1409
+ for (var j = 0; j < s; j++) {
1410
+ var re = rtws[p + j];
1411
+ var ie = itws[p + j];
1412
+ var ro = rtws[p + j + s];
1413
+ var io = itws[p + j + s];
1414
+ var rx = rtwdf_ * ro - itwdf_ * io;
1415
+ io = rtwdf_ * io + itwdf_ * ro;
1416
+ ro = rx;
1417
+ rtws[p + j] = re + ro;
1418
+ itws[p + j] = ie + io;
1419
+ rtws[p + j + s] = re - ro;
1420
+ itws[p + j + s] = ie - io;
1421
+ if (j !== l) {
1422
+ rx = rtwdf * rtwdf_ - itwdf * itwdf_;
1423
+ itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;
1424
+ rtwdf_ = rx;
1425
+ }
1426
+ }
1427
+ }
1428
+ }
1429
+ };
1430
+ FFTM.prototype.guessLen13b = function guessLen13b(n, m) {
1431
+ var N = Math.max(m, n) | 1;
1432
+ var odd = N & 1;
1433
+ var i = 0;
1434
+ for (N = N / 2 | 0; N; N = N >>> 1) i++;
1435
+ return 1 << i + 1 + odd;
1436
+ };
1437
+ FFTM.prototype.conjugate = function conjugate(rws, iws, N) {
1438
+ if (N <= 1) return;
1439
+ for (var i = 0; i < N / 2; i++) {
1440
+ var t = rws[i];
1441
+ rws[i] = rws[N - i - 1];
1442
+ rws[N - i - 1] = t;
1443
+ t = iws[i];
1444
+ iws[i] = -iws[N - i - 1];
1445
+ iws[N - i - 1] = -t;
1446
+ }
1447
+ };
1448
+ FFTM.prototype.normalize13b = function normalize13b(ws, N) {
1449
+ var carry = 0;
1450
+ for (var i = 0; i < N / 2; i++) {
1451
+ var w = Math.round(ws[2 * i + 1] / N) * 8192 + Math.round(ws[2 * i] / N) + carry;
1452
+ ws[i] = w & 67108863;
1453
+ if (w < 67108864) carry = 0;
1454
+ else carry = w / 67108864 | 0;
1455
+ }
1456
+ return ws;
1457
+ };
1458
+ FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {
1459
+ var carry = 0;
1460
+ for (var i = 0; i < len; i++) {
1461
+ carry = carry + (ws[i] | 0);
1462
+ rws[2 * i] = carry & 8191;
1463
+ carry = carry >>> 13;
1464
+ rws[2 * i + 1] = carry & 8191;
1465
+ carry = carry >>> 13;
1466
+ }
1467
+ for (i = 2 * len; i < N; ++i) rws[i] = 0;
1468
+ assert(carry === 0);
1469
+ assert((carry & -8192) === 0);
1470
+ };
1471
+ FFTM.prototype.stub = function stub(N) {
1472
+ var ph = new Array(N);
1473
+ for (var i = 0; i < N; i++) ph[i] = 0;
1474
+ return ph;
1475
+ };
1476
+ FFTM.prototype.mulp = function mulp(x, y, out) {
1477
+ var N = 2 * this.guessLen13b(x.length, y.length);
1478
+ var rbt = this.makeRBT(N);
1479
+ var _ = this.stub(N);
1480
+ var rws = new Array(N);
1481
+ var rwst = new Array(N);
1482
+ var iwst = new Array(N);
1483
+ var nrws = new Array(N);
1484
+ var nrwst = new Array(N);
1485
+ var niwst = new Array(N);
1486
+ var rmws = out.words;
1487
+ rmws.length = N;
1488
+ this.convert13b(x.words, x.length, rws, N);
1489
+ this.convert13b(y.words, y.length, nrws, N);
1490
+ this.transform(rws, _, rwst, iwst, N, rbt);
1491
+ this.transform(nrws, _, nrwst, niwst, N, rbt);
1492
+ for (var i = 0; i < N; i++) {
1493
+ var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];
1494
+ iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];
1495
+ rwst[i] = rx;
1496
+ }
1497
+ this.conjugate(rwst, iwst, N);
1498
+ this.transform(rwst, iwst, rmws, _, N, rbt);
1499
+ this.conjugate(rmws, _, N);
1500
+ this.normalize13b(rmws, N);
1501
+ out.negative = x.negative ^ y.negative;
1502
+ out.length = x.length + y.length;
1503
+ return out._strip();
1504
+ };
1505
+ BN.prototype.mul = function mul(num) {
1506
+ var out = new BN(null);
1507
+ out.words = new Array(this.length + num.length);
1508
+ return this.mulTo(num, out);
1509
+ };
1510
+ BN.prototype.mulf = function mulf(num) {
1511
+ var out = new BN(null);
1512
+ out.words = new Array(this.length + num.length);
1513
+ return jumboMulTo(this, num, out);
1514
+ };
1515
+ BN.prototype.imul = function imul(num) {
1516
+ return this.clone().mulTo(num, this);
1517
+ };
1518
+ BN.prototype.imuln = function imuln(num) {
1519
+ var isNegNum = num < 0;
1520
+ if (isNegNum) num = -num;
1521
+ assert(typeof num === "number");
1522
+ assert(num < 67108864);
1523
+ var carry = 0;
1524
+ for (var i = 0; i < this.length; i++) {
1525
+ var w = (this.words[i] | 0) * num;
1526
+ var lo = (w & 67108863) + (carry & 67108863);
1527
+ carry >>= 26;
1528
+ carry += w / 67108864 | 0;
1529
+ carry += lo >>> 26;
1530
+ this.words[i] = lo & 67108863;
1531
+ }
1532
+ if (carry !== 0) {
1533
+ this.words[i] = carry;
1534
+ this.length++;
1535
+ }
1536
+ this.length = num === 0 ? 1 : this.length;
1537
+ return isNegNum ? this.ineg() : this;
1538
+ };
1539
+ BN.prototype.muln = function muln(num) {
1540
+ return this.clone().imuln(num);
1541
+ };
1542
+ BN.prototype.sqr = function sqr() {
1543
+ return this.mul(this);
1544
+ };
1545
+ BN.prototype.isqr = function isqr() {
1546
+ return this.imul(this.clone());
1547
+ };
1548
+ BN.prototype.pow = function pow(num) {
1549
+ var w = toBitArray(num);
1550
+ if (w.length === 0) return new BN(1);
1551
+ var res = this;
1552
+ for (var i = 0; i < w.length; i++, res = res.sqr()) if (w[i] !== 0) break;
1553
+ if (++i < w.length) for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {
1554
+ if (w[i] === 0) continue;
1555
+ res = res.mul(q);
1556
+ }
1557
+ return res;
1558
+ };
1559
+ BN.prototype.iushln = function iushln(bits) {
1560
+ assert(typeof bits === "number" && bits >= 0);
1561
+ var r = bits % 26;
1562
+ var s = (bits - r) / 26;
1563
+ var carryMask = 67108863 >>> 26 - r << 26 - r;
1564
+ var i;
1565
+ if (r !== 0) {
1566
+ var carry = 0;
1567
+ for (i = 0; i < this.length; i++) {
1568
+ var newCarry = this.words[i] & carryMask;
1569
+ var c = (this.words[i] | 0) - newCarry << r;
1570
+ this.words[i] = c | carry;
1571
+ carry = newCarry >>> 26 - r;
1572
+ }
1573
+ if (carry) {
1574
+ this.words[i] = carry;
1575
+ this.length++;
1576
+ }
1577
+ }
1578
+ if (s !== 0) {
1579
+ for (i = this.length - 1; i >= 0; i--) this.words[i + s] = this.words[i];
1580
+ for (i = 0; i < s; i++) this.words[i] = 0;
1581
+ this.length += s;
1582
+ }
1583
+ return this._strip();
1584
+ };
1585
+ BN.prototype.ishln = function ishln(bits) {
1586
+ assert(this.negative === 0);
1587
+ return this.iushln(bits);
1588
+ };
1589
+ BN.prototype.iushrn = function iushrn(bits, hint, extended) {
1590
+ assert(typeof bits === "number" && bits >= 0);
1591
+ var h;
1592
+ if (hint) h = (hint - hint % 26) / 26;
1593
+ else h = 0;
1594
+ var r = bits % 26;
1595
+ var s = Math.min((bits - r) / 26, this.length);
1596
+ var mask = 67108863 ^ 67108863 >>> r << r;
1597
+ var maskedWords = extended;
1598
+ h -= s;
1599
+ h = Math.max(0, h);
1600
+ if (maskedWords) {
1601
+ for (var i = 0; i < s; i++) maskedWords.words[i] = this.words[i];
1602
+ maskedWords.length = s;
1603
+ }
1604
+ if (s === 0) {} else if (this.length > s) {
1605
+ this.length -= s;
1606
+ for (i = 0; i < this.length; i++) this.words[i] = this.words[i + s];
1607
+ } else {
1608
+ this.words[0] = 0;
1609
+ this.length = 1;
1610
+ }
1611
+ var carry = 0;
1612
+ for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {
1613
+ var word = this.words[i] | 0;
1614
+ this.words[i] = carry << 26 - r | word >>> r;
1615
+ carry = word & mask;
1616
+ }
1617
+ if (maskedWords && carry !== 0) maskedWords.words[maskedWords.length++] = carry;
1618
+ if (this.length === 0) {
1619
+ this.words[0] = 0;
1620
+ this.length = 1;
1621
+ }
1622
+ return this._strip();
1623
+ };
1624
+ BN.prototype.ishrn = function ishrn(bits, hint, extended) {
1625
+ assert(this.negative === 0);
1626
+ return this.iushrn(bits, hint, extended);
1627
+ };
1628
+ BN.prototype.shln = function shln(bits) {
1629
+ return this.clone().ishln(bits);
1630
+ };
1631
+ BN.prototype.ushln = function ushln(bits) {
1632
+ return this.clone().iushln(bits);
1633
+ };
1634
+ BN.prototype.shrn = function shrn(bits) {
1635
+ return this.clone().ishrn(bits);
1636
+ };
1637
+ BN.prototype.ushrn = function ushrn(bits) {
1638
+ return this.clone().iushrn(bits);
1639
+ };
1640
+ BN.prototype.testn = function testn(bit) {
1641
+ assert(typeof bit === "number" && bit >= 0);
1642
+ var r = bit % 26;
1643
+ var s = (bit - r) / 26;
1644
+ var q = 1 << r;
1645
+ if (this.length <= s) return false;
1646
+ return !!(this.words[s] & q);
1647
+ };
1648
+ BN.prototype.imaskn = function imaskn(bits) {
1649
+ assert(typeof bits === "number" && bits >= 0);
1650
+ var r = bits % 26;
1651
+ var s = (bits - r) / 26;
1652
+ assert(this.negative === 0, "imaskn works only with positive numbers");
1653
+ if (this.length <= s) return this;
1654
+ if (r !== 0) s++;
1655
+ this.length = Math.min(s, this.length);
1656
+ if (r !== 0) {
1657
+ var mask = 67108863 ^ 67108863 >>> r << r;
1658
+ this.words[this.length - 1] &= mask;
1659
+ }
1660
+ if (this.length === 0) {
1661
+ this.words[0] = 0;
1662
+ this.length = 1;
1663
+ }
1664
+ return this._strip();
1665
+ };
1666
+ BN.prototype.maskn = function maskn(bits) {
1667
+ return this.clone().imaskn(bits);
1668
+ };
1669
+ BN.prototype.iaddn = function iaddn(num) {
1670
+ assert(typeof num === "number");
1671
+ assert(num < 67108864);
1672
+ if (num < 0) return this.isubn(-num);
1673
+ if (this.negative !== 0) {
1674
+ if (this.length === 1 && (this.words[0] | 0) <= num) {
1675
+ this.words[0] = num - (this.words[0] | 0);
1676
+ this.negative = 0;
1677
+ return this;
1678
+ }
1679
+ this.negative = 0;
1680
+ this.isubn(num);
1681
+ this.negative = 1;
1682
+ return this;
1683
+ }
1684
+ return this._iaddn(num);
1685
+ };
1686
+ BN.prototype._iaddn = function _iaddn(num) {
1687
+ this.words[0] += num;
1688
+ for (var i = 0; i < this.length && this.words[i] >= 67108864; i++) {
1689
+ this.words[i] -= 67108864;
1690
+ if (i === this.length - 1) this.words[i + 1] = 1;
1691
+ else this.words[i + 1]++;
1692
+ }
1693
+ this.length = Math.max(this.length, i + 1);
1694
+ return this;
1695
+ };
1696
+ BN.prototype.isubn = function isubn(num) {
1697
+ assert(typeof num === "number");
1698
+ assert(num < 67108864);
1699
+ if (num < 0) return this.iaddn(-num);
1700
+ if (this.negative !== 0) {
1701
+ this.negative = 0;
1702
+ this.iaddn(num);
1703
+ this.negative = 1;
1704
+ return this;
1705
+ }
1706
+ this.words[0] -= num;
1707
+ if (this.length === 1 && this.words[0] < 0) {
1708
+ this.words[0] = -this.words[0];
1709
+ this.negative = 1;
1710
+ } else for (var i = 0; i < this.length && this.words[i] < 0; i++) {
1711
+ this.words[i] += 67108864;
1712
+ this.words[i + 1] -= 1;
1713
+ }
1714
+ return this._strip();
1715
+ };
1716
+ BN.prototype.addn = function addn(num) {
1717
+ return this.clone().iaddn(num);
1718
+ };
1719
+ BN.prototype.subn = function subn(num) {
1720
+ return this.clone().isubn(num);
1721
+ };
1722
+ BN.prototype.iabs = function iabs() {
1723
+ this.negative = 0;
1724
+ return this;
1725
+ };
1726
+ BN.prototype.abs = function abs() {
1727
+ return this.clone().iabs();
1728
+ };
1729
+ BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {
1730
+ var len = num.length + shift;
1731
+ var i;
1732
+ this._expand(len);
1733
+ var w;
1734
+ var carry = 0;
1735
+ for (i = 0; i < num.length; i++) {
1736
+ w = (this.words[i + shift] | 0) + carry;
1737
+ var right = (num.words[i] | 0) * mul;
1738
+ w -= right & 67108863;
1739
+ carry = (w >> 26) - (right / 67108864 | 0);
1740
+ this.words[i + shift] = w & 67108863;
1741
+ }
1742
+ for (; i < this.length - shift; i++) {
1743
+ w = (this.words[i + shift] | 0) + carry;
1744
+ carry = w >> 26;
1745
+ this.words[i + shift] = w & 67108863;
1746
+ }
1747
+ if (carry === 0) return this._strip();
1748
+ assert(carry === -1);
1749
+ carry = 0;
1750
+ for (i = 0; i < this.length; i++) {
1751
+ w = -(this.words[i] | 0) + carry;
1752
+ carry = w >> 26;
1753
+ this.words[i] = w & 67108863;
1754
+ }
1755
+ this.negative = 1;
1756
+ return this._strip();
1757
+ };
1758
+ BN.prototype._wordDiv = function _wordDiv(num, mode) {
1759
+ var shift = this.length - num.length;
1760
+ var a = this.clone();
1761
+ var b = num;
1762
+ var bhi = b.words[b.length - 1] | 0;
1763
+ shift = 26 - this._countBits(bhi);
1764
+ if (shift !== 0) {
1765
+ b = b.ushln(shift);
1766
+ a.iushln(shift);
1767
+ bhi = b.words[b.length - 1] | 0;
1768
+ }
1769
+ var m = a.length - b.length;
1770
+ var q;
1771
+ if (mode !== "mod") {
1772
+ q = new BN(null);
1773
+ q.length = m + 1;
1774
+ q.words = new Array(q.length);
1775
+ for (var i = 0; i < q.length; i++) q.words[i] = 0;
1776
+ }
1777
+ var diff = a.clone()._ishlnsubmul(b, 1, m);
1778
+ if (diff.negative === 0) {
1779
+ a = diff;
1780
+ if (q) q.words[m] = 1;
1781
+ }
1782
+ for (var j = m - 1; j >= 0; j--) {
1783
+ var qj = (a.words[b.length + j] | 0) * 67108864 + (a.words[b.length + j - 1] | 0);
1784
+ qj = Math.min(qj / bhi | 0, 67108863);
1785
+ a._ishlnsubmul(b, qj, j);
1786
+ while (a.negative !== 0) {
1787
+ qj--;
1788
+ a.negative = 0;
1789
+ a._ishlnsubmul(b, 1, j);
1790
+ if (!a.isZero()) a.negative ^= 1;
1791
+ }
1792
+ if (q) q.words[j] = qj;
1793
+ }
1794
+ if (q) q._strip();
1795
+ a._strip();
1796
+ if (mode !== "div" && shift !== 0) a.iushrn(shift);
1797
+ return {
1798
+ div: q || null,
1799
+ mod: a
1800
+ };
1801
+ };
1802
+ BN.prototype.divmod = function divmod(num, mode, positive) {
1803
+ assert(!num.isZero());
1804
+ if (this.isZero()) return {
1805
+ div: new BN(0),
1806
+ mod: new BN(0)
1807
+ };
1808
+ var div, mod, res;
1809
+ if (this.negative !== 0 && num.negative === 0) {
1810
+ res = this.neg().divmod(num, mode);
1811
+ if (mode !== "mod") div = res.div.neg();
1812
+ if (mode !== "div") {
1813
+ mod = res.mod.neg();
1814
+ if (positive && mod.negative !== 0) mod.iadd(num);
1815
+ }
1816
+ return {
1817
+ div,
1818
+ mod
1819
+ };
1820
+ }
1821
+ if (this.negative === 0 && num.negative !== 0) {
1822
+ res = this.divmod(num.neg(), mode);
1823
+ if (mode !== "mod") div = res.div.neg();
1824
+ return {
1825
+ div,
1826
+ mod: res.mod
1827
+ };
1828
+ }
1829
+ if ((this.negative & num.negative) !== 0) {
1830
+ res = this.neg().divmod(num.neg(), mode);
1831
+ if (mode !== "div") {
1832
+ mod = res.mod.neg();
1833
+ if (positive && mod.negative !== 0) mod.isub(num);
1834
+ }
1835
+ return {
1836
+ div: res.div,
1837
+ mod
1838
+ };
1839
+ }
1840
+ if (num.length > this.length || this.cmp(num) < 0) return {
1841
+ div: new BN(0),
1842
+ mod: this
1843
+ };
1844
+ if (num.length === 1) {
1845
+ if (mode === "div") return {
1846
+ div: this.divn(num.words[0]),
1847
+ mod: null
1848
+ };
1849
+ if (mode === "mod") return {
1850
+ div: null,
1851
+ mod: new BN(this.modrn(num.words[0]))
1852
+ };
1853
+ return {
1854
+ div: this.divn(num.words[0]),
1855
+ mod: new BN(this.modrn(num.words[0]))
1856
+ };
1857
+ }
1858
+ return this._wordDiv(num, mode);
1859
+ };
1860
+ BN.prototype.div = function div(num) {
1861
+ return this.divmod(num, "div", false).div;
1862
+ };
1863
+ BN.prototype.mod = function mod(num) {
1864
+ return this.divmod(num, "mod", false).mod;
1865
+ };
1866
+ BN.prototype.umod = function umod(num) {
1867
+ return this.divmod(num, "mod", true).mod;
1868
+ };
1869
+ BN.prototype.divRound = function divRound(num) {
1870
+ var dm = this.divmod(num);
1871
+ if (dm.mod.isZero()) return dm.div;
1872
+ var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;
1873
+ var half = num.ushrn(1);
1874
+ var r2 = num.andln(1);
1875
+ var cmp = mod.cmp(half);
1876
+ if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;
1877
+ return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);
1878
+ };
1879
+ BN.prototype.modrn = function modrn(num) {
1880
+ var isNegNum = num < 0;
1881
+ if (isNegNum) num = -num;
1882
+ assert(num <= 67108863);
1883
+ var p = (1 << 26) % num;
1884
+ var acc = 0;
1885
+ for (var i = this.length - 1; i >= 0; i--) acc = (p * acc + (this.words[i] | 0)) % num;
1886
+ return isNegNum ? -acc : acc;
1887
+ };
1888
+ BN.prototype.modn = function modn(num) {
1889
+ return this.modrn(num);
1890
+ };
1891
+ BN.prototype.idivn = function idivn(num) {
1892
+ var isNegNum = num < 0;
1893
+ if (isNegNum) num = -num;
1894
+ assert(num <= 67108863);
1895
+ var carry = 0;
1896
+ for (var i = this.length - 1; i >= 0; i--) {
1897
+ var w = (this.words[i] | 0) + carry * 67108864;
1898
+ this.words[i] = w / num | 0;
1899
+ carry = w % num;
1900
+ }
1901
+ this._strip();
1902
+ return isNegNum ? this.ineg() : this;
1903
+ };
1904
+ BN.prototype.divn = function divn(num) {
1905
+ return this.clone().idivn(num);
1906
+ };
1907
+ BN.prototype.egcd = function egcd(p) {
1908
+ assert(p.negative === 0);
1909
+ assert(!p.isZero());
1910
+ var x = this;
1911
+ var y = p.clone();
1912
+ if (x.negative !== 0) x = x.umod(p);
1913
+ else x = x.clone();
1914
+ var A = new BN(1);
1915
+ var B = new BN(0);
1916
+ var C = new BN(0);
1917
+ var D = new BN(1);
1918
+ var g = 0;
1919
+ while (x.isEven() && y.isEven()) {
1920
+ x.iushrn(1);
1921
+ y.iushrn(1);
1922
+ ++g;
1923
+ }
1924
+ var yp = y.clone();
1925
+ var xp = x.clone();
1926
+ while (!x.isZero()) {
1927
+ for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
1928
+ if (i > 0) {
1929
+ x.iushrn(i);
1930
+ while (i-- > 0) {
1931
+ if (A.isOdd() || B.isOdd()) {
1932
+ A.iadd(yp);
1933
+ B.isub(xp);
1934
+ }
1935
+ A.iushrn(1);
1936
+ B.iushrn(1);
1937
+ }
1938
+ }
1939
+ for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
1940
+ if (j > 0) {
1941
+ y.iushrn(j);
1942
+ while (j-- > 0) {
1943
+ if (C.isOdd() || D.isOdd()) {
1944
+ C.iadd(yp);
1945
+ D.isub(xp);
1946
+ }
1947
+ C.iushrn(1);
1948
+ D.iushrn(1);
1949
+ }
1950
+ }
1951
+ if (x.cmp(y) >= 0) {
1952
+ x.isub(y);
1953
+ A.isub(C);
1954
+ B.isub(D);
1955
+ } else {
1956
+ y.isub(x);
1957
+ C.isub(A);
1958
+ D.isub(B);
1959
+ }
1960
+ }
1961
+ return {
1962
+ a: C,
1963
+ b: D,
1964
+ gcd: y.iushln(g)
1965
+ };
1966
+ };
1967
+ BN.prototype._invmp = function _invmp(p) {
1968
+ assert(p.negative === 0);
1969
+ assert(!p.isZero());
1970
+ var a = this;
1971
+ var b = p.clone();
1972
+ if (a.negative !== 0) a = a.umod(p);
1973
+ else a = a.clone();
1974
+ var x1 = new BN(1);
1975
+ var x2 = new BN(0);
1976
+ var delta = b.clone();
1977
+ while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {
1978
+ for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);
1979
+ if (i > 0) {
1980
+ a.iushrn(i);
1981
+ while (i-- > 0) {
1982
+ if (x1.isOdd()) x1.iadd(delta);
1983
+ x1.iushrn(1);
1984
+ }
1985
+ }
1986
+ for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);
1987
+ if (j > 0) {
1988
+ b.iushrn(j);
1989
+ while (j-- > 0) {
1990
+ if (x2.isOdd()) x2.iadd(delta);
1991
+ x2.iushrn(1);
1992
+ }
1993
+ }
1994
+ if (a.cmp(b) >= 0) {
1995
+ a.isub(b);
1996
+ x1.isub(x2);
1997
+ } else {
1998
+ b.isub(a);
1999
+ x2.isub(x1);
2000
+ }
2001
+ }
2002
+ var res;
2003
+ if (a.cmpn(1) === 0) res = x1;
2004
+ else res = x2;
2005
+ if (res.cmpn(0) < 0) res.iadd(p);
2006
+ return res;
2007
+ };
2008
+ BN.prototype.gcd = function gcd(num) {
2009
+ if (this.isZero()) return num.abs();
2010
+ if (num.isZero()) return this.abs();
2011
+ var a = this.clone();
2012
+ var b = num.clone();
2013
+ a.negative = 0;
2014
+ b.negative = 0;
2015
+ for (var shift = 0; a.isEven() && b.isEven(); shift++) {
2016
+ a.iushrn(1);
2017
+ b.iushrn(1);
2018
+ }
2019
+ do {
2020
+ while (a.isEven()) a.iushrn(1);
2021
+ while (b.isEven()) b.iushrn(1);
2022
+ var r = a.cmp(b);
2023
+ if (r < 0) {
2024
+ var t = a;
2025
+ a = b;
2026
+ b = t;
2027
+ } else if (r === 0 || b.cmpn(1) === 0) break;
2028
+ a.isub(b);
2029
+ } while (true);
2030
+ return b.iushln(shift);
2031
+ };
2032
+ BN.prototype.invm = function invm(num) {
2033
+ return this.egcd(num).a.umod(num);
2034
+ };
2035
+ BN.prototype.isEven = function isEven() {
2036
+ return (this.words[0] & 1) === 0;
2037
+ };
2038
+ BN.prototype.isOdd = function isOdd() {
2039
+ return (this.words[0] & 1) === 1;
2040
+ };
2041
+ BN.prototype.andln = function andln(num) {
2042
+ return this.words[0] & num;
2043
+ };
2044
+ BN.prototype.bincn = function bincn(bit) {
2045
+ assert(typeof bit === "number");
2046
+ var r = bit % 26;
2047
+ var s = (bit - r) / 26;
2048
+ var q = 1 << r;
2049
+ if (this.length <= s) {
2050
+ this._expand(s + 1);
2051
+ this.words[s] |= q;
2052
+ return this;
2053
+ }
2054
+ var carry = q;
2055
+ for (var i = s; carry !== 0 && i < this.length; i++) {
2056
+ var w = this.words[i] | 0;
2057
+ w += carry;
2058
+ carry = w >>> 26;
2059
+ w &= 67108863;
2060
+ this.words[i] = w;
2061
+ }
2062
+ if (carry !== 0) {
2063
+ this.words[i] = carry;
2064
+ this.length++;
2065
+ }
2066
+ return this;
2067
+ };
2068
+ BN.prototype.isZero = function isZero() {
2069
+ return this.length === 1 && this.words[0] === 0;
2070
+ };
2071
+ BN.prototype.cmpn = function cmpn(num) {
2072
+ var negative = num < 0;
2073
+ if (this.negative !== 0 && !negative) return -1;
2074
+ if (this.negative === 0 && negative) return 1;
2075
+ this._strip();
2076
+ var res;
2077
+ if (this.length > 1) res = 1;
2078
+ else {
2079
+ if (negative) num = -num;
2080
+ assert(num <= 67108863, "Number is too big");
2081
+ var w = this.words[0] | 0;
2082
+ res = w === num ? 0 : w < num ? -1 : 1;
2083
+ }
2084
+ if (this.negative !== 0) return -res | 0;
2085
+ return res;
2086
+ };
2087
+ BN.prototype.cmp = function cmp(num) {
2088
+ if (this.negative !== 0 && num.negative === 0) return -1;
2089
+ if (this.negative === 0 && num.negative !== 0) return 1;
2090
+ var res = this.ucmp(num);
2091
+ if (this.negative !== 0) return -res | 0;
2092
+ return res;
2093
+ };
2094
+ BN.prototype.ucmp = function ucmp(num) {
2095
+ if (this.length > num.length) return 1;
2096
+ if (this.length < num.length) return -1;
2097
+ var res = 0;
2098
+ for (var i = this.length - 1; i >= 0; i--) {
2099
+ var a = this.words[i] | 0;
2100
+ var b = num.words[i] | 0;
2101
+ if (a === b) continue;
2102
+ if (a < b) res = -1;
2103
+ else if (a > b) res = 1;
2104
+ break;
2105
+ }
2106
+ return res;
2107
+ };
2108
+ BN.prototype.gtn = function gtn(num) {
2109
+ return this.cmpn(num) === 1;
2110
+ };
2111
+ BN.prototype.gt = function gt(num) {
2112
+ return this.cmp(num) === 1;
2113
+ };
2114
+ BN.prototype.gten = function gten(num) {
2115
+ return this.cmpn(num) >= 0;
2116
+ };
2117
+ BN.prototype.gte = function gte(num) {
2118
+ return this.cmp(num) >= 0;
2119
+ };
2120
+ BN.prototype.ltn = function ltn(num) {
2121
+ return this.cmpn(num) === -1;
2122
+ };
2123
+ BN.prototype.lt = function lt(num) {
2124
+ return this.cmp(num) === -1;
2125
+ };
2126
+ BN.prototype.lten = function lten(num) {
2127
+ return this.cmpn(num) <= 0;
2128
+ };
2129
+ BN.prototype.lte = function lte(num) {
2130
+ return this.cmp(num) <= 0;
2131
+ };
2132
+ BN.prototype.eqn = function eqn(num) {
2133
+ return this.cmpn(num) === 0;
2134
+ };
2135
+ BN.prototype.eq = function eq(num) {
2136
+ return this.cmp(num) === 0;
2137
+ };
2138
+ BN.red = function red(num) {
2139
+ return new Red(num);
2140
+ };
2141
+ BN.prototype.toRed = function toRed(ctx) {
2142
+ assert(!this.red, "Already a number in reduction context");
2143
+ assert(this.negative === 0, "red works only with positives");
2144
+ return ctx.convertTo(this)._forceRed(ctx);
2145
+ };
2146
+ BN.prototype.fromRed = function fromRed() {
2147
+ assert(this.red, "fromRed works only with numbers in reduction context");
2148
+ return this.red.convertFrom(this);
2149
+ };
2150
+ BN.prototype._forceRed = function _forceRed(ctx) {
2151
+ this.red = ctx;
2152
+ return this;
2153
+ };
2154
+ BN.prototype.forceRed = function forceRed(ctx) {
2155
+ assert(!this.red, "Already a number in reduction context");
2156
+ return this._forceRed(ctx);
2157
+ };
2158
+ BN.prototype.redAdd = function redAdd(num) {
2159
+ assert(this.red, "redAdd works only with red numbers");
2160
+ return this.red.add(this, num);
2161
+ };
2162
+ BN.prototype.redIAdd = function redIAdd(num) {
2163
+ assert(this.red, "redIAdd works only with red numbers");
2164
+ return this.red.iadd(this, num);
2165
+ };
2166
+ BN.prototype.redSub = function redSub(num) {
2167
+ assert(this.red, "redSub works only with red numbers");
2168
+ return this.red.sub(this, num);
2169
+ };
2170
+ BN.prototype.redISub = function redISub(num) {
2171
+ assert(this.red, "redISub works only with red numbers");
2172
+ return this.red.isub(this, num);
2173
+ };
2174
+ BN.prototype.redShl = function redShl(num) {
2175
+ assert(this.red, "redShl works only with red numbers");
2176
+ return this.red.shl(this, num);
2177
+ };
2178
+ BN.prototype.redMul = function redMul(num) {
2179
+ assert(this.red, "redMul works only with red numbers");
2180
+ this.red._verify2(this, num);
2181
+ return this.red.mul(this, num);
2182
+ };
2183
+ BN.prototype.redIMul = function redIMul(num) {
2184
+ assert(this.red, "redMul works only with red numbers");
2185
+ this.red._verify2(this, num);
2186
+ return this.red.imul(this, num);
2187
+ };
2188
+ BN.prototype.redSqr = function redSqr() {
2189
+ assert(this.red, "redSqr works only with red numbers");
2190
+ this.red._verify1(this);
2191
+ return this.red.sqr(this);
2192
+ };
2193
+ BN.prototype.redISqr = function redISqr() {
2194
+ assert(this.red, "redISqr works only with red numbers");
2195
+ this.red._verify1(this);
2196
+ return this.red.isqr(this);
2197
+ };
2198
+ BN.prototype.redSqrt = function redSqrt() {
2199
+ assert(this.red, "redSqrt works only with red numbers");
2200
+ this.red._verify1(this);
2201
+ return this.red.sqrt(this);
2202
+ };
2203
+ BN.prototype.redInvm = function redInvm() {
2204
+ assert(this.red, "redInvm works only with red numbers");
2205
+ this.red._verify1(this);
2206
+ return this.red.invm(this);
2207
+ };
2208
+ BN.prototype.redNeg = function redNeg() {
2209
+ assert(this.red, "redNeg works only with red numbers");
2210
+ this.red._verify1(this);
2211
+ return this.red.neg(this);
2212
+ };
2213
+ BN.prototype.redPow = function redPow(num) {
2214
+ assert(this.red && !num.red, "redPow(normalNum)");
2215
+ this.red._verify1(this);
2216
+ return this.red.pow(this, num);
2217
+ };
2218
+ var primes = {
2219
+ k256: null,
2220
+ p224: null,
2221
+ p192: null,
2222
+ p25519: null
2223
+ };
2224
+ function MPrime(name, p) {
2225
+ this.name = name;
2226
+ this.p = new BN(p, 16);
2227
+ this.n = this.p.bitLength();
2228
+ this.k = new BN(1).iushln(this.n).isub(this.p);
2229
+ this.tmp = this._tmp();
2230
+ }
2231
+ MPrime.prototype._tmp = function _tmp() {
2232
+ var tmp = new BN(null);
2233
+ tmp.words = new Array(Math.ceil(this.n / 13));
2234
+ return tmp;
2235
+ };
2236
+ MPrime.prototype.ireduce = function ireduce(num) {
2237
+ var r = num;
2238
+ var rlen;
2239
+ do {
2240
+ this.split(r, this.tmp);
2241
+ r = this.imulK(r);
2242
+ r = r.iadd(this.tmp);
2243
+ rlen = r.bitLength();
2244
+ } while (rlen > this.n);
2245
+ var cmp = rlen < this.n ? -1 : r.ucmp(this.p);
2246
+ if (cmp === 0) {
2247
+ r.words[0] = 0;
2248
+ r.length = 1;
2249
+ } else if (cmp > 0) r.isub(this.p);
2250
+ else if (r.strip !== void 0) r.strip();
2251
+ else r._strip();
2252
+ return r;
2253
+ };
2254
+ MPrime.prototype.split = function split(input, out) {
2255
+ input.iushrn(this.n, 0, out);
2256
+ };
2257
+ MPrime.prototype.imulK = function imulK(num) {
2258
+ return num.imul(this.k);
2259
+ };
2260
+ function K256() {
2261
+ MPrime.call(this, "k256", "ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f");
2262
+ }
2263
+ inherits(K256, MPrime);
2264
+ K256.prototype.split = function split(input, output) {
2265
+ var mask = 4194303;
2266
+ var outLen = Math.min(input.length, 9);
2267
+ for (var i = 0; i < outLen; i++) output.words[i] = input.words[i];
2268
+ output.length = outLen;
2269
+ if (input.length <= 9) {
2270
+ input.words[0] = 0;
2271
+ input.length = 1;
2272
+ return;
2273
+ }
2274
+ var prev = input.words[9];
2275
+ output.words[output.length++] = prev & mask;
2276
+ for (i = 10; i < input.length; i++) {
2277
+ var next = input.words[i] | 0;
2278
+ input.words[i - 10] = (next & mask) << 4 | prev >>> 22;
2279
+ prev = next;
2280
+ }
2281
+ prev >>>= 22;
2282
+ input.words[i - 10] = prev;
2283
+ if (prev === 0 && input.length > 10) input.length -= 10;
2284
+ else input.length -= 9;
2285
+ };
2286
+ K256.prototype.imulK = function imulK(num) {
2287
+ num.words[num.length] = 0;
2288
+ num.words[num.length + 1] = 0;
2289
+ num.length += 2;
2290
+ var lo = 0;
2291
+ for (var i = 0; i < num.length; i++) {
2292
+ var w = num.words[i] | 0;
2293
+ lo += w * 977;
2294
+ num.words[i] = lo & 67108863;
2295
+ lo = w * 64 + (lo / 67108864 | 0);
2296
+ }
2297
+ if (num.words[num.length - 1] === 0) {
2298
+ num.length--;
2299
+ if (num.words[num.length - 1] === 0) num.length--;
2300
+ }
2301
+ return num;
2302
+ };
2303
+ function P224() {
2304
+ MPrime.call(this, "p224", "ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001");
2305
+ }
2306
+ inherits(P224, MPrime);
2307
+ function P192() {
2308
+ MPrime.call(this, "p192", "ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff");
2309
+ }
2310
+ inherits(P192, MPrime);
2311
+ function P25519() {
2312
+ MPrime.call(this, "25519", "7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed");
2313
+ }
2314
+ inherits(P25519, MPrime);
2315
+ P25519.prototype.imulK = function imulK(num) {
2316
+ var carry = 0;
2317
+ for (var i = 0; i < num.length; i++) {
2318
+ var hi = (num.words[i] | 0) * 19 + carry;
2319
+ var lo = hi & 67108863;
2320
+ hi >>>= 26;
2321
+ num.words[i] = lo;
2322
+ carry = hi;
2323
+ }
2324
+ if (carry !== 0) num.words[num.length++] = carry;
2325
+ return num;
2326
+ };
2327
+ BN._prime = function prime(name) {
2328
+ if (primes[name]) return primes[name];
2329
+ var prime;
2330
+ if (name === "k256") prime = new K256();
2331
+ else if (name === "p224") prime = new P224();
2332
+ else if (name === "p192") prime = new P192();
2333
+ else if (name === "p25519") prime = new P25519();
2334
+ else throw new Error("Unknown prime " + name);
2335
+ primes[name] = prime;
2336
+ return prime;
2337
+ };
2338
+ function Red(m) {
2339
+ if (typeof m === "string") {
2340
+ var prime = BN._prime(m);
2341
+ this.m = prime.p;
2342
+ this.prime = prime;
2343
+ } else {
2344
+ assert(m.gtn(1), "modulus must be greater than 1");
2345
+ this.m = m;
2346
+ this.prime = null;
2347
+ }
2348
+ }
2349
+ Red.prototype._verify1 = function _verify1(a) {
2350
+ assert(a.negative === 0, "red works only with positives");
2351
+ assert(a.red, "red works only with red numbers");
2352
+ };
2353
+ Red.prototype._verify2 = function _verify2(a, b) {
2354
+ assert((a.negative | b.negative) === 0, "red works only with positives");
2355
+ assert(a.red && a.red === b.red, "red works only with red numbers");
2356
+ };
2357
+ Red.prototype.imod = function imod(a) {
2358
+ if (this.prime) return this.prime.ireduce(a)._forceRed(this);
2359
+ move(a, a.umod(this.m)._forceRed(this));
2360
+ return a;
2361
+ };
2362
+ Red.prototype.neg = function neg(a) {
2363
+ if (a.isZero()) return a.clone();
2364
+ return this.m.sub(a)._forceRed(this);
2365
+ };
2366
+ Red.prototype.add = function add(a, b) {
2367
+ this._verify2(a, b);
2368
+ var res = a.add(b);
2369
+ if (res.cmp(this.m) >= 0) res.isub(this.m);
2370
+ return res._forceRed(this);
2371
+ };
2372
+ Red.prototype.iadd = function iadd(a, b) {
2373
+ this._verify2(a, b);
2374
+ var res = a.iadd(b);
2375
+ if (res.cmp(this.m) >= 0) res.isub(this.m);
2376
+ return res;
2377
+ };
2378
+ Red.prototype.sub = function sub(a, b) {
2379
+ this._verify2(a, b);
2380
+ var res = a.sub(b);
2381
+ if (res.cmpn(0) < 0) res.iadd(this.m);
2382
+ return res._forceRed(this);
2383
+ };
2384
+ Red.prototype.isub = function isub(a, b) {
2385
+ this._verify2(a, b);
2386
+ var res = a.isub(b);
2387
+ if (res.cmpn(0) < 0) res.iadd(this.m);
2388
+ return res;
2389
+ };
2390
+ Red.prototype.shl = function shl(a, num) {
2391
+ this._verify1(a);
2392
+ return this.imod(a.ushln(num));
2393
+ };
2394
+ Red.prototype.imul = function imul(a, b) {
2395
+ this._verify2(a, b);
2396
+ return this.imod(a.imul(b));
2397
+ };
2398
+ Red.prototype.mul = function mul(a, b) {
2399
+ this._verify2(a, b);
2400
+ return this.imod(a.mul(b));
2401
+ };
2402
+ Red.prototype.isqr = function isqr(a) {
2403
+ return this.imul(a, a.clone());
2404
+ };
2405
+ Red.prototype.sqr = function sqr(a) {
2406
+ return this.mul(a, a);
2407
+ };
2408
+ Red.prototype.sqrt = function sqrt(a) {
2409
+ if (a.isZero()) return a.clone();
2410
+ var mod3 = this.m.andln(3);
2411
+ assert(mod3 % 2 === 1);
2412
+ if (mod3 === 3) {
2413
+ var pow = this.m.add(new BN(1)).iushrn(2);
2414
+ return this.pow(a, pow);
2415
+ }
2416
+ var q = this.m.subn(1);
2417
+ var s = 0;
2418
+ while (!q.isZero() && q.andln(1) === 0) {
2419
+ s++;
2420
+ q.iushrn(1);
2421
+ }
2422
+ assert(!q.isZero());
2423
+ var one = new BN(1).toRed(this);
2424
+ var nOne = one.redNeg();
2425
+ var lpow = this.m.subn(1).iushrn(1);
2426
+ var z = this.m.bitLength();
2427
+ z = new BN(2 * z * z).toRed(this);
2428
+ while (this.pow(z, lpow).cmp(nOne) !== 0) z.redIAdd(nOne);
2429
+ var c = this.pow(z, q);
2430
+ var r = this.pow(a, q.addn(1).iushrn(1));
2431
+ var t = this.pow(a, q);
2432
+ var m = s;
2433
+ while (t.cmp(one) !== 0) {
2434
+ var tmp = t;
2435
+ for (var i = 0; tmp.cmp(one) !== 0; i++) tmp = tmp.redSqr();
2436
+ assert(i < m);
2437
+ var b = this.pow(c, new BN(1).iushln(m - i - 1));
2438
+ r = r.redMul(b);
2439
+ c = b.redSqr();
2440
+ t = t.redMul(c);
2441
+ m = i;
2442
+ }
2443
+ return r;
2444
+ };
2445
+ Red.prototype.invm = function invm(a) {
2446
+ var inv = a._invmp(this.m);
2447
+ if (inv.negative !== 0) {
2448
+ inv.negative = 0;
2449
+ return this.imod(inv).redNeg();
2450
+ } else return this.imod(inv);
2451
+ };
2452
+ Red.prototype.pow = function pow(a, num) {
2453
+ if (num.isZero()) return new BN(1).toRed(this);
2454
+ if (num.cmpn(1) === 0) return a.clone();
2455
+ var windowSize = 4;
2456
+ var wnd = new Array(1 << windowSize);
2457
+ wnd[0] = new BN(1).toRed(this);
2458
+ wnd[1] = a;
2459
+ for (var i = 2; i < wnd.length; i++) wnd[i] = this.mul(wnd[i - 1], a);
2460
+ var res = wnd[0];
2461
+ var current = 0;
2462
+ var currentLen = 0;
2463
+ var start = num.bitLength() % 26;
2464
+ if (start === 0) start = 26;
2465
+ for (i = num.length - 1; i >= 0; i--) {
2466
+ var word = num.words[i];
2467
+ for (var j = start - 1; j >= 0; j--) {
2468
+ var bit = word >> j & 1;
2469
+ if (res !== wnd[0]) res = this.sqr(res);
2470
+ if (bit === 0 && current === 0) {
2471
+ currentLen = 0;
2472
+ continue;
2473
+ }
2474
+ current <<= 1;
2475
+ current |= bit;
2476
+ currentLen++;
2477
+ if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;
2478
+ res = this.mul(res, wnd[current]);
2479
+ currentLen = 0;
2480
+ current = 0;
2481
+ }
2482
+ start = 26;
2483
+ }
2484
+ return res;
2485
+ };
2486
+ Red.prototype.convertTo = function convertTo(num) {
2487
+ var r = num.umod(this.m);
2488
+ return r === num ? r.clone() : r;
2489
+ };
2490
+ Red.prototype.convertFrom = function convertFrom(num) {
2491
+ var res = num.clone();
2492
+ res.red = null;
2493
+ return res;
2494
+ };
2495
+ BN.mont = function mont(num) {
2496
+ return new Mont(num);
2497
+ };
2498
+ function Mont(m) {
2499
+ Red.call(this, m);
2500
+ this.shift = this.m.bitLength();
2501
+ if (this.shift % 26 !== 0) this.shift += 26 - this.shift % 26;
2502
+ this.r = new BN(1).iushln(this.shift);
2503
+ this.r2 = this.imod(this.r.sqr());
2504
+ this.rinv = this.r._invmp(this.m);
2505
+ this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);
2506
+ this.minv = this.minv.umod(this.r);
2507
+ this.minv = this.r.sub(this.minv);
2508
+ }
2509
+ inherits(Mont, Red);
2510
+ Mont.prototype.convertTo = function convertTo(num) {
2511
+ return this.imod(num.ushln(this.shift));
2512
+ };
2513
+ Mont.prototype.convertFrom = function convertFrom(num) {
2514
+ var r = this.imod(num.mul(this.rinv));
2515
+ r.red = null;
2516
+ return r;
2517
+ };
2518
+ Mont.prototype.imul = function imul(a, b) {
2519
+ if (a.isZero() || b.isZero()) {
2520
+ a.words[0] = 0;
2521
+ a.length = 1;
2522
+ return a;
2523
+ }
2524
+ var t = a.imul(b);
2525
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
2526
+ var u = t.isub(c).iushrn(this.shift);
2527
+ var res = u;
2528
+ if (u.cmp(this.m) >= 0) res = u.isub(this.m);
2529
+ else if (u.cmpn(0) < 0) res = u.iadd(this.m);
2530
+ return res._forceRed(this);
2531
+ };
2532
+ Mont.prototype.mul = function mul(a, b) {
2533
+ if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);
2534
+ var t = a.mul(b);
2535
+ var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);
2536
+ var u = t.isub(c).iushrn(this.shift);
2537
+ var res = u;
2538
+ if (u.cmp(this.m) >= 0) res = u.isub(this.m);
2539
+ else if (u.cmpn(0) < 0) res = u.iadd(this.m);
2540
+ return res._forceRed(this);
2541
+ };
2542
+ Mont.prototype.invm = function invm(a) {
2543
+ return this.imod(a._invmp(this.m).mul(this.r2))._forceRed(this);
2544
+ };
2545
+ })(typeof module === "undefined" || module, exports);
2546
+ }));
2547
+ //#endregion
2548
+ Object.defineProperty(exports, "require_bn", {
2549
+ enumerable: true,
2550
+ get: function() {
2551
+ return require_bn;
2552
+ }
2553
+ });