@laceio/sdk 0.1.0 → 0.1.1-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 (408) hide show
  1. package/dist/{Ed25519PublicKey-lvu1s54U.cjs → Address-AMKTo-dA.cjs} +17150 -61
  2. package/dist/{Ed25519PublicKey-CjnuAYRR.js → Address-_c_-9hLC.js} +16955 -264
  3. package/dist/{Bip32Account-r3KAhCgU.js → Bip32Account-CaW1zC9Y.js} +4 -5
  4. package/dist/{Bip32Account-Cz3h0ZUa.cjs → Bip32Account-DOaGmKpv.cjs} +4 -5
  5. package/dist/Cardano-B-gyqBBD.js +311 -0
  6. package/dist/Cardano-BQ_af0Y3.cjs +322 -0
  7. package/dist/Ed25519PublicKey-B3QcR0J2.cjs +88 -0
  8. package/dist/Ed25519PublicKey-DIE19xHg.js +83 -0
  9. package/dist/InMemoryKeyAgent-Bc_xZY-v.cjs +652 -0
  10. package/dist/InMemoryKeyAgent-D8T3vtXy.js +631 -0
  11. package/dist/{PaymentAddress-DhbtuYb7.cjs → PaymentAddress-B4n1KZMx.cjs} +1 -2
  12. package/dist/{PaymentAddress-xSmGUQ-8.js → PaymentAddress-Cml3EA1n.js} +1 -2
  13. package/dist/Percent-Cfuw5YyL.cjs +11 -0
  14. package/dist/Percent-DpvyJ_93.js +5 -0
  15. package/dist/SodiumBip32Ed25519-BaD-kjyx.cjs +380 -0
  16. package/dist/SodiumBip32Ed25519-DCikAMsl.js +363 -0
  17. package/dist/{TransactionBuilder-CeJTNzm-.cjs → TransactionBuilder-BakTJvsJ.cjs} +59 -89
  18. package/dist/{TransactionBuilder-DGNDM4kt.js → TransactionBuilder-D2ErwVWv.js} +5 -71
  19. package/dist/_md-6zV2Cme0.cjs +684 -0
  20. package/dist/_md-gbUqlhqd.js +399 -0
  21. package/dist/_web-crypto-random-bytes-BvzwTYPG.js +197 -0
  22. package/dist/acc-module-NL_8mEHH.cjs +27654 -0
  23. package/dist/acc-module-ur8CkBd1.js +27624 -0
  24. package/dist/account-call-B7cF8ly4.cjs +293 -0
  25. package/dist/account-call-BF4rBcNw.js +3 -0
  26. package/dist/account-call-CoCq3V55.js +252 -0
  27. package/dist/account-call-DFcD257E.cjs +4 -0
  28. package/dist/account-guards-BeKbV9D1.cjs +41 -0
  29. package/dist/account-guards-qnFXuXSE.js +36 -0
  30. package/dist/{activity-type.stable-ClO9j_PH.cjs → activity-type-BPXxdHBP.cjs} +2 -1
  31. package/dist/{activity-type.stable-Ml0SOYv9.js → activity-type-C1geyPsH.js} +2 -1
  32. package/dist/address-OxwXIwbF.js +15502 -0
  33. package/dist/address-book-address-validator-BqYM0Uyp.cjs +41 -0
  34. package/dist/{address-book-address-validator-BhqRfmlL.cjs → address-book-address-validator-CGIcqn5W.cjs} +5 -4
  35. package/dist/{address-book-address-validator-VqIOB8PY.js → address-book-address-validator-FkkYim3z.js} +6 -4
  36. package/dist/address-book-address-validator-RSx2Jozy.js +39 -0
  37. package/dist/address-lECYBd9-.cjs +13043 -0
  38. package/dist/{apply-vkey-witnesses-Ctzk7eye.cjs → apply-vkey-witnesses-1jyczTkw.cjs} +1 -1
  39. package/dist/{apply-vkey-witnesses-Dfo7XfhL.js → apply-vkey-witnesses-Byb40-yJ.js} +1 -1
  40. package/dist/artefact-loader-Cqc9eSkL.cjs +182 -0
  41. package/dist/artefact-loader-D0T2f6F7.js +159 -0
  42. package/dist/auto-dismiss-failure-on-success-BWJceNXd.cjs +37 -0
  43. package/dist/auto-dismiss-failure-on-success-Bpod-v4r.js +31 -0
  44. package/dist/bip32-EPpcFrpH.cjs +3851 -0
  45. package/dist/{bip32ed25519-D2In8WzR.cjs → bip32ed25519-CRiG-Kjg.cjs} +5 -4
  46. package/dist/{bip32ed25519-qsLH_eWO.js → bip32ed25519-E-fCUZNv.js} +6 -4
  47. package/dist/bip39-DZomfqeY.js +9 -0
  48. package/dist/bip39-MAck9iod.cjs +26 -0
  49. package/dist/bitcoin-data-provider-D0OT_Uiu.cjs +26 -0
  50. package/dist/bitcoin-data-provider-LN_8oamW.js +21 -0
  51. package/dist/bitcoin.cjs +48 -0
  52. package/dist/bitcoin.d.ts +29805 -1
  53. package/dist/bitcoin.js +22 -0
  54. package/dist/{blake2b-BGHUWMsV.js → blake2b-BL-eR5G2.js} +6 -4
  55. package/dist/{blake2b-DspUqw68.cjs → blake2b-Iy324FwH.cjs} +5 -4
  56. package/dist/{blockfrost-tx-submit-provider-BUEOmdvc.js → blockfrost-tx-submit-provider-BHDLgOIE.js} +9 -162
  57. package/dist/{blockfrost-tx-submit-provider-B5dWbdrZ.cjs → blockfrost-tx-submit-provider-BxC19smv.cjs} +7 -171
  58. package/dist/{blockingWithLatestFrom-BhaE7pnA.js → blockingWithLatestFrom-FUfZFEUG.js} +1 -1
  59. package/dist/{blockingWithLatestFrom-DkuT3G2a.cjs → blockingWithLatestFrom-bmCPgA3c.cjs} +1 -1
  60. package/dist/bn-BFq5a4dk.cjs +2553 -0
  61. package/dist/{SodiumBip32Ed25519-BEfo1Q9m.js → browser-D5jRKv_L.js} +4 -401
  62. package/dist/bytes.vo-CziaOsba.js +24 -0
  63. package/dist/bytes.vo-hecRu3YZ.cjs +35 -0
  64. package/dist/{cardano-network-id-to-network-type-PXvn1ycQ.cjs → cardano-network-id-to-network-type-BwG_d6QP.cjs} +1 -1
  65. package/dist/{cardano-network-id-to-network-type-DHgKhDAK.js → cardano-network-id-to-network-type-CYJheetp.js} +1 -1
  66. package/dist/{cardano-network-id.vo-CbNNKd-k.cjs → cardano-network-id.vo-C5VuBXT3.cjs} +2 -2
  67. package/dist/{cardano-network-id.vo-CTYe-Oix.js → cardano-network-id.vo-CeLJqmb_.js} +2 -2
  68. package/dist/{cardano-tx-id.vo-BMwemq5x.js → cardano-tx-id.vo-DJ70NC0-.js} +1 -1
  69. package/dist/{cardano-tx-id.vo-NY-gCOWJ.cjs → cardano-tx-id.vo-lnyO9XaW.cjs} +1 -1
  70. package/dist/cardano.cjs +31 -24
  71. package/dist/cardano.d.ts +27602 -8121
  72. package/dist/cardano.js +21 -13
  73. package/dist/client-Bw2foG5E.cjs +808 -0
  74. package/dist/const-BB3MccLt.js +153 -0
  75. package/dist/{const-BErUlcZw.cjs → const-BWBAzOmN.cjs} +1 -1
  76. package/dist/const-CSWmOyzn.cjs +42 -0
  77. package/dist/{const-Dy8Ctnpd.cjs → const-D3mCkwrM.cjs} +5 -5
  78. package/dist/const-DW7z3R5k.js +13 -0
  79. package/dist/{const-DeUA7zYl.js → const-DbuUHSzR.js} +5 -5
  80. package/dist/const-DgBzKfz6.cjs +31995 -0
  81. package/dist/{const-DVW6DGkZ.js → const-xGSNCtwQ.js} +1 -1
  82. package/dist/contract-BsIGhsYa.js +171 -0
  83. package/dist/contract-DD6CGnpB.cjs +189 -0
  84. package/dist/create-add-accounts-2mQA0ST2.js +102 -0
  85. package/dist/create-add-accounts-B6mR2NMn.cjs +114 -0
  86. package/dist/{delegation-tx-builder-CF0VunDW.cjs → delegation-tx-builder-Cp30jtj9.cjs} +9 -8
  87. package/dist/{delegation-tx-builder-C8LQxU2R.js → delegation-tx-builder-DUMikSTg.js} +9 -7
  88. package/dist/{deregistration-tx-builder-DcUXA3Ls.cjs → deregistration-tx-builder-B-ZeY-dR.cjs} +10 -9
  89. package/dist/{deregistration-tx-builder-BOBPP8m_.js → deregistration-tx-builder-CRLrK99U.js} +10 -8
  90. package/dist/device-commitment-hex.vo-BIUYUNz1.cjs +31 -0
  91. package/dist/device-commitment-hex.vo-D9FsYLn7.js +26 -0
  92. package/dist/device-key-BToCoS4D.js +2394 -0
  93. package/dist/device-key-D6euvxFi.cjs +2489 -0
  94. package/dist/device-readers-BHJeNR8I.js +3 -0
  95. package/dist/device-readers-Dw7uTNM5.cjs +167 -0
  96. package/dist/device-readers-b4g2j3QL.js +144 -0
  97. package/dist/device-readers-cxcJcWq5.cjs +7 -0
  98. package/dist/dist-B00GN41m.js +141 -0
  99. package/dist/dist-BA1xnF9O.cjs +4413 -0
  100. package/dist/dist-BmHOXLe8.cjs +3814 -0
  101. package/dist/dist-Br0OVXKt.cjs +535 -0
  102. package/dist/dist-C1JK9C1I.cjs +3452 -0
  103. package/dist/dist-DKEViNEI.cjs +1306 -0
  104. package/dist/dist-Dwqx184a.cjs +43175 -0
  105. package/dist/dist-MJof_Ky1.cjs +145 -0
  106. package/dist/dist-p84sVVJ9.cjs +1394 -0
  107. package/dist/{earn-rewards-tx-builder-BRlTueHS.js → earn-rewards-tx-builder-8G_rouIk.js} +9 -7
  108. package/dist/{earn-rewards-tx-builder-RgO0QUY8.cjs → earn-rewards-tx-builder-cOUNV58E.cjs} +9 -8
  109. package/dist/enc-key-circuits-0Dud78IB.js +13 -0
  110. package/dist/enc-key-circuits-yjPHbuo_.cjs +24 -0
  111. package/dist/english-BZ_ebp2-.cjs +2057 -0
  112. package/dist/envelopes-B3QCzo5p.js +2658 -0
  113. package/dist/envelopes-BdE1xlgz.cjs +2777 -0
  114. package/dist/errors-BA3b8aVu.cjs +584 -0
  115. package/dist/errors-pkQdxW-7.js +392 -0
  116. package/dist/experimental.cjs +6820 -0
  117. package/dist/experimental.d.ts +63552 -0
  118. package/dist/experimental.js +6670 -0
  119. package/dist/fees-6C2uEWFK.js +653 -0
  120. package/dist/fees-DtC71fOx.cjs +820 -0
  121. package/dist/gated-call-BrPjKolT.js +3 -0
  122. package/dist/gated-call-CcsuW9L5.js +691 -0
  123. package/dist/gated-call-DdDrxEq5.cjs +732 -0
  124. package/dist/gated-call-Dk7PazhG.cjs +4 -0
  125. package/dist/grant-rules-B7eDuD5G.cjs +5468 -0
  126. package/dist/grant-rules-qLrKUIR3.js +5217 -0
  127. package/dist/grant-status-CDmZpx32.js +296 -0
  128. package/dist/grant-status-CQtwjLsA.cjs +337 -0
  129. package/dist/grants-Bnb-3Hkv.cjs +16 -0
  130. package/dist/grants-CIb6nOV7.cjs +273 -0
  131. package/dist/grants-CYY0AquW.js +202 -0
  132. package/dist/grants-DOsFSotP.js +4 -0
  133. package/dist/{group-cardano-addresses-by-account-C-1GHUu8.cjs → group-cardano-addresses-by-account-BGOtPV-Y.cjs} +4 -40
  134. package/dist/{group-cardano-addresses-by-account-p4dXmCoj.js → group-cardano-addresses-by-account-TqvESg9x.js} +6 -37
  135. package/dist/{guarded-transaction-signer-DZSGHp1K.js → guarded-transaction-signer-BbVDE9Nn.js} +12 -18
  136. package/dist/{guarded-transaction-signer-BLSezbfV.cjs → guarded-transaction-signer-DTLjAkif.cjs} +26 -26
  137. package/dist/hex-BVtOKJki.cjs +263 -0
  138. package/dist/hex-CGYJPK_Z.js +192 -0
  139. package/dist/http-client-B7_kBTYn.js +155 -0
  140. package/dist/http-client-DYQ_7Rdf.cjs +167 -0
  141. package/dist/identity-DxPhxkZs.js +239 -0
  142. package/dist/identity-y41Yle03.cjs +274 -0
  143. package/dist/in-memory-wallet-integration-5BKiAvPT.js +20861 -0
  144. package/dist/{in-memory-wallet-integration-CUTa68ET.js → in-memory-wallet-integration-BCOqDgbt.js} +10 -107
  145. package/dist/in-memory-wallet-integration-Bi8I9Dso.js +128 -0
  146. package/dist/in-memory-wallet-integration-Bsl2ONua.cjs +239 -0
  147. package/dist/in-memory-wallet-integration-DZ0CAyvY.cjs +20865 -0
  148. package/dist/{in-memory-wallet-integration-Dw_S7amX.cjs → in-memory-wallet-integration-DsFm8gLk.cjs} +21 -112
  149. package/dist/{in-memory-wallet-integration-Z4Bp_DTv.cjs → in-memory-wallet-integration-aW_SF-go.cjs} +8 -5
  150. package/dist/{in-memory-wallet-integration-B6cbAlvD.js → in-memory-wallet-integration-mIEc8EfR.js} +9 -5
  151. package/dist/index.cjs +95 -58
  152. package/dist/index.d.ts +45152 -13448
  153. package/dist/index.js +55 -28
  154. package/dist/{init-CVi8J0zk.cjs → init-5SfWgCYD.cjs} +3 -3
  155. package/dist/{init-Ci7aqWCf2.cjs → init-8NVWbo302.cjs} +2 -2
  156. package/dist/init-B-C7n6u6.js +5 -0
  157. package/dist/{init-BFMWRf-L.js → init-B-ppfGO-.js} +1 -1
  158. package/dist/{init-IiR093Jw.cjs → init-B2OUhY5T.cjs} +2 -2
  159. package/dist/{init-DXnus199.cjs → init-B6Eg_o6G.cjs} +5 -5
  160. package/dist/{init-4hDl5bpr.js → init-BAWMHL1k.js} +2 -2
  161. package/dist/init-BC2CZZOu2.cjs +2002 -0
  162. package/dist/{init-a228hXnS.cjs → init-BF-a2p6E.cjs} +65 -73
  163. package/dist/{init-fFirX8OY.cjs → init-BFxlQAD8.cjs} +1 -1
  164. package/dist/init-BJE1ry0O.js +17 -0
  165. package/dist/{init-BVnI4z2J.js → init-BPKBVOHU.js} +2 -2
  166. package/dist/{init-bdqZBd-o.js → init-BSP_xcpB.js} +2 -2
  167. package/dist/{init-CFNOn3lo.js → init-BSd7mznK.js} +3 -3
  168. package/dist/{init-MjR4swi6.js → init-BUJTT0MN.js} +36 -43
  169. package/dist/init-BUpFzYsD.cjs +143 -0
  170. package/dist/{init-BvpYHyLH.cjs → init-BZ-WyAIL.cjs} +3 -3
  171. package/dist/init-BZdfdLX7.js +422 -0
  172. package/dist/{init-CJeOys1w.cjs → init-B_HWNXMD.cjs} +2 -2
  173. package/dist/init-BbIMt6xU.cjs +6 -0
  174. package/dist/{init-BYdN1aqE.cjs → init-BewG6swt.cjs} +2 -2
  175. package/dist/{init-BX0AZAVH2.js → init-Bilqsbng.js} +2 -2
  176. package/dist/{init-Tpn9VkFu.cjs → init-BpwlQ6wF.cjs} +1 -1
  177. package/dist/{init-D5-P0HXK.js → init-BtQOzUjX.js} +1 -1
  178. package/dist/{init-BvGz3qUd2.js → init-CCTscPaY2.js} +2 -2
  179. package/dist/{init-D4hPipCD.cjs → init-CH0yyBof.cjs} +1 -1
  180. package/dist/init-CaIkrXal.cjs +121 -0
  181. package/dist/init-CkZy4IMf.cjs +107 -0
  182. package/dist/{init-Drr2f_Pr.js → init-CmfcY7SV.js} +1 -1
  183. package/dist/{init-Kf3_OLv6.js → init-CnJAlks_.js} +1 -1
  184. package/dist/{init-Cdjt_z-b.cjs → init-CqqmtAIK.cjs} +4 -4
  185. package/dist/{init-Bb0avZeZ.js → init-Cu2znmIc.js} +5 -5
  186. package/dist/init-Cz5LAizN.js +2001 -0
  187. package/dist/init-D4WM3-Mn.cjs +18 -0
  188. package/dist/init-DMi2FGpf.cjs +424 -0
  189. package/dist/{init-lcaUSOOG.js → init-DPTJohPd.js} +1 -1
  190. package/dist/{init-BTYLMF9F2.cjs → init-DexLSprL2.cjs} +258 -61
  191. package/dist/init-DfKPgD21.js +106 -0
  192. package/dist/init-DgzRsI-C.js +141 -0
  193. package/dist/init-Dj4Cn7-P.js +4789 -0
  194. package/dist/init-DktAnYI0.cjs +2354 -0
  195. package/dist/{init-DFwhgert.cjs → init-DmyuM9Lo.cjs} +1 -1
  196. package/dist/{init-CX_zLXc6.js → init-IBnizp1U.js} +5 -5
  197. package/dist/init-MDKB6tGI2.cjs +4790 -0
  198. package/dist/{init-DbZ5byj42.js → init-TbB38KNt2.js} +258 -60
  199. package/dist/init-X6m_cqDy.js +2353 -0
  200. package/dist/{init-DvVgKCaP2.cjs → init-bzvl1JhF.cjs} +2 -2
  201. package/dist/{init-BgrY29gW.js → init-dsYkC_0B.js} +4 -4
  202. package/dist/{init-B5BsI3DR.cjs → init-kvn5FlPS.cjs} +7 -7
  203. package/dist/init-vfy9DW_E.js +119 -0
  204. package/dist/{init-BE_6Jyc4.js → init-w7xl6LsP.js} +3 -3
  205. package/dist/{init-DEsWVyn5.cjs → init-wgiBUmyW.cjs} +1 -1
  206. package/dist/{is-retriable-error-DWv_ob-f.js → is-retriable-error-CmFR20pe.js} +1 -1
  207. package/dist/{is-retriable-error-Dtb4JGjd.cjs → is-retriable-error-D2yo0_lS.cjs} +1 -1
  208. package/dist/jubjub-authoriser-A2c8vmkN.js +84 -0
  209. package/dist/jubjub-authoriser-D3ZDgzcF.cjs +85 -0
  210. package/dist/key-source-CcLTx8HK.js +2761 -0
  211. package/dist/key-source-D2tTAag-.cjs +806 -0
  212. package/dist/{key-value-store-DTX1quRS.js → key-value-store-DZcNDB3n.js} +1 -1
  213. package/dist/{key-value-store-B-XRIwaM.cjs → key-value-store-Htj4RgMe.cjs} +1 -1
  214. package/dist/keyDerivation-DcKRUCVh.cjs +274 -0
  215. package/dist/keyDerivation-QGesIMbS.js +4077 -0
  216. package/dist/{lace-context-FpU3iG3f.cjs → lace-context-BN0b_ury.cjs} +4 -4
  217. package/dist/{lace-context-BQvvxVLm.js → lace-context-DMRJ87Vg.js} +4 -4
  218. package/dist/lib-BC-62Byh.cjs +2359 -0
  219. package/dist/lib-JYqcAX0c.js +2354 -0
  220. package/dist/midnight-account-id.vo--Vcx34Xk.cjs +10 -0
  221. package/dist/midnight-account-id.vo-BuB8fiVO.js +5 -0
  222. package/dist/midnight-engine-B7D2hbHo.js +5 -0
  223. package/dist/midnight-engine-D5ikN_5F.cjs +6 -0
  224. package/dist/midnight-wallet-BOdFD6SX.cjs +24 -0
  225. package/dist/midnight-wallet-CAqZrNVe.js +18 -0
  226. package/dist/midnight.cjs +1412 -0
  227. package/dist/midnight.d.ts +28609 -0
  228. package/dist/midnight.js +1355 -0
  229. package/dist/modules-cardano-BiL9hoM3.js +996 -0
  230. package/dist/modules-cardano-UeXks3sd.cjs +1109 -0
  231. package/dist/node-relay-BOuvdZvC.cjs +49 -0
  232. package/dist/node-relay-CLtc5n1v.js +48 -0
  233. package/dist/outputs-5qdW8s-f.js +196 -0
  234. package/dist/outputs-BEM1GPMf.cjs +339 -0
  235. package/dist/{SodiumBip32Ed25519-BQUcrQWX.cjs → pbkdf2-B1veireP.cjs} +6 -411
  236. package/dist/pending-operation-CfTUNQVD.cjs +26 -0
  237. package/dist/pending-operation-Ljijb1Uh.js +21 -0
  238. package/dist/providers-1on_fwJO.cjs +364 -0
  239. package/dist/providers-C1MsxfMA.js +341 -0
  240. package/dist/redacted-4SJPqt-G.js +81 -0
  241. package/dist/redacted-DwxIDdIF.cjs +86 -0
  242. package/dist/{reselect-DPML1uFN.cjs → reselect-kP4DaAII.cjs} +1 -1
  243. package/dist/{retry-config-oNtfdyrG.cjs → retry-config-BGv5q5QM.cjs} +1 -1
  244. package/dist/{retry-config-VdbuqBsI.js → retry-config-Bu5Yn5ua.js} +1 -1
  245. package/dist/safe-buffer-CqGpSFCQ.js +43 -0
  246. package/dist/safe-buffer-DbXbwhUQ.cjs +48 -0
  247. package/dist/sdk-1SRu8Ype.cjs +1445 -0
  248. package/dist/sdk-BneJm7ey.js +1249 -0
  249. package/dist/sdk-init-9TG1ZvHF.cjs +3795 -0
  250. package/dist/sdk-init-Ce3mD-8F.js +1047 -0
  251. package/dist/secret-box-CSmRp6Tt.js +3777 -0
  252. package/dist/secret-box-ZfbYwBgS.cjs +6970 -0
  253. package/dist/send-proof-progress-DtAcrMP6.cjs +33 -0
  254. package/dist/send-proof-progress-Dx2cUz1B.js +22 -0
  255. package/dist/sha2-DaRJZOjk.cjs +390 -0
  256. package/dist/sha2-c4sB6peD.js +378 -0
  257. package/dist/side-effects-C3BhLrdP.js +768 -0
  258. package/dist/side-effects-DG0R-KFc.cjs +804 -0
  259. package/dist/sign-bitcoin-transaction-with-seed-C7vq9om8.js +147 -0
  260. package/dist/sign-bitcoin-transaction-with-seed-Ds1dwzan.cjs +158 -0
  261. package/dist/signer--2I6poMD.js +2 -0
  262. package/dist/signer-CX21Ups_.cjs +121 -0
  263. package/dist/signer-Cnn9q9oY.js +92 -0
  264. package/dist/signer-DbSxjk0F.cjs +7 -0
  265. package/dist/signer-factory-B5oFuUZ-.cjs +130 -0
  266. package/dist/signer-factory-BAt8FPNc.cjs +281 -0
  267. package/dist/signer-factory-BGE4nL4k.js +129 -0
  268. package/dist/signer-factory-C4pgsiJi.js +281 -0
  269. package/dist/{signer-factory-DySc1wRX.cjs → signer-factory-D95jQIPV.cjs} +9 -6
  270. package/dist/{signer-factory-D4HrwFPl.js → signer-factory-PrpsGX-8.js} +10 -6
  271. package/dist/{slice-BZTQgYSs.js → slice-B-xJcuT1.js} +4 -4
  272. package/dist/slice-B4QOYaOG.cjs +105 -0
  273. package/dist/{slice-CtIMw2YT.cjs → slice-B9QKuhi0.cjs} +3 -3
  274. package/dist/slice-BKnGkAkd.cjs +9031 -0
  275. package/dist/{slice-Bhwmqn1p.cjs → slice-Bf4enJKZ.cjs} +8 -8
  276. package/dist/{slice-DaNVz7_l.js → slice-ByNWnxKS.js} +8 -8
  277. package/dist/{slice-C2UDQrdt.js → slice-C1zOeseG.js} +449 -355
  278. package/dist/{slice-DFLyKRm5.cjs → slice-C4toRM6A.cjs} +2 -2
  279. package/dist/{slice-Cx4dULDA.cjs → slice-C8YVv4Qn.cjs} +1 -1
  280. package/dist/{slice-jnpOgiSZ.cjs → slice-CaMfviYu.cjs} +3 -3
  281. package/dist/{slice-DFvrwUur.js → slice-CgeRsYRg.js} +6 -6
  282. package/dist/slice-Cwt8jShq.js +9013 -0
  283. package/dist/{slice-zNEspZND.js → slice-D0VzpMbY.js} +2 -2
  284. package/dist/slice-D14F78Ca.js +87 -0
  285. package/dist/{slice-F6A1YKOF.cjs → slice-DLflttAu.cjs} +479 -366
  286. package/dist/{slice-C96EdeY1.js → slice-DcO-iNz2.js} +1 -1
  287. package/dist/{slice-C19quNWM.cjs → slice-DimtxfAT.cjs} +2 -2
  288. package/dist/{slice-KiNoGwD9.js → slice-DlTEqIoI.js} +1 -1
  289. package/dist/{slice-ws8PccRX.js → slice-Dn0WojD7.js} +3 -3
  290. package/dist/{slice-BLSxLmie.cjs → slice-Dongunf7.cjs} +4 -4
  291. package/dist/{slice-B6vPum19.js → slice-DpufJAjJ.js} +2 -2
  292. package/dist/{slice-exhhmucR.cjs → slice-DtitVc9L.cjs} +7 -7
  293. package/dist/{slice-Bjj2t2ut.cjs → slice-WMMMc1Xv.cjs} +2 -2
  294. package/dist/slice-a8VuIqzS.cjs +378 -0
  295. package/dist/slice-bRASyM-m.js +354 -0
  296. package/dist/{slice-CBFrgHSH.js → slice-hNyKbDry.js} +3 -3
  297. package/dist/{InMemoryKeyAgent-pyB2gA-N.cjs → src-BayYMIjw.cjs} +20 -8228
  298. package/dist/{InMemoryKeyAgent-D-3HejxN.js → src-CgINPlSx.js} +29 -4811
  299. package/dist/store-AUlTfcI_.js +37 -0
  300. package/dist/store-C7AneHEY.cjs +66 -0
  301. package/dist/submit-BuBCVi-l.cjs +87 -0
  302. package/dist/submit-D37lxFrK.js +70 -0
  303. package/dist/submit-bitcoin-tx-DFLnhidO.js +983 -0
  304. package/dist/submit-bitcoin-tx-sih2hSfb.cjs +1049 -0
  305. package/dist/{subtractValueQuantities-DfZg6oiG.js → subtractValueQuantities-BuDJVxq6.js} +3 -22
  306. package/dist/{subtractValueQuantities-C8qDTtgH.cjs → subtractValueQuantities-CqR606HV.cjs} +2 -32
  307. package/dist/{sync-operation-utils-BrQyWFS_.cjs → sync-operation-utils--Z_IQfyW.cjs} +0 -66
  308. package/dist/{sync-operation-utils-CAaCGvEN.js → sync-operation-utils-BimBpvI3.js} +1 -37
  309. package/dist/token-color.vo-CItgoOjw.js +26 -0
  310. package/dist/token-color.vo-Ca4hUXfh.cjs +37 -0
  311. package/dist/token-id-mapper-BVau2RXa.js +16 -0
  312. package/dist/token-id-mapper-CSeLzM4o.cjs +18 -0
  313. package/dist/{token-id-mapper-pDaTxpw2.js → token-id-mapper-ClBeIdJR.js} +2 -2
  314. package/dist/{token-id-mapper-DYcd8hhQ.cjs → token-id-mapper-D0wFdbOy.cjs} +2 -2
  315. package/dist/types-BhzypKMS.cjs +15 -0
  316. package/dist/types-DTE1ctDB.js +10 -0
  317. package/dist/types-DXSxXGz0.js +12 -0
  318. package/dist/types-Dls6Z5gV.cjs +23 -0
  319. package/dist/{util-P4PX2muj.cjs → util-D1YlKzrc.cjs} +2 -2
  320. package/dist/{util-CQSJU0wT.js → util-DHxtzUzY.js} +2 -2
  321. package/dist/{utils-Bv4OHT4S.cjs → utils-DYf4iZKX.cjs} +7 -1
  322. package/dist/{utils-DrtzChYN.js → utils-DcnoETEP.js} +2 -2
  323. package/dist/utils-Du0YXRcU.cjs +112 -0
  324. package/dist/utils-fF_rnZe3.js +65 -0
  325. package/dist/v8Signatures-ClGpA8mS.cjs +71 -0
  326. package/dist/{vote-delegation-tx-builder-69gOEkCB.cjs → vote-delegation-tx-builder-BjZxCOd3.cjs} +9 -8
  327. package/dist/{vote-delegation-tx-builder-BRJ_pf-c.js → vote-delegation-tx-builder-DRJwPXkD.js} +9 -7
  328. package/dist/watch-FGE4B_Ge.js +13056 -0
  329. package/dist/watch-imlsRZDp.cjs +52207 -0
  330. package/package.json +95 -3
  331. package/dist/Address-4KjeDt_x.cjs +0 -17269
  332. package/dist/Address-_VPkf7Xh.js +0 -17101
  333. package/dist/account-guards.stable-BKyYPj4z.cjs +0 -10
  334. package/dist/account-guards.stable-BdmQ43vC.js +0 -5
  335. package/dist/init-BR9ZIbED.cjs +0 -378
  336. package/dist/init-B_k1RUN_.cjs +0 -21
  337. package/dist/init-Bs3b5ZQH.js +0 -378
  338. package/dist/init-ChfcrHgG2.cjs +0 -4354
  339. package/dist/init-D1uUMMpG.js +0 -19
  340. package/dist/init-DV1OSZiK.js +0 -4352
  341. package/dist/modules-cardano-BINzpXpk.js +0 -5454
  342. package/dist/modules-cardano-Dt8OwoQb.cjs +0 -5640
  343. package/dist/slice-Caf98m0d2.js +0 -107
  344. package/dist/slice-PM6llajQ2.cjs +0 -125
  345. /package/dist/{BigIntMath-CoJWXt1h.cjs → BigIntMath-CBciEQn2.cjs} +0 -0
  346. /package/dist/{BigIntMath-BWUJOsOW.js → BigIntMath-X3EniYDo.js} +0 -0
  347. /package/dist/{ChainId-sdLmlIRk.cjs → ChainId-CNPSU9nn.cjs} +0 -0
  348. /package/dist/{ChainId-CKbm87yQ.js → ChainId-CeoG8Sov.js} +0 -0
  349. /package/dist/{_polyfill-node.process-4fnlkbBi.cjs → _polyfill-node.process-5UxyjoHG.cjs} +0 -0
  350. /package/dist/{account-id.vo-Xpgnu-av.cjs → account-id.vo-DYZBZQsz.cjs} +0 -0
  351. /package/dist/{account-id.vo-DP0BtOoF.js → account-id.vo-KDTWJ-W5.js} +0 -0
  352. /package/dist/{actions-BNagEO6m.cjs → actions-BnHFVSr_.cjs} +0 -0
  353. /package/dist/{actions-BWTyAr7B.js → actions-Cwj0ApZf.js} +0 -0
  354. /package/dist/{asyncoption-po7-RiA5.cjs → asyncoption-CYcZNBRM.cjs} +0 -0
  355. /package/dist/{asyncoption-CzIVH5Y1.js → asyncoption-DZQGfznq.js} +0 -0
  356. /package/dist/{bignum.vo-DhhZ9HP1.js → bignum.vo-Co6tMH2q.js} +0 -0
  357. /package/dist/{bignum.vo-CpkrIXjH.cjs → bignum.vo-Du-bpvar.cjs} +0 -0
  358. /package/dist/{blockchain-network-id.vo-CbgrAY_K.js → blockchain-network-id.vo-C6Jowh8t.js} +0 -0
  359. /package/dist/{blockchain-network-id.vo-5iC6Kffo.cjs → blockchain-network-id.vo-DEQ14dYj.cjs} +0 -0
  360. /package/dist/{composite-signer-factory-DABpCe1_.js → composite-signer-factory-D9RWY-1V.js} +0 -0
  361. /package/dist/{composite-signer-factory-BizuNPP7.cjs → composite-signer-factory-v4Pxn8bA.cjs} +0 -0
  362. /package/dist/{error-ggOihIfv.cjs → error-B6wj9nPv.cjs} +0 -0
  363. /package/dist/{error-DHKO2iS4.js → error-CvEYL98P.js} +0 -0
  364. /package/dist/{esm-browser-DnXNvpcn.cjs → esm-browser-CZbMeVod.cjs} +0 -0
  365. /package/dist/{esm-browser-BBVQuyQv.js → esm-browser-DpAD_RKv.js} +0 -0
  366. /package/dist/{feature-flag-key.vo-DoGK5Bfh.js → feature-flag-key.vo-9reURsOQ.js} +0 -0
  367. /package/dist/{feature-flag-key.vo-CP1Z9s8e.cjs → feature-flag-key.vo-KTIdnzYX.cjs} +0 -0
  368. /package/dist/{first-state-of-status-Bx4-QQ5m.cjs → first-state-of-status-9ICeDNSa.cjs} +0 -0
  369. /package/dist/{first-state-of-status-D7XzEuSa.js → first-state-of-status-BscbKj_t.js} +0 -0
  370. /package/dist/{init-4319psUJ.cjs → init-BT67pd9x.cjs} +0 -0
  371. /package/dist/{init-AFUM1TSg.js → init-CHk1fvJ2.js} +0 -0
  372. /package/dist/{init-ZX90nEJe2.js → init-DIyNx6DZ.js} +0 -0
  373. /package/dist/{init-CTQ2g6Xt.js → init-DtxxFaCx.js} +0 -0
  374. /package/dist/{init-Dt1Xifg_2.cjs → init-J8QobR93.cjs} +0 -0
  375. /package/dist/{init-BNewLCqw.cjs → init-xzZPlQwB.cjs} +0 -0
  376. /package/dist/{is-redux-persist-state-DxJSsvxB.cjs → is-redux-persist-state-C5luvPEH.cjs} +0 -0
  377. /package/dist/{is-redux-persist-state-Bl2n4VMr.js → is-redux-persist-state-CjcqyCoh.js} +0 -0
  378. /package/dist/{isNotNil-CZxBMfL5.js → isNotNil-Be7gCY0m.js} +0 -0
  379. /package/dist/{isNotNil-C_SO1tcC.cjs → isNotNil-CrYIUFry.cjs} +0 -0
  380. /package/dist/{logging-BvMDKgl0.js → logging-BAMMfn5j.js} +0 -0
  381. /package/dist/{logging-Bh9ikph3.cjs → logging-CbxgIX9V.cjs} +0 -0
  382. /package/dist/{metadatum-B-sxBnSY.cjs → metadatum-BGvFqGPt.cjs} +0 -0
  383. /package/dist/{metadatum-Ego4jVas.js → metadatum-BVocMYy_.js} +0 -0
  384. /package/dist/{repo-slice-BzZQUTj8.cjs → repo-slice-BB_W-6OL.cjs} +0 -0
  385. /package/dist/{repo-slice-vCcQJotS.js → repo-slice-BQlssw9M.js} +0 -0
  386. /package/dist/{reselect-BPkMzw3k.js → reselect-JIgawvPe.js} +0 -0
  387. /package/dist/{serializable-BxFUShKY.js → serializable-F7OtYl8d.js} +0 -0
  388. /package/dist/{serializable-DWgkHhv_.cjs → serializable-n3UoxbZc.cjs} +0 -0
  389. /package/dist/{slice-DY-DNtSi.js → slice-5dGBAz6w.js} +0 -0
  390. /package/dist/{slice-BEFoeqgr.cjs → slice-BzJgg9FS.cjs} +0 -0
  391. /package/dist/{src-CPmX4KUh.cjs → src-CeBNkonz.cjs} +0 -0
  392. /package/dist/{src-XOZXPKxe.js → src-Cv1ifqbe.js} +0 -0
  393. /package/dist/{time-CQPt4FdU.js → time-ByoKevdZ.js} +0 -0
  394. /package/dist/{time-Blvoyh9G.cjs → time-qD7edGU0.cjs} +0 -0
  395. /package/dist/{time.vo-Xln4yGBU.js → time.vo-C17-tYq3.js} +0 -0
  396. /package/dist/{time.vo-rwWwJzmP.cjs → time.vo-TmYE-_Y2.cjs} +0 -0
  397. /package/dist/{toEmpty-CzmoZVLN.cjs → toEmpty-Db6V94Mf.cjs} +0 -0
  398. /package/dist/{toEmpty-DzLd-ZCi.js → toEmpty-Djj-QbpI.js} +0 -0
  399. /package/dist/{token-id.vo-l8fuSpem.cjs → token-id.vo-CZ622zcZ.cjs} +0 -0
  400. /package/dist/{token-id.vo-DMKSaMlc.js → token-id.vo-IDI9C_Qm.js} +0 -0
  401. /package/dist/{types-B61DQoFW.js → types-By-XeXWg.js} +0 -0
  402. /package/dist/{types-CUC-Kcqh.cjs → types-Cn6WlQV6.cjs} +0 -0
  403. /package/dist/{util-BV3iGOrz.cjs → util-Cp1h58uD.cjs} +0 -0
  404. /package/dist/{util-BsQKLorV.js → util-DHppXj7U.js} +0 -0
  405. /package/dist/{util-selector-CKIyoAOz.js → util-selector-BWmHpo92.js} +0 -0
  406. /package/dist/{util-selector-C9H5RsNw.cjs → util-selector-glXkO-jR.cjs} +0 -0
  407. /package/dist/{while-active-CNXeLxre.js → while-active-CDBnUlQA.js} +0 -0
  408. /package/dist/{while-active-BsDWSNrO.cjs → while-active-I2TlHtm7.cjs} +0 -0
@@ -0,0 +1,2553 @@
1
+ const require_chunk = require("./chunk-9hOWP6kD.cjs");
2
+ const require__polyfill_buffer_patch = require("./_polyfill-buffer-patch-BycQkEkK.cjs");
3
+ //#region ../../node_modules/bn.js/lib/bn.js
4
+ var require_bn = /* @__PURE__ */ require_chunk.__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_chunk.__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
+ });