{"version":3,"sources":["../node_modules/tweetnacl/nacl-fast.js","../utils/builders/messageBuilder.ts","../utils/constants/operations.ts","../utils/builders/cellBuilder.ts","../utils/crypto/encoding.ts","../utils/crypto/hashing.ts","../utils/crypto/signature.ts","../utils/serializers/messageSerializer.ts","../utils/serializers/signerSerializer.ts","../utils/serializers/gasInfoSerializer.ts","../utils/constants/costs.ts","../utils/constants/error.ts","../utils/constants/size.ts","../utils/constants/states.ts","../utils/jetton/JettonWallet.ts","../utils/jetton/JettonMinter.ts","../utils/jetton/JettonConstants.ts","../utils/jetton/utils.ts","../utils/types/index.ts"],"sourcesContent":["(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n  var i, r = new Float64Array(16);\n  if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n  return r;\n};\n\n//  Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n    gf1 = gf([1]),\n    _121665 = gf([0xdb41, 1]),\n    D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n    D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n    X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n    Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n    I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n  x[i]   = (h >> 24) & 0xff;\n  x[i+1] = (h >> 16) & 0xff;\n  x[i+2] = (h >>  8) & 0xff;\n  x[i+3] = h & 0xff;\n  x[i+4] = (l >> 24)  & 0xff;\n  x[i+5] = (l >> 16)  & 0xff;\n  x[i+6] = (l >>  8)  & 0xff;\n  x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n  var i,d = 0;\n  for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n  return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n  return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n  return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n   x0 =  x0 +  j0 | 0;\n   x1 =  x1 +  j1 | 0;\n   x2 =  x2 +  j2 | 0;\n   x3 =  x3 +  j3 | 0;\n   x4 =  x4 +  j4 | 0;\n   x5 =  x5 +  j5 | 0;\n   x6 =  x6 +  j6 | 0;\n   x7 =  x7 +  j7 | 0;\n   x8 =  x8 +  j8 | 0;\n   x9 =  x9 +  j9 | 0;\n  x10 = x10 + j10 | 0;\n  x11 = x11 + j11 | 0;\n  x12 = x12 + j12 | 0;\n  x13 = x13 + j13 | 0;\n  x14 = x14 + j14 | 0;\n  x15 = x15 + j15 | 0;\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x1 >>>  0 & 0xff;\n  o[ 5] = x1 >>>  8 & 0xff;\n  o[ 6] = x1 >>> 16 & 0xff;\n  o[ 7] = x1 >>> 24 & 0xff;\n\n  o[ 8] = x2 >>>  0 & 0xff;\n  o[ 9] = x2 >>>  8 & 0xff;\n  o[10] = x2 >>> 16 & 0xff;\n  o[11] = x2 >>> 24 & 0xff;\n\n  o[12] = x3 >>>  0 & 0xff;\n  o[13] = x3 >>>  8 & 0xff;\n  o[14] = x3 >>> 16 & 0xff;\n  o[15] = x3 >>> 24 & 0xff;\n\n  o[16] = x4 >>>  0 & 0xff;\n  o[17] = x4 >>>  8 & 0xff;\n  o[18] = x4 >>> 16 & 0xff;\n  o[19] = x4 >>> 24 & 0xff;\n\n  o[20] = x5 >>>  0 & 0xff;\n  o[21] = x5 >>>  8 & 0xff;\n  o[22] = x5 >>> 16 & 0xff;\n  o[23] = x5 >>> 24 & 0xff;\n\n  o[24] = x6 >>>  0 & 0xff;\n  o[25] = x6 >>>  8 & 0xff;\n  o[26] = x6 >>> 16 & 0xff;\n  o[27] = x6 >>> 24 & 0xff;\n\n  o[28] = x7 >>>  0 & 0xff;\n  o[29] = x7 >>>  8 & 0xff;\n  o[30] = x7 >>> 16 & 0xff;\n  o[31] = x7 >>> 24 & 0xff;\n\n  o[32] = x8 >>>  0 & 0xff;\n  o[33] = x8 >>>  8 & 0xff;\n  o[34] = x8 >>> 16 & 0xff;\n  o[35] = x8 >>> 24 & 0xff;\n\n  o[36] = x9 >>>  0 & 0xff;\n  o[37] = x9 >>>  8 & 0xff;\n  o[38] = x9 >>> 16 & 0xff;\n  o[39] = x9 >>> 24 & 0xff;\n\n  o[40] = x10 >>>  0 & 0xff;\n  o[41] = x10 >>>  8 & 0xff;\n  o[42] = x10 >>> 16 & 0xff;\n  o[43] = x10 >>> 24 & 0xff;\n\n  o[44] = x11 >>>  0 & 0xff;\n  o[45] = x11 >>>  8 & 0xff;\n  o[46] = x11 >>> 16 & 0xff;\n  o[47] = x11 >>> 24 & 0xff;\n\n  o[48] = x12 >>>  0 & 0xff;\n  o[49] = x12 >>>  8 & 0xff;\n  o[50] = x12 >>> 16 & 0xff;\n  o[51] = x12 >>> 24 & 0xff;\n\n  o[52] = x13 >>>  0 & 0xff;\n  o[53] = x13 >>>  8 & 0xff;\n  o[54] = x13 >>> 16 & 0xff;\n  o[55] = x13 >>> 24 & 0xff;\n\n  o[56] = x14 >>>  0 & 0xff;\n  o[57] = x14 >>>  8 & 0xff;\n  o[58] = x14 >>> 16 & 0xff;\n  o[59] = x14 >>> 24 & 0xff;\n\n  o[60] = x15 >>>  0 & 0xff;\n  o[61] = x15 >>>  8 & 0xff;\n  o[62] = x15 >>> 16 & 0xff;\n  o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n  var j0  = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n      j1  = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n      j2  = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n      j3  = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n      j4  = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n      j5  = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n      j6  = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n      j7  = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n      j8  = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n      j9  = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n      j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n      j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n      j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n      j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n      j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n      j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n  var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n      x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n      x15 = j15, u;\n\n  for (var i = 0; i < 20; i += 2) {\n    u = x0 + x12 | 0;\n    x4 ^= u<<7 | u>>>(32-7);\n    u = x4 + x0 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x4 | 0;\n    x12 ^= u<<13 | u>>>(32-13);\n    u = x12 + x8 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x1 | 0;\n    x9 ^= u<<7 | u>>>(32-7);\n    u = x9 + x5 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x9 | 0;\n    x1 ^= u<<13 | u>>>(32-13);\n    u = x1 + x13 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x6 | 0;\n    x14 ^= u<<7 | u>>>(32-7);\n    u = x14 + x10 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x14 | 0;\n    x6 ^= u<<13 | u>>>(32-13);\n    u = x6 + x2 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x11 | 0;\n    x3 ^= u<<7 | u>>>(32-7);\n    u = x3 + x15 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x3 | 0;\n    x11 ^= u<<13 | u>>>(32-13);\n    u = x11 + x7 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n\n    u = x0 + x3 | 0;\n    x1 ^= u<<7 | u>>>(32-7);\n    u = x1 + x0 | 0;\n    x2 ^= u<<9 | u>>>(32-9);\n    u = x2 + x1 | 0;\n    x3 ^= u<<13 | u>>>(32-13);\n    u = x3 + x2 | 0;\n    x0 ^= u<<18 | u>>>(32-18);\n\n    u = x5 + x4 | 0;\n    x6 ^= u<<7 | u>>>(32-7);\n    u = x6 + x5 | 0;\n    x7 ^= u<<9 | u>>>(32-9);\n    u = x7 + x6 | 0;\n    x4 ^= u<<13 | u>>>(32-13);\n    u = x4 + x7 | 0;\n    x5 ^= u<<18 | u>>>(32-18);\n\n    u = x10 + x9 | 0;\n    x11 ^= u<<7 | u>>>(32-7);\n    u = x11 + x10 | 0;\n    x8 ^= u<<9 | u>>>(32-9);\n    u = x8 + x11 | 0;\n    x9 ^= u<<13 | u>>>(32-13);\n    u = x9 + x8 | 0;\n    x10 ^= u<<18 | u>>>(32-18);\n\n    u = x15 + x14 | 0;\n    x12 ^= u<<7 | u>>>(32-7);\n    u = x12 + x15 | 0;\n    x13 ^= u<<9 | u>>>(32-9);\n    u = x13 + x12 | 0;\n    x14 ^= u<<13 | u>>>(32-13);\n    u = x14 + x13 | 0;\n    x15 ^= u<<18 | u>>>(32-18);\n  }\n\n  o[ 0] = x0 >>>  0 & 0xff;\n  o[ 1] = x0 >>>  8 & 0xff;\n  o[ 2] = x0 >>> 16 & 0xff;\n  o[ 3] = x0 >>> 24 & 0xff;\n\n  o[ 4] = x5 >>>  0 & 0xff;\n  o[ 5] = x5 >>>  8 & 0xff;\n  o[ 6] = x5 >>> 16 & 0xff;\n  o[ 7] = x5 >>> 24 & 0xff;\n\n  o[ 8] = x10 >>>  0 & 0xff;\n  o[ 9] = x10 >>>  8 & 0xff;\n  o[10] = x10 >>> 16 & 0xff;\n  o[11] = x10 >>> 24 & 0xff;\n\n  o[12] = x15 >>>  0 & 0xff;\n  o[13] = x15 >>>  8 & 0xff;\n  o[14] = x15 >>> 16 & 0xff;\n  o[15] = x15 >>> 24 & 0xff;\n\n  o[16] = x6 >>>  0 & 0xff;\n  o[17] = x6 >>>  8 & 0xff;\n  o[18] = x6 >>> 16 & 0xff;\n  o[19] = x6 >>> 24 & 0xff;\n\n  o[20] = x7 >>>  0 & 0xff;\n  o[21] = x7 >>>  8 & 0xff;\n  o[22] = x7 >>> 16 & 0xff;\n  o[23] = x7 >>> 24 & 0xff;\n\n  o[24] = x8 >>>  0 & 0xff;\n  o[25] = x8 >>>  8 & 0xff;\n  o[26] = x8 >>> 16 & 0xff;\n  o[27] = x8 >>> 24 & 0xff;\n\n  o[28] = x9 >>>  0 & 0xff;\n  o[29] = x9 >>>  8 & 0xff;\n  o[30] = x9 >>> 16 & 0xff;\n  o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n  core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n  core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n            // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n    mpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n  var z = new Uint8Array(16), x = new Uint8Array(64);\n  var u, i;\n  for (i = 0; i < 16; i++) z[i] = 0;\n  for (i = 0; i < 8; i++) z[i] = n[i];\n  while (b >= 64) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n    u = 1;\n    for (i = 8; i < 16; i++) {\n      u = u + (z[i] & 0xff) | 0;\n      z[i] = u & 0xff;\n      u >>>= 8;\n    }\n    b -= 64;\n    cpos += 64;\n  }\n  if (b > 0) {\n    crypto_core_salsa20(x,z,k,sigma);\n    for (i = 0; i < b; i++) c[cpos+i] = x[i];\n  }\n  return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n  var s = new Uint8Array(32);\n  crypto_core_hsalsa20(s,n,k,sigma);\n  var sn = new Uint8Array(8);\n  for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n  return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n  this.buffer = new Uint8Array(16);\n  this.r = new Uint16Array(10);\n  this.h = new Uint16Array(10);\n  this.pad = new Uint16Array(8);\n  this.leftover = 0;\n  this.fin = 0;\n\n  var t0, t1, t2, t3, t4, t5, t6, t7;\n\n  t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0                     ) & 0x1fff;\n  t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n  t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 <<  6)) & 0x1f03;\n  t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n  t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>>  4) | (t4 << 12)) & 0x00ff;\n  this.r[5] = ((t4 >>>  1)) & 0x1ffe;\n  t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n  t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 <<  5)) & 0x1f81;\n  t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n  this.r[9] = ((t7 >>>  5)) & 0x007f;\n\n  this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n  this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n  this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n  this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n  this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n  this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n  this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n  this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n  var hibit = this.fin ? 0 : (1 << 11);\n  var t0, t1, t2, t3, t4, t5, t6, t7, c;\n  var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n  var h0 = this.h[0],\n      h1 = this.h[1],\n      h2 = this.h[2],\n      h3 = this.h[3],\n      h4 = this.h[4],\n      h5 = this.h[5],\n      h6 = this.h[6],\n      h7 = this.h[7],\n      h8 = this.h[8],\n      h9 = this.h[9];\n\n  var r0 = this.r[0],\n      r1 = this.r[1],\n      r2 = this.r[2],\n      r3 = this.r[3],\n      r4 = this.r[4],\n      r5 = this.r[5],\n      r6 = this.r[6],\n      r7 = this.r[7],\n      r8 = this.r[8],\n      r9 = this.r[9];\n\n  while (bytes >= 16) {\n    t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0                     ) & 0x1fff;\n    t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 <<  3)) & 0x1fff;\n    t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 <<  6)) & 0x1fff;\n    t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>>  7) | (t3 <<  9)) & 0x1fff;\n    t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>>  4) | (t4 << 12)) & 0x1fff;\n    h5 += ((t4 >>>  1)) & 0x1fff;\n    t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 <<  2)) & 0x1fff;\n    t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 <<  5)) & 0x1fff;\n    t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>>  8) | (t7 <<  8)) & 0x1fff;\n    h9 += ((t7 >>> 5)) | hibit;\n\n    c = 0;\n\n    d0 = c;\n    d0 += h0 * r0;\n    d0 += h1 * (5 * r9);\n    d0 += h2 * (5 * r8);\n    d0 += h3 * (5 * r7);\n    d0 += h4 * (5 * r6);\n    c = (d0 >>> 13); d0 &= 0x1fff;\n    d0 += h5 * (5 * r5);\n    d0 += h6 * (5 * r4);\n    d0 += h7 * (5 * r3);\n    d0 += h8 * (5 * r2);\n    d0 += h9 * (5 * r1);\n    c += (d0 >>> 13); d0 &= 0x1fff;\n\n    d1 = c;\n    d1 += h0 * r1;\n    d1 += h1 * r0;\n    d1 += h2 * (5 * r9);\n    d1 += h3 * (5 * r8);\n    d1 += h4 * (5 * r7);\n    c = (d1 >>> 13); d1 &= 0x1fff;\n    d1 += h5 * (5 * r6);\n    d1 += h6 * (5 * r5);\n    d1 += h7 * (5 * r4);\n    d1 += h8 * (5 * r3);\n    d1 += h9 * (5 * r2);\n    c += (d1 >>> 13); d1 &= 0x1fff;\n\n    d2 = c;\n    d2 += h0 * r2;\n    d2 += h1 * r1;\n    d2 += h2 * r0;\n    d2 += h3 * (5 * r9);\n    d2 += h4 * (5 * r8);\n    c = (d2 >>> 13); d2 &= 0x1fff;\n    d2 += h5 * (5 * r7);\n    d2 += h6 * (5 * r6);\n    d2 += h7 * (5 * r5);\n    d2 += h8 * (5 * r4);\n    d2 += h9 * (5 * r3);\n    c += (d2 >>> 13); d2 &= 0x1fff;\n\n    d3 = c;\n    d3 += h0 * r3;\n    d3 += h1 * r2;\n    d3 += h2 * r1;\n    d3 += h3 * r0;\n    d3 += h4 * (5 * r9);\n    c = (d3 >>> 13); d3 &= 0x1fff;\n    d3 += h5 * (5 * r8);\n    d3 += h6 * (5 * r7);\n    d3 += h7 * (5 * r6);\n    d3 += h8 * (5 * r5);\n    d3 += h9 * (5 * r4);\n    c += (d3 >>> 13); d3 &= 0x1fff;\n\n    d4 = c;\n    d4 += h0 * r4;\n    d4 += h1 * r3;\n    d4 += h2 * r2;\n    d4 += h3 * r1;\n    d4 += h4 * r0;\n    c = (d4 >>> 13); d4 &= 0x1fff;\n    d4 += h5 * (5 * r9);\n    d4 += h6 * (5 * r8);\n    d4 += h7 * (5 * r7);\n    d4 += h8 * (5 * r6);\n    d4 += h9 * (5 * r5);\n    c += (d4 >>> 13); d4 &= 0x1fff;\n\n    d5 = c;\n    d5 += h0 * r5;\n    d5 += h1 * r4;\n    d5 += h2 * r3;\n    d5 += h3 * r2;\n    d5 += h4 * r1;\n    c = (d5 >>> 13); d5 &= 0x1fff;\n    d5 += h5 * r0;\n    d5 += h6 * (5 * r9);\n    d5 += h7 * (5 * r8);\n    d5 += h8 * (5 * r7);\n    d5 += h9 * (5 * r6);\n    c += (d5 >>> 13); d5 &= 0x1fff;\n\n    d6 = c;\n    d6 += h0 * r6;\n    d6 += h1 * r5;\n    d6 += h2 * r4;\n    d6 += h3 * r3;\n    d6 += h4 * r2;\n    c = (d6 >>> 13); d6 &= 0x1fff;\n    d6 += h5 * r1;\n    d6 += h6 * r0;\n    d6 += h7 * (5 * r9);\n    d6 += h8 * (5 * r8);\n    d6 += h9 * (5 * r7);\n    c += (d6 >>> 13); d6 &= 0x1fff;\n\n    d7 = c;\n    d7 += h0 * r7;\n    d7 += h1 * r6;\n    d7 += h2 * r5;\n    d7 += h3 * r4;\n    d7 += h4 * r3;\n    c = (d7 >>> 13); d7 &= 0x1fff;\n    d7 += h5 * r2;\n    d7 += h6 * r1;\n    d7 += h7 * r0;\n    d7 += h8 * (5 * r9);\n    d7 += h9 * (5 * r8);\n    c += (d7 >>> 13); d7 &= 0x1fff;\n\n    d8 = c;\n    d8 += h0 * r8;\n    d8 += h1 * r7;\n    d8 += h2 * r6;\n    d8 += h3 * r5;\n    d8 += h4 * r4;\n    c = (d8 >>> 13); d8 &= 0x1fff;\n    d8 += h5 * r3;\n    d8 += h6 * r2;\n    d8 += h7 * r1;\n    d8 += h8 * r0;\n    d8 += h9 * (5 * r9);\n    c += (d8 >>> 13); d8 &= 0x1fff;\n\n    d9 = c;\n    d9 += h0 * r9;\n    d9 += h1 * r8;\n    d9 += h2 * r7;\n    d9 += h3 * r6;\n    d9 += h4 * r5;\n    c = (d9 >>> 13); d9 &= 0x1fff;\n    d9 += h5 * r4;\n    d9 += h6 * r3;\n    d9 += h7 * r2;\n    d9 += h8 * r1;\n    d9 += h9 * r0;\n    c += (d9 >>> 13); d9 &= 0x1fff;\n\n    c = (((c << 2) + c)) | 0;\n    c = (c + d0) | 0;\n    d0 = c & 0x1fff;\n    c = (c >>> 13);\n    d1 += c;\n\n    h0 = d0;\n    h1 = d1;\n    h2 = d2;\n    h3 = d3;\n    h4 = d4;\n    h5 = d5;\n    h6 = d6;\n    h7 = d7;\n    h8 = d8;\n    h9 = d9;\n\n    mpos += 16;\n    bytes -= 16;\n  }\n  this.h[0] = h0;\n  this.h[1] = h1;\n  this.h[2] = h2;\n  this.h[3] = h3;\n  this.h[4] = h4;\n  this.h[5] = h5;\n  this.h[6] = h6;\n  this.h[7] = h7;\n  this.h[8] = h8;\n  this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n  var g = new Uint16Array(10);\n  var c, mask, f, i;\n\n  if (this.leftover) {\n    i = this.leftover;\n    this.buffer[i++] = 1;\n    for (; i < 16; i++) this.buffer[i] = 0;\n    this.fin = 1;\n    this.blocks(this.buffer, 0, 16);\n  }\n\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  for (i = 2; i < 10; i++) {\n    this.h[i] += c;\n    c = this.h[i] >>> 13;\n    this.h[i] &= 0x1fff;\n  }\n  this.h[0] += (c * 5);\n  c = this.h[0] >>> 13;\n  this.h[0] &= 0x1fff;\n  this.h[1] += c;\n  c = this.h[1] >>> 13;\n  this.h[1] &= 0x1fff;\n  this.h[2] += c;\n\n  g[0] = this.h[0] + 5;\n  c = g[0] >>> 13;\n  g[0] &= 0x1fff;\n  for (i = 1; i < 10; i++) {\n    g[i] = this.h[i] + c;\n    c = g[i] >>> 13;\n    g[i] &= 0x1fff;\n  }\n  g[9] -= (1 << 13);\n\n  mask = (c ^ 1) - 1;\n  for (i = 0; i < 10; i++) g[i] &= mask;\n  mask = ~mask;\n  for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n  this.h[0] = ((this.h[0]       ) | (this.h[1] << 13)                    ) & 0xffff;\n  this.h[1] = ((this.h[1] >>>  3) | (this.h[2] << 10)                    ) & 0xffff;\n  this.h[2] = ((this.h[2] >>>  6) | (this.h[3] <<  7)                    ) & 0xffff;\n  this.h[3] = ((this.h[3] >>>  9) | (this.h[4] <<  4)                    ) & 0xffff;\n  this.h[4] = ((this.h[4] >>> 12) | (this.h[5] <<  1) | (this.h[6] << 14)) & 0xffff;\n  this.h[5] = ((this.h[6] >>>  2) | (this.h[7] << 11)                    ) & 0xffff;\n  this.h[6] = ((this.h[7] >>>  5) | (this.h[8] <<  8)                    ) & 0xffff;\n  this.h[7] = ((this.h[8] >>>  8) | (this.h[9] <<  5)                    ) & 0xffff;\n\n  f = this.h[0] + this.pad[0];\n  this.h[0] = f & 0xffff;\n  for (i = 1; i < 8; i++) {\n    f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n    this.h[i] = f & 0xffff;\n  }\n\n  mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n  mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n  mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n  mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n  mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n  mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n  mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n  mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n  mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n  mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n  mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n  mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n  mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n  mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n  mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n  mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n  var i, want;\n\n  if (this.leftover) {\n    want = (16 - this.leftover);\n    if (want > bytes)\n      want = bytes;\n    for (i = 0; i < want; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    bytes -= want;\n    mpos += want;\n    this.leftover += want;\n    if (this.leftover < 16)\n      return;\n    this.blocks(this.buffer, 0, 16);\n    this.leftover = 0;\n  }\n\n  if (bytes >= 16) {\n    want = bytes - (bytes % 16);\n    this.blocks(m, mpos, want);\n    mpos += want;\n    bytes -= want;\n  }\n\n  if (bytes) {\n    for (i = 0; i < bytes; i++)\n      this.buffer[this.leftover + i] = m[mpos+i];\n    this.leftover += bytes;\n  }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n  var s = new poly1305(k);\n  s.update(m, mpos, n);\n  s.finish(out, outpos);\n  return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n  var x = new Uint8Array(16);\n  crypto_onetimeauth(x,0,m,mpos,n,k);\n  return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n  var i;\n  if (d < 32) return -1;\n  crypto_stream_xor(c,0,m,0,d,n,k);\n  crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n  for (i = 0; i < 16; i++) c[i] = 0;\n  return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n  var i;\n  var x = new Uint8Array(32);\n  if (d < 32) return -1;\n  crypto_stream(x,0,32,n,k);\n  if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n  crypto_stream_xor(m,0,c,0,d,n,k);\n  for (i = 0; i < 32; i++) m[i] = 0;\n  return 0;\n}\n\nfunction set25519(r, a) {\n  var i;\n  for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n  var i, v, c = 1;\n  for (i = 0; i < 16; i++) {\n    v = o[i] + c + 65535;\n    c = Math.floor(v / 65536);\n    o[i] = v - c * 65536;\n  }\n  o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n  var t, c = ~(b-1);\n  for (var i = 0; i < 16; i++) {\n    t = c & (p[i] ^ q[i]);\n    p[i] ^= t;\n    q[i] ^= t;\n  }\n}\n\nfunction pack25519(o, n) {\n  var i, j, b;\n  var m = gf(), t = gf();\n  for (i = 0; i < 16; i++) t[i] = n[i];\n  car25519(t);\n  car25519(t);\n  car25519(t);\n  for (j = 0; j < 2; j++) {\n    m[0] = t[0] - 0xffed;\n    for (i = 1; i < 15; i++) {\n      m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n      m[i-1] &= 0xffff;\n    }\n    m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n    b = (m[15]>>16) & 1;\n    m[14] &= 0xffff;\n    sel25519(t, m, 1-b);\n  }\n  for (i = 0; i < 16; i++) {\n    o[2*i] = t[i] & 0xff;\n    o[2*i+1] = t[i]>>8;\n  }\n}\n\nfunction neq25519(a, b) {\n  var c = new Uint8Array(32), d = new Uint8Array(32);\n  pack25519(c, a);\n  pack25519(d, b);\n  return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n  var d = new Uint8Array(32);\n  pack25519(d, a);\n  return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n  var i;\n  for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n  o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n  for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n  var v, c,\n     t0 = 0,  t1 = 0,  t2 = 0,  t3 = 0,  t4 = 0,  t5 = 0,  t6 = 0,  t7 = 0,\n     t8 = 0,  t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n    t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n    t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n    b0 = b[0],\n    b1 = b[1],\n    b2 = b[2],\n    b3 = b[3],\n    b4 = b[4],\n    b5 = b[5],\n    b6 = b[6],\n    b7 = b[7],\n    b8 = b[8],\n    b9 = b[9],\n    b10 = b[10],\n    b11 = b[11],\n    b12 = b[12],\n    b13 = b[13],\n    b14 = b[14],\n    b15 = b[15];\n\n  v = a[0];\n  t0 += v * b0;\n  t1 += v * b1;\n  t2 += v * b2;\n  t3 += v * b3;\n  t4 += v * b4;\n  t5 += v * b5;\n  t6 += v * b6;\n  t7 += v * b7;\n  t8 += v * b8;\n  t9 += v * b9;\n  t10 += v * b10;\n  t11 += v * b11;\n  t12 += v * b12;\n  t13 += v * b13;\n  t14 += v * b14;\n  t15 += v * b15;\n  v = a[1];\n  t1 += v * b0;\n  t2 += v * b1;\n  t3 += v * b2;\n  t4 += v * b3;\n  t5 += v * b4;\n  t6 += v * b5;\n  t7 += v * b6;\n  t8 += v * b7;\n  t9 += v * b8;\n  t10 += v * b9;\n  t11 += v * b10;\n  t12 += v * b11;\n  t13 += v * b12;\n  t14 += v * b13;\n  t15 += v * b14;\n  t16 += v * b15;\n  v = a[2];\n  t2 += v * b0;\n  t3 += v * b1;\n  t4 += v * b2;\n  t5 += v * b3;\n  t6 += v * b4;\n  t7 += v * b5;\n  t8 += v * b6;\n  t9 += v * b7;\n  t10 += v * b8;\n  t11 += v * b9;\n  t12 += v * b10;\n  t13 += v * b11;\n  t14 += v * b12;\n  t15 += v * b13;\n  t16 += v * b14;\n  t17 += v * b15;\n  v = a[3];\n  t3 += v * b0;\n  t4 += v * b1;\n  t5 += v * b2;\n  t6 += v * b3;\n  t7 += v * b4;\n  t8 += v * b5;\n  t9 += v * b6;\n  t10 += v * b7;\n  t11 += v * b8;\n  t12 += v * b9;\n  t13 += v * b10;\n  t14 += v * b11;\n  t15 += v * b12;\n  t16 += v * b13;\n  t17 += v * b14;\n  t18 += v * b15;\n  v = a[4];\n  t4 += v * b0;\n  t5 += v * b1;\n  t6 += v * b2;\n  t7 += v * b3;\n  t8 += v * b4;\n  t9 += v * b5;\n  t10 += v * b6;\n  t11 += v * b7;\n  t12 += v * b8;\n  t13 += v * b9;\n  t14 += v * b10;\n  t15 += v * b11;\n  t16 += v * b12;\n  t17 += v * b13;\n  t18 += v * b14;\n  t19 += v * b15;\n  v = a[5];\n  t5 += v * b0;\n  t6 += v * b1;\n  t7 += v * b2;\n  t8 += v * b3;\n  t9 += v * b4;\n  t10 += v * b5;\n  t11 += v * b6;\n  t12 += v * b7;\n  t13 += v * b8;\n  t14 += v * b9;\n  t15 += v * b10;\n  t16 += v * b11;\n  t17 += v * b12;\n  t18 += v * b13;\n  t19 += v * b14;\n  t20 += v * b15;\n  v = a[6];\n  t6 += v * b0;\n  t7 += v * b1;\n  t8 += v * b2;\n  t9 += v * b3;\n  t10 += v * b4;\n  t11 += v * b5;\n  t12 += v * b6;\n  t13 += v * b7;\n  t14 += v * b8;\n  t15 += v * b9;\n  t16 += v * b10;\n  t17 += v * b11;\n  t18 += v * b12;\n  t19 += v * b13;\n  t20 += v * b14;\n  t21 += v * b15;\n  v = a[7];\n  t7 += v * b0;\n  t8 += v * b1;\n  t9 += v * b2;\n  t10 += v * b3;\n  t11 += v * b4;\n  t12 += v * b5;\n  t13 += v * b6;\n  t14 += v * b7;\n  t15 += v * b8;\n  t16 += v * b9;\n  t17 += v * b10;\n  t18 += v * b11;\n  t19 += v * b12;\n  t20 += v * b13;\n  t21 += v * b14;\n  t22 += v * b15;\n  v = a[8];\n  t8 += v * b0;\n  t9 += v * b1;\n  t10 += v * b2;\n  t11 += v * b3;\n  t12 += v * b4;\n  t13 += v * b5;\n  t14 += v * b6;\n  t15 += v * b7;\n  t16 += v * b8;\n  t17 += v * b9;\n  t18 += v * b10;\n  t19 += v * b11;\n  t20 += v * b12;\n  t21 += v * b13;\n  t22 += v * b14;\n  t23 += v * b15;\n  v = a[9];\n  t9 += v * b0;\n  t10 += v * b1;\n  t11 += v * b2;\n  t12 += v * b3;\n  t13 += v * b4;\n  t14 += v * b5;\n  t15 += v * b6;\n  t16 += v * b7;\n  t17 += v * b8;\n  t18 += v * b9;\n  t19 += v * b10;\n  t20 += v * b11;\n  t21 += v * b12;\n  t22 += v * b13;\n  t23 += v * b14;\n  t24 += v * b15;\n  v = a[10];\n  t10 += v * b0;\n  t11 += v * b1;\n  t12 += v * b2;\n  t13 += v * b3;\n  t14 += v * b4;\n  t15 += v * b5;\n  t16 += v * b6;\n  t17 += v * b7;\n  t18 += v * b8;\n  t19 += v * b9;\n  t20 += v * b10;\n  t21 += v * b11;\n  t22 += v * b12;\n  t23 += v * b13;\n  t24 += v * b14;\n  t25 += v * b15;\n  v = a[11];\n  t11 += v * b0;\n  t12 += v * b1;\n  t13 += v * b2;\n  t14 += v * b3;\n  t15 += v * b4;\n  t16 += v * b5;\n  t17 += v * b6;\n  t18 += v * b7;\n  t19 += v * b8;\n  t20 += v * b9;\n  t21 += v * b10;\n  t22 += v * b11;\n  t23 += v * b12;\n  t24 += v * b13;\n  t25 += v * b14;\n  t26 += v * b15;\n  v = a[12];\n  t12 += v * b0;\n  t13 += v * b1;\n  t14 += v * b2;\n  t15 += v * b3;\n  t16 += v * b4;\n  t17 += v * b5;\n  t18 += v * b6;\n  t19 += v * b7;\n  t20 += v * b8;\n  t21 += v * b9;\n  t22 += v * b10;\n  t23 += v * b11;\n  t24 += v * b12;\n  t25 += v * b13;\n  t26 += v * b14;\n  t27 += v * b15;\n  v = a[13];\n  t13 += v * b0;\n  t14 += v * b1;\n  t15 += v * b2;\n  t16 += v * b3;\n  t17 += v * b4;\n  t18 += v * b5;\n  t19 += v * b6;\n  t20 += v * b7;\n  t21 += v * b8;\n  t22 += v * b9;\n  t23 += v * b10;\n  t24 += v * b11;\n  t25 += v * b12;\n  t26 += v * b13;\n  t27 += v * b14;\n  t28 += v * b15;\n  v = a[14];\n  t14 += v * b0;\n  t15 += v * b1;\n  t16 += v * b2;\n  t17 += v * b3;\n  t18 += v * b4;\n  t19 += v * b5;\n  t20 += v * b6;\n  t21 += v * b7;\n  t22 += v * b8;\n  t23 += v * b9;\n  t24 += v * b10;\n  t25 += v * b11;\n  t26 += v * b12;\n  t27 += v * b13;\n  t28 += v * b14;\n  t29 += v * b15;\n  v = a[15];\n  t15 += v * b0;\n  t16 += v * b1;\n  t17 += v * b2;\n  t18 += v * b3;\n  t19 += v * b4;\n  t20 += v * b5;\n  t21 += v * b6;\n  t22 += v * b7;\n  t23 += v * b8;\n  t24 += v * b9;\n  t25 += v * b10;\n  t26 += v * b11;\n  t27 += v * b12;\n  t28 += v * b13;\n  t29 += v * b14;\n  t30 += v * b15;\n\n  t0  += 38 * t16;\n  t1  += 38 * t17;\n  t2  += 38 * t18;\n  t3  += 38 * t19;\n  t4  += 38 * t20;\n  t5  += 38 * t21;\n  t6  += 38 * t22;\n  t7  += 38 * t23;\n  t8  += 38 * t24;\n  t9  += 38 * t25;\n  t10 += 38 * t26;\n  t11 += 38 * t27;\n  t12 += 38 * t28;\n  t13 += 38 * t29;\n  t14 += 38 * t30;\n  // t15 left as is\n\n  // first car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  // second car\n  c = 1;\n  v =  t0 + c + 65535; c = Math.floor(v / 65536);  t0 = v - c * 65536;\n  v =  t1 + c + 65535; c = Math.floor(v / 65536);  t1 = v - c * 65536;\n  v =  t2 + c + 65535; c = Math.floor(v / 65536);  t2 = v - c * 65536;\n  v =  t3 + c + 65535; c = Math.floor(v / 65536);  t3 = v - c * 65536;\n  v =  t4 + c + 65535; c = Math.floor(v / 65536);  t4 = v - c * 65536;\n  v =  t5 + c + 65535; c = Math.floor(v / 65536);  t5 = v - c * 65536;\n  v =  t6 + c + 65535; c = Math.floor(v / 65536);  t6 = v - c * 65536;\n  v =  t7 + c + 65535; c = Math.floor(v / 65536);  t7 = v - c * 65536;\n  v =  t8 + c + 65535; c = Math.floor(v / 65536);  t8 = v - c * 65536;\n  v =  t9 + c + 65535; c = Math.floor(v / 65536);  t9 = v - c * 65536;\n  v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n  v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n  v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n  v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n  v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n  v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n  t0 += c-1 + 37 * (c-1);\n\n  o[ 0] = t0;\n  o[ 1] = t1;\n  o[ 2] = t2;\n  o[ 3] = t3;\n  o[ 4] = t4;\n  o[ 5] = t5;\n  o[ 6] = t6;\n  o[ 7] = t7;\n  o[ 8] = t8;\n  o[ 9] = t9;\n  o[10] = t10;\n  o[11] = t11;\n  o[12] = t12;\n  o[13] = t13;\n  o[14] = t14;\n  o[15] = t15;\n}\n\nfunction S(o, a) {\n  M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 253; a >= 0; a--) {\n    S(c, c);\n    if(a !== 2 && a !== 4) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n  var c = gf();\n  var a;\n  for (a = 0; a < 16; a++) c[a] = i[a];\n  for (a = 250; a >= 0; a--) {\n      S(c, c);\n      if(a !== 1) M(c, c, i);\n  }\n  for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n  var z = new Uint8Array(32);\n  var x = new Float64Array(80), r, i;\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf();\n  for (i = 0; i < 31; i++) z[i] = n[i];\n  z[31]=(n[31]&127)|64;\n  z[0]&=248;\n  unpack25519(x,p);\n  for (i = 0; i < 16; i++) {\n    b[i]=x[i];\n    d[i]=a[i]=c[i]=0;\n  }\n  a[0]=d[0]=1;\n  for (i=254; i>=0; --i) {\n    r=(z[i>>>3]>>>(i&7))&1;\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n    A(e,a,c);\n    Z(a,a,c);\n    A(c,b,d);\n    Z(b,b,d);\n    S(d,e);\n    S(f,a);\n    M(a,c,a);\n    M(c,b,e);\n    A(e,a,c);\n    Z(a,a,c);\n    S(b,a);\n    Z(c,d,f);\n    M(a,c,_121665);\n    A(a,a,d);\n    M(c,c,a);\n    M(a,d,f);\n    M(d,b,x);\n    S(b,e);\n    sel25519(a,b,r);\n    sel25519(c,d,r);\n  }\n  for (i = 0; i < 16; i++) {\n    x[i+16]=a[i];\n    x[i+32]=c[i];\n    x[i+48]=b[i];\n    x[i+64]=d[i];\n  }\n  var x32 = x.subarray(32);\n  var x16 = x.subarray(16);\n  inv25519(x32,x32);\n  M(x16,x16,x32);\n  pack25519(q,x16);\n  return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n  return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n  randombytes(x, 32);\n  return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n  var s = new Uint8Array(32);\n  crypto_scalarmult(s, x, y);\n  return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n  var k = new Uint8Array(32);\n  crypto_box_beforenm(k, y, x);\n  return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n  0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n  0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n  0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n  0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n  0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n  0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n  0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n  0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n  0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n  0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n  0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n  0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n  0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n  0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n  0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n  0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n  0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n  0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n  0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n  0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n  0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n  0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n  0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n  0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n  0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n  0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n  0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n  0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n  0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n  0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n  0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n  0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n  0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n  0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n  0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n  0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n  0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n  0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n  0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n  0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n  var wh = new Int32Array(16), wl = new Int32Array(16),\n      bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n      bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n      th, tl, i, j, h, l, a, b, c, d;\n\n  var ah0 = hh[0],\n      ah1 = hh[1],\n      ah2 = hh[2],\n      ah3 = hh[3],\n      ah4 = hh[4],\n      ah5 = hh[5],\n      ah6 = hh[6],\n      ah7 = hh[7],\n\n      al0 = hl[0],\n      al1 = hl[1],\n      al2 = hl[2],\n      al3 = hl[3],\n      al4 = hl[4],\n      al5 = hl[5],\n      al6 = hl[6],\n      al7 = hl[7];\n\n  var pos = 0;\n  while (n >= 128) {\n    for (i = 0; i < 16; i++) {\n      j = 8 * i + pos;\n      wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n      wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n    }\n    for (i = 0; i < 80; i++) {\n      bh0 = ah0;\n      bh1 = ah1;\n      bh2 = ah2;\n      bh3 = ah3;\n      bh4 = ah4;\n      bh5 = ah5;\n      bh6 = ah6;\n      bh7 = ah7;\n\n      bl0 = al0;\n      bl1 = al1;\n      bl2 = al2;\n      bl3 = al3;\n      bl4 = al4;\n      bl5 = al5;\n      bl6 = al6;\n      bl7 = al7;\n\n      // add\n      h = ah7;\n      l = al7;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma1\n      h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n      l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Ch\n      h = (ah4 & ah5) ^ (~ah4 & ah6);\n      l = (al4 & al5) ^ (~al4 & al6);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // K\n      h = K[i*2];\n      l = K[i*2+1];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // w\n      h = wh[i%16];\n      l = wl[i%16];\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      th = c & 0xffff | d << 16;\n      tl = a & 0xffff | b << 16;\n\n      // add\n      h = th;\n      l = tl;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      // Sigma0\n      h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n      l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      // Maj\n      h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n      l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh7 = (c & 0xffff) | (d << 16);\n      bl7 = (a & 0xffff) | (b << 16);\n\n      // add\n      h = bh3;\n      l = bl3;\n\n      a = l & 0xffff; b = l >>> 16;\n      c = h & 0xffff; d = h >>> 16;\n\n      h = th;\n      l = tl;\n\n      a += l & 0xffff; b += l >>> 16;\n      c += h & 0xffff; d += h >>> 16;\n\n      b += a >>> 16;\n      c += b >>> 16;\n      d += c >>> 16;\n\n      bh3 = (c & 0xffff) | (d << 16);\n      bl3 = (a & 0xffff) | (b << 16);\n\n      ah1 = bh0;\n      ah2 = bh1;\n      ah3 = bh2;\n      ah4 = bh3;\n      ah5 = bh4;\n      ah6 = bh5;\n      ah7 = bh6;\n      ah0 = bh7;\n\n      al1 = bl0;\n      al2 = bl1;\n      al3 = bl2;\n      al4 = bl3;\n      al5 = bl4;\n      al6 = bl5;\n      al7 = bl6;\n      al0 = bl7;\n\n      if (i%16 === 15) {\n        for (j = 0; j < 16; j++) {\n          // add\n          h = wh[j];\n          l = wl[j];\n\n          a = l & 0xffff; b = l >>> 16;\n          c = h & 0xffff; d = h >>> 16;\n\n          h = wh[(j+9)%16];\n          l = wl[(j+9)%16];\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma0\n          th = wh[(j+1)%16];\n          tl = wl[(j+1)%16];\n          h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n          l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          // sigma1\n          th = wh[(j+14)%16];\n          tl = wl[(j+14)%16];\n          h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n          l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n          a += l & 0xffff; b += l >>> 16;\n          c += h & 0xffff; d += h >>> 16;\n\n          b += a >>> 16;\n          c += b >>> 16;\n          d += c >>> 16;\n\n          wh[j] = (c & 0xffff) | (d << 16);\n          wl[j] = (a & 0xffff) | (b << 16);\n        }\n      }\n    }\n\n    // add\n    h = ah0;\n    l = al0;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[0];\n    l = hl[0];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[0] = ah0 = (c & 0xffff) | (d << 16);\n    hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n    h = ah1;\n    l = al1;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[1];\n    l = hl[1];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[1] = ah1 = (c & 0xffff) | (d << 16);\n    hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n    h = ah2;\n    l = al2;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[2];\n    l = hl[2];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[2] = ah2 = (c & 0xffff) | (d << 16);\n    hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n    h = ah3;\n    l = al3;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[3];\n    l = hl[3];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[3] = ah3 = (c & 0xffff) | (d << 16);\n    hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n    h = ah4;\n    l = al4;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[4];\n    l = hl[4];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[4] = ah4 = (c & 0xffff) | (d << 16);\n    hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n    h = ah5;\n    l = al5;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[5];\n    l = hl[5];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[5] = ah5 = (c & 0xffff) | (d << 16);\n    hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n    h = ah6;\n    l = al6;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[6];\n    l = hl[6];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[6] = ah6 = (c & 0xffff) | (d << 16);\n    hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n    h = ah7;\n    l = al7;\n\n    a = l & 0xffff; b = l >>> 16;\n    c = h & 0xffff; d = h >>> 16;\n\n    h = hh[7];\n    l = hl[7];\n\n    a += l & 0xffff; b += l >>> 16;\n    c += h & 0xffff; d += h >>> 16;\n\n    b += a >>> 16;\n    c += b >>> 16;\n    d += c >>> 16;\n\n    hh[7] = ah7 = (c & 0xffff) | (d << 16);\n    hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n    pos += 128;\n    n -= 128;\n  }\n\n  return n;\n}\n\nfunction crypto_hash(out, m, n) {\n  var hh = new Int32Array(8),\n      hl = new Int32Array(8),\n      x = new Uint8Array(256),\n      i, b = n;\n\n  hh[0] = 0x6a09e667;\n  hh[1] = 0xbb67ae85;\n  hh[2] = 0x3c6ef372;\n  hh[3] = 0xa54ff53a;\n  hh[4] = 0x510e527f;\n  hh[5] = 0x9b05688c;\n  hh[6] = 0x1f83d9ab;\n  hh[7] = 0x5be0cd19;\n\n  hl[0] = 0xf3bcc908;\n  hl[1] = 0x84caa73b;\n  hl[2] = 0xfe94f82b;\n  hl[3] = 0x5f1d36f1;\n  hl[4] = 0xade682d1;\n  hl[5] = 0x2b3e6c1f;\n  hl[6] = 0xfb41bd6b;\n  hl[7] = 0x137e2179;\n\n  crypto_hashblocks_hl(hh, hl, m, n);\n  n %= 128;\n\n  for (i = 0; i < n; i++) x[i] = m[b-n+i];\n  x[n] = 128;\n\n  n = 256-128*(n<112?1:0);\n  x[n-9] = 0;\n  ts64(x, n-8,  (b / 0x20000000) | 0, b << 3);\n  crypto_hashblocks_hl(hh, hl, x, n);\n\n  for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n  return 0;\n}\n\nfunction add(p, q) {\n  var a = gf(), b = gf(), c = gf(),\n      d = gf(), e = gf(), f = gf(),\n      g = gf(), h = gf(), t = gf();\n\n  Z(a, p[1], p[0]);\n  Z(t, q[1], q[0]);\n  M(a, a, t);\n  A(b, p[0], p[1]);\n  A(t, q[0], q[1]);\n  M(b, b, t);\n  M(c, p[3], q[3]);\n  M(c, c, D2);\n  M(d, p[2], q[2]);\n  A(d, d, d);\n  Z(e, b, a);\n  Z(f, d, c);\n  A(g, d, c);\n  A(h, b, a);\n\n  M(p[0], e, f);\n  M(p[1], h, g);\n  M(p[2], g, f);\n  M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n  var i;\n  for (i = 0; i < 4; i++) {\n    sel25519(p[i], q[i], b);\n  }\n}\n\nfunction pack(r, p) {\n  var tx = gf(), ty = gf(), zi = gf();\n  inv25519(zi, p[2]);\n  M(tx, p[0], zi);\n  M(ty, p[1], zi);\n  pack25519(r, ty);\n  r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n  var b, i;\n  set25519(p[0], gf0);\n  set25519(p[1], gf1);\n  set25519(p[2], gf1);\n  set25519(p[3], gf0);\n  for (i = 255; i >= 0; --i) {\n    b = (s[(i/8)|0] >> (i&7)) & 1;\n    cswap(p, q, b);\n    add(q, p);\n    add(p, p);\n    cswap(p, q, b);\n  }\n}\n\nfunction scalarbase(p, s) {\n  var q = [gf(), gf(), gf(), gf()];\n  set25519(q[0], X);\n  set25519(q[1], Y);\n  set25519(q[2], gf1);\n  M(q[3], X, Y);\n  scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n  var d = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n  var i;\n\n  if (!seeded) randombytes(sk, 32);\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  scalarbase(p, d);\n  pack(pk, p);\n\n  for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n  return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n  var carry, i, j, k;\n  for (i = 63; i >= 32; --i) {\n    carry = 0;\n    for (j = i - 32, k = i - 12; j < k; ++j) {\n      x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n      carry = Math.floor((x[j] + 128) / 256);\n      x[j] -= carry * 256;\n    }\n    x[j] += carry;\n    x[i] = 0;\n  }\n  carry = 0;\n  for (j = 0; j < 32; j++) {\n    x[j] += carry - (x[31] >> 4) * L[j];\n    carry = x[j] >> 8;\n    x[j] &= 255;\n  }\n  for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n  for (i = 0; i < 32; i++) {\n    x[i+1] += x[i] >> 8;\n    r[i] = x[i] & 255;\n  }\n}\n\nfunction reduce(r) {\n  var x = new Float64Array(64), i;\n  for (i = 0; i < 64; i++) x[i] = r[i];\n  for (i = 0; i < 64; i++) r[i] = 0;\n  modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n  var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n  var i, j, x = new Float64Array(64);\n  var p = [gf(), gf(), gf(), gf()];\n\n  crypto_hash(d, sk, 32);\n  d[0] &= 248;\n  d[31] &= 127;\n  d[31] |= 64;\n\n  var smlen = n + 64;\n  for (i = 0; i < n; i++) sm[64 + i] = m[i];\n  for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n  crypto_hash(r, sm.subarray(32), n+32);\n  reduce(r);\n  scalarbase(p, r);\n  pack(sm, p);\n\n  for (i = 32; i < 64; i++) sm[i] = sk[i];\n  crypto_hash(h, sm, n + 64);\n  reduce(h);\n\n  for (i = 0; i < 64; i++) x[i] = 0;\n  for (i = 0; i < 32; i++) x[i] = r[i];\n  for (i = 0; i < 32; i++) {\n    for (j = 0; j < 32; j++) {\n      x[i+j] += h[i] * d[j];\n    }\n  }\n\n  modL(sm.subarray(32), x);\n  return smlen;\n}\n\nfunction unpackneg(r, p) {\n  var t = gf(), chk = gf(), num = gf(),\n      den = gf(), den2 = gf(), den4 = gf(),\n      den6 = gf();\n\n  set25519(r[2], gf1);\n  unpack25519(r[1], p);\n  S(num, r[1]);\n  M(den, num, D);\n  Z(num, num, r[2]);\n  A(den, r[2], den);\n\n  S(den2, den);\n  S(den4, den2);\n  M(den6, den4, den2);\n  M(t, den6, num);\n  M(t, t, den);\n\n  pow2523(t, t);\n  M(t, t, num);\n  M(t, t, den);\n  M(t, t, den);\n  M(r[0], t, den);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) M(r[0], r[0], I);\n\n  S(chk, r[0]);\n  M(chk, chk, den);\n  if (neq25519(chk, num)) return -1;\n\n  if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n  M(r[3], r[0], r[1]);\n  return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n  var i;\n  var t = new Uint8Array(32), h = new Uint8Array(64);\n  var p = [gf(), gf(), gf(), gf()],\n      q = [gf(), gf(), gf(), gf()];\n\n  if (n < 64) return -1;\n\n  if (unpackneg(q, pk)) return -1;\n\n  for (i = 0; i < n; i++) m[i] = sm[i];\n  for (i = 0; i < 32; i++) m[i+32] = pk[i];\n  crypto_hash(h, m, n);\n  reduce(h);\n  scalarmult(p, q, h);\n\n  scalarbase(q, sm.subarray(32));\n  add(p, q);\n  pack(t, p);\n\n  n -= 64;\n  if (crypto_verify_32(sm, 0, t, 0)) {\n    for (i = 0; i < n; i++) m[i] = 0;\n    return -1;\n  }\n\n  for (i = 0; i < n; i++) m[i] = sm[i + 64];\n  return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n    crypto_secretbox_NONCEBYTES = 24,\n    crypto_secretbox_ZEROBYTES = 32,\n    crypto_secretbox_BOXZEROBYTES = 16,\n    crypto_scalarmult_BYTES = 32,\n    crypto_scalarmult_SCALARBYTES = 32,\n    crypto_box_PUBLICKEYBYTES = 32,\n    crypto_box_SECRETKEYBYTES = 32,\n    crypto_box_BEFORENMBYTES = 32,\n    crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n    crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n    crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n    crypto_sign_BYTES = 64,\n    crypto_sign_PUBLICKEYBYTES = 32,\n    crypto_sign_SECRETKEYBYTES = 64,\n    crypto_sign_SEEDBYTES = 32,\n    crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n  crypto_core_hsalsa20: crypto_core_hsalsa20,\n  crypto_stream_xor: crypto_stream_xor,\n  crypto_stream: crypto_stream,\n  crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n  crypto_stream_salsa20: crypto_stream_salsa20,\n  crypto_onetimeauth: crypto_onetimeauth,\n  crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n  crypto_verify_16: crypto_verify_16,\n  crypto_verify_32: crypto_verify_32,\n  crypto_secretbox: crypto_secretbox,\n  crypto_secretbox_open: crypto_secretbox_open,\n  crypto_scalarmult: crypto_scalarmult,\n  crypto_scalarmult_base: crypto_scalarmult_base,\n  crypto_box_beforenm: crypto_box_beforenm,\n  crypto_box_afternm: crypto_box_afternm,\n  crypto_box: crypto_box,\n  crypto_box_open: crypto_box_open,\n  crypto_box_keypair: crypto_box_keypair,\n  crypto_hash: crypto_hash,\n  crypto_sign: crypto_sign,\n  crypto_sign_keypair: crypto_sign_keypair,\n  crypto_sign_open: crypto_sign_open,\n\n  crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n  crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n  crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n  crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n  crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n  crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n  crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n  crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n  crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n  crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n  crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n  crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n  crypto_sign_BYTES: crypto_sign_BYTES,\n  crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n  crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n  crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n  crypto_hash_BYTES: crypto_hash_BYTES,\n\n  gf: gf,\n  D: D,\n  L: L,\n  pack25519: pack25519,\n  unpack25519: unpack25519,\n  M: M,\n  A: A,\n  S: S,\n  Z: Z,\n  pow2523: pow2523,\n  add: add,\n  set25519: set25519,\n  modL: modL,\n  scalarmult: scalarmult,\n  scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n  if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n  if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n  if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n  if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n  for (var i = 0; i < arguments.length; i++) {\n    if (!(arguments[i] instanceof Uint8Array))\n      throw new TypeError('unexpected type, use Uint8Array');\n  }\n}\n\nfunction cleanup(arr) {\n  for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n  var b = new Uint8Array(n);\n  randombytes(b, n);\n  return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n  checkArrayTypes(msg, nonce, key);\n  checkLengths(key, nonce);\n  var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n  var c = new Uint8Array(m.length);\n  for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n  crypto_secretbox(c, m, m.length, nonce, key);\n  return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n  checkArrayTypes(box, nonce, key);\n  checkLengths(key, nonce);\n  var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n  var m = new Uint8Array(c.length);\n  for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n  if (c.length < 32) return null;\n  if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n  return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n  checkArrayTypes(n, p);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult(q, n, p);\n  return q;\n};\n\nnacl.scalarMult.base = function(n) {\n  checkArrayTypes(n);\n  if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n  var q = new Uint8Array(crypto_scalarmult_BYTES);\n  crypto_scalarmult_base(q, n);\n  return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n  checkArrayTypes(publicKey, secretKey);\n  checkBoxLengths(publicKey, secretKey);\n  var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n  crypto_box_beforenm(k, publicKey, secretKey);\n  return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n  var k = nacl.box.before(publicKey, secretKey);\n  return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n  crypto_box_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n  crypto_scalarmult_base(pk, secretKey);\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n  checkArrayTypes(msg, secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n  crypto_sign(signedMsg, msg, msg.length, secretKey);\n  return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n  checkArrayTypes(signedMsg, publicKey);\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var tmp = new Uint8Array(signedMsg.length);\n  var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n  if (mlen < 0) return null;\n  var m = new Uint8Array(mlen);\n  for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n  return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n  var signedMsg = nacl.sign(msg, secretKey);\n  var sig = new Uint8Array(crypto_sign_BYTES);\n  for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n  return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n  checkArrayTypes(msg, sig, publicKey);\n  if (sig.length !== crypto_sign_BYTES)\n    throw new Error('bad signature size');\n  if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n    throw new Error('bad public key size');\n  var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n  var i;\n  for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n  for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n  return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  crypto_sign_keypair(pk, sk);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n  checkArrayTypes(secretKey);\n  if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n    throw new Error('bad secret key size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n  return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n  checkArrayTypes(seed);\n  if (seed.length !== crypto_sign_SEEDBYTES)\n    throw new Error('bad seed size');\n  var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n  var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n  for (var i = 0; i < 32; i++) sk[i] = seed[i];\n  crypto_sign_keypair(pk, sk, true);\n  return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n  checkArrayTypes(msg);\n  var h = new Uint8Array(crypto_hash_BYTES);\n  crypto_hash(h, msg, msg.length);\n  return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n  checkArrayTypes(x, y);\n  // Zero length arguments are considered not equal.\n  if (x.length === 0 || y.length === 0) return false;\n  if (x.length !== y.length) return false;\n  return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n  randombytes = fn;\n};\n\n(function() {\n  // Initialize PRNG if environment provides CSPRNG.\n  // If not, methods calling randombytes will throw.\n  var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n  if (crypto && crypto.getRandomValues) {\n    // Browsers.\n    var QUOTA = 65536;\n    nacl.setPRNG(function(x, n) {\n      var i, v = new Uint8Array(n);\n      for (i = 0; i < n; i += QUOTA) {\n        crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n      }\n      for (i = 0; i < n; i++) x[i] = v[i];\n      cleanup(v);\n    });\n  } else if (typeof require !== 'undefined') {\n    // Node.js.\n    crypto = require('crypto');\n    if (crypto && crypto.randomBytes) {\n      nacl.setPRNG(function(x, n) {\n        var i, v = crypto.randomBytes(n);\n        for (i = 0; i < n; i++) x[i] = v[i];\n        cleanup(v);\n      });\n    }\n  }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","import { Address, beginCell, Cell } from \"@ton/core\";\nimport {\n    OP_ADD_GAS,\n    OP_ADD_JETTON_GAS,\n    OP_APPROVE_MESSAGES,\n    OP_CALL_CONTRACT,\n    OP_COLLECT_GAS,\n    OP_COLLECT_JETTONS,\n    OP_EXECUTE_OPERATOR_PROPOSAL,\n    OP_EXECUTE_TIMELOCK_PROPOSAL,\n    OP_INITIALIZE_SIGNERS,\n    OP_JETTON_REFUND,\n    OP_NATIVE_REFUND,\n    OP_PAY_GAS,\n    OP_PAY_JETTON_GAS_FOR_CONTRACT_CALL,\n    OP_PAY_NATIVE_GAS_FOR_CONTRACT_CALL,\n    OP_RELAYER_EXECUTE,\n    OP_ROTATE_SIGNERS,\n    OP_SEND_MESSAGE,\n    OP_START_SIGNER_ROTATION,\n    OP_TRANSFER_OWNERSHIP,\n    OP_UPDATE_GAS_INFO,\n} from \"../constants/operations\";\nimport { bufferToCell, bufferToCellWith4Refs } from \"./cellBuilder\";\nimport { computePayloadHash } from \"../crypto\";\nimport { GasInfos, OProposal, TProposal } from \"../types\";\nimport { serializeGasInfos } from \"../serializers\";\n\nexport function buildMessageIdCell(id: string): Cell {\n    const messageIdBuffer = Buffer.from(id, \"utf-8\");\n    const messageIdCell = bufferToCell(messageIdBuffer);\n    return messageIdCell;\n}\n\nexport function buildCompleteMessageCell(\n    id: string,\n    sourceChainString: string,\n    sourceContractAddressString: string,\n    payloadBuffer: Buffer,\n    contractAddress: Address,\n    destinationChain: string,\n): Cell {\n    const messageIdCell = bufferToCell(Buffer.from(id, \"utf8\"));\n    const sourceChain = bufferToCell(Buffer.from(sourceChainString, \"utf8\"));\n    const sourceContractAddress = bufferToCell(\n        Buffer.from(sourceContractAddressString, \"utf8\"),\n    );\n    const payloadHash = computePayloadHash(payloadBuffer);\n    const contractAddressBuffer = contractAddress.hash;\n    const contractAddressCell = bufferToCell(contractAddressBuffer);\n    const destinationChainCell = bufferToCell(\n        Buffer.from(destinationChain, \"utf8\"),\n    );\n    return beginCell()\n        .storeRef(messageIdCell)\n        .storeRef(sourceChain)\n        .storeRef(sourceContractAddress)\n        .storeRef(\n            beginCell()\n                .storeRef(contractAddressCell)\n                .storeRef(destinationChainCell)\n                .storeUint(payloadHash, 256)\n                .endCell(),\n        )\n        .endCell();\n}\n\nexport function buildApproveMessagesMessage(proof: Cell, messages: Cell): Cell {\n    return beginCell()\n        .storeUint(OP_APPROVE_MESSAGES, 32)\n        .storeRef(proof)\n        .storeRef(messages)\n        .endCell();\n}\n\nexport function buildSendMessage(\n    destinationChainString: string,\n    destinationContractAddressString: string,\n    payloadBuffer: Buffer,\n): Cell {\n    const destinationChain = beginCell()\n        .storeStringTail(destinationChainString)\n        .endCell();\n    const destinationContractAddress = beginCell()\n        .storeStringTail(destinationContractAddressString)\n        .endCell();\n    const payload = bufferToCell(payloadBuffer);\n\n    return beginCell()\n        .storeUint(OP_SEND_MESSAGE, 32)\n        .storeRef(destinationChain)\n        .storeRef(destinationContractAddress)\n        .storeRef(payload)\n        .endCell();\n}\n\nexport function buildStartSignerRotationMessage(\n    signerRotationHash: Cell,\n    proof: Cell,\n) {\n    return beginCell()\n        .storeUint(OP_START_SIGNER_ROTATION, 32)\n        .storeRef(signerRotationHash)\n        .storeRef(proof)\n        .endCell();\n}\n\nexport function buildContractCallMessage(\n    destinationChainString: string,\n    destinationContractAddressString: string,\n    payloadBuffer: Buffer,\n): Cell {\n    const destinationChain = beginCell()\n        .storeStringTail(destinationChainString)\n        .endCell();\n    const destinationContractAddress = beginCell()\n        .storeStringTail(destinationContractAddressString)\n        .endCell();\n\n    // Use the new function that constructs the payload using a root cell with up to 4 reference cells.\n    const payload = bufferToCellWith4Refs(payloadBuffer);\n\n    return beginCell()\n        .storeUint(OP_CALL_CONTRACT, 32)\n        .storeRef(destinationChain)\n        .storeRef(destinationContractAddress)\n        .storeRef(payload)\n        .endCell();\n}\n\nexport function buildContractCallMessageChained(\n    destinationChainString: string,\n    destinationContractAddressString: string,\n    payloadBuffer: Buffer,\n): Cell {\n    const destinationChain = beginCell()\n        .storeStringTail(destinationChainString)\n        .endCell();\n    const destinationContractAddress = beginCell()\n        .storeStringTail(destinationContractAddressString)\n        .endCell();\n\n    const payload = bufferToCell(payloadBuffer);\n\n    return beginCell()\n        .storeUint(OP_CALL_CONTRACT, 32)\n        .storeRef(destinationChain)\n        .storeRef(destinationContractAddress)\n        .storeRef(payload)\n        .endCell();\n}\n\nexport function buildRotateSignersMessage(signers: Cell) {\n    return beginCell()\n        .storeUint(OP_ROTATE_SIGNERS, 32)\n        .storeRef(signers)\n        .endCell();\n}\n\nexport function buildRelayerExecuteMessage(\n    messageString: string,\n    relayerAddress: Address,\n    sourceChainString: string,\n    sourceAddressString: string,\n    payloadBuffer: Buffer,\n    contractAddress: Address,\n    destinationChainString: string,\n    payloadHashOverride?: bigint,\n): Cell {\n    const messageIdCell = buildMessageIdCell(messageString);\n    const sourceChain = bufferToCell(Buffer.from(sourceChainString, \"utf8\"));\n    const sourceContractAddress = bufferToCell(\n        Buffer.from(sourceAddressString, \"utf8\"),\n    );\n    const payload = bufferToCell(payloadBuffer);\n    const destinationChain = bufferToCell(\n        Buffer.from(destinationChainString, \"utf8\"),\n    );\n\n    const payloadHash =\n        payloadHashOverride !== undefined\n            ? BigInt(payloadHashOverride)\n            : computePayloadHash(payloadBuffer);\n\n    const contractAddressBuffer = contractAddress.hash;\n    const contractAddressCell = bufferToCell(contractAddressBuffer);\n\n    const message = beginCell()\n        .storeRef(messageIdCell)\n        .storeRef(sourceChain)\n        .storeRef(sourceContractAddress)\n        .storeRef(\n            beginCell()\n                .storeRef(payload)\n                .storeRef(contractAddressCell)\n                .storeRef(destinationChain)\n                .storeUint(payloadHash, 256)\n                .endCell(),\n        )\n        .endCell();\n\n    return beginCell()\n        .storeUint(OP_RELAYER_EXECUTE, 32)\n        .storeRef(message)\n        .storeAddress(relayerAddress)\n        .endCell();\n}\n\nexport function buildInitializeSignersMessage(signers: Cell): Cell {\n    return beginCell()\n        .storeUint(OP_INITIALIZE_SIGNERS, 32)\n        .storeRef(signers)\n        .endCell();\n}\n\nexport function buildPayNativeGasForContractCallMessage(\n    sender: Address,\n    destinationChain: string,\n    destinationAddress: string,\n    payloadHexString: string,\n    refundAddress: Address,\n): Cell {\n    const payloadCell = bufferToCell(Buffer.from(payloadHexString, \"hex\"));\n\n    const message = beginCell()\n        .storeUint(OP_PAY_NATIVE_GAS_FOR_CONTRACT_CALL, 32)\n        .storeAddress(sender)\n        .storeRef(beginCell().storeStringTail(destinationChain).endCell())\n        .storeRef(beginCell().storeStringTail(destinationAddress).endCell())\n        .storeRef(payloadCell)\n        .storeRef(beginCell().storeAddress(refundAddress).endCell())\n        .endCell();\n\n    return message;\n}\n\nexport function buildPayJettonGasForContractCallMessage(\n    jettonMinter: Address,\n    jettonAmount: bigint,\n    destinationChain: string,\n    destinationAddress: string,\n    payloadHexString: string,\n    sender: Address,\n    refundAddress: Address,\n): Cell {\n    const payloadCell = bufferToCell(Buffer.from(payloadHexString, \"hex\"));\n    const payJettonGasMessage = beginCell()\n        .storeUint(OP_PAY_JETTON_GAS_FOR_CONTRACT_CALL, 32)\n        .storeAddress(jettonMinter)\n        .storeCoins(jettonAmount)\n        .storeRef(beginCell().storeStringTail(destinationChain).endCell())\n        .storeRef(beginCell().storeStringTail(destinationAddress).endCell())\n        .storeRef(payloadCell)\n        .storeRef(\n            beginCell()\n                .storeAddress(sender)\n                .storeAddress(refundAddress)\n                .endCell(),\n        )\n        .endCell();\n    return payJettonGasMessage;\n}\n\nexport function buildCollectGasMessage(\n    receiver: Address,\n    amountToCollect: bigint,\n): Cell {\n    return beginCell()\n        .storeUint(OP_COLLECT_GAS, 32)\n        .storeAddress(receiver)\n        .storeCoins(amountToCollect)\n        .endCell();\n}\n\nexport function buildCollectJettonsMessage(\n    receiver: Address,\n    jettonToSend: bigint,\n    jettonMinter: Address,\n): Cell {\n    return beginCell()\n        .storeUint(OP_COLLECT_JETTONS, 32)\n        .storeAddress(receiver)\n        .storeUint(jettonToSend, 256)\n        .storeAddress(jettonMinter)\n        .endCell();\n}\n\nexport function buildAddNativeGasMessage(\n    txHash: bigint,\n    refundReceiver: Address,\n): Cell {\n    return beginCell()\n        .storeUint(OP_ADD_GAS, 32)\n        .storeUint(txHash, 256)\n        .storeAddress(refundReceiver)\n        .endCell();\n}\n\nexport function buildAddJettonGasMessage(\n    txHash: bigint,\n    jettonMinter: Address,\n    jettonToSend: bigint,\n    refundReceiver: Address,\n): Cell {\n    return beginCell()\n        .storeUint(OP_ADD_JETTON_GAS, 32)\n        .storeUint(txHash, 256)\n        .storeAddress(jettonMinter)\n        .storeCoins(jettonToSend)\n        .storeRef(beginCell().storeAddress(refundReceiver).endCell())\n        .endCell();\n}\n\nexport function buildNativeRefundMessage(\n    txHash: bigint,\n    refundAddress: Address,\n    refundAmount: bigint,\n): Cell {\n    return beginCell()\n        .storeUint(OP_NATIVE_REFUND, 32)\n        .storeUint(txHash, 256)\n        .storeAddress(refundAddress)\n        .storeCoins(refundAmount)\n        .endCell();\n}\n\nexport function buildJettonRefundMessage(\n    txHash: bigint,\n    refundAddress: Address,\n    jettonAmount: bigint,\n    jettonMinter: Address,\n): Cell {\n    return beginCell()\n        .storeUint(OP_JETTON_REFUND, 32)\n        .storeUint(txHash, 256)\n        .storeAddress(refundAddress)\n        .storeUint(jettonAmount, 256)\n        .storeRef(beginCell().storeAddress(jettonMinter).endCell())\n        .endCell();\n}\n\nexport function buildUpdateGasInfoMessage(gasInfos: GasInfos): Cell {\n    let serializedGasInfos = serializeGasInfos(gasInfos);\n\n    return beginCell()\n        .storeUint(OP_UPDATE_GAS_INFO, 32)\n        .storeRef(serializedGasInfos)\n        .endCell();\n}\n\nexport function buildPayGasMessage(\n    sender: Address,\n    destinationChain: string,\n    destinationAddress: string,\n    payloadHexString: string,\n    refundAddress: Address,\n    estimateOnChain: number,\n    executionGasLimit: bigint,\n): Cell {\n    const payloadCell = bufferToCell(Buffer.from(payloadHexString, \"hex\"));\n    return beginCell()\n        .storeUint(OP_PAY_GAS, 32)\n        .storeAddress(sender)\n        .storeRef(beginCell().storeStringTail(destinationChain).endCell())\n        .storeRef(beginCell().storeStringTail(destinationAddress).endCell())\n        .storeRef(payloadCell)\n        .storeRef(beginCell().storeAddress(refundAddress).endCell())\n        .storeUint(estimateOnChain, 8)\n        .storeUint(executionGasLimit, 256)\n        .endCell();\n}\n\nexport function buildTransferOperatorshipMessage(newOperator: Address): Cell {\n    return beginCell()\n        .storeUint(OP_TRANSFER_OWNERSHIP, 32)\n        .storeAddress(newOperator)\n        .endCell();\n}\n\nexport function buildExecuteTimelockProposalPayload(\n    proposalConfig: TProposal,\n    actualTimelock: bigint,\n): Cell {\n    const executeProposalPayload = beginCell()\n        .storeUint(actualTimelock, 256)\n        .storeUint(proposalConfig.targetAddress, 256)\n        .storeUint(proposalConfig.nativeTon, 256)\n        .storeRef(proposalConfig.proposal)\n        .endCell();\n\n    const executeProposal = beginCell()\n        .storeUint(OP_EXECUTE_TIMELOCK_PROPOSAL, 32)\n        .storeRef(executeProposalPayload)\n        .endCell();\n\n    return executeProposal;\n}\n\nexport function buildExecuteOperatorProposal(proposalConfig: OProposal): Cell {\n    const executeProposalPayload = beginCell()\n        .storeUint(proposalConfig.targetAddress, 256)\n        .storeUint(proposalConfig.nativeTon, 256)\n        .storeRef(proposalConfig.proposal)\n        .endCell();\n\n    const executeProposal = beginCell()\n        .storeUint(OP_EXECUTE_OPERATOR_PROPOSAL, 32)\n        .storeRef(executeProposalPayload)\n        .endCell();\n\n    return executeProposal;\n}\n","/**\n * Operation codes for the Axelar Gateway contract\n */\n\n// Message Operations\nexport const OP_RELAYER_EXECUTE = 0x00000008;\nexport const OP_GATEWAY_EXECUTE = 0x0000000c;\nexport const OP_DEPLOY = 0x00000000;\nexport const OP_APPROVE_MESSAGE = 0x00000007;\nexport const OP_APPROVE_MESSAGES = 0x00000028;\nexport const OP_SEND_MESSAGE = 0x00000017;\nexport const OP_MESSAGE_APPROVED = 0x0000000d;\nexport const OP_NULLIFIED_SUCESSFULLY = 0x00000005;\nexport const OP_UNNULIFY_MESSAGE = 0x0000004b;\n\n// Log Operations\nexport const OP_MESSAGE_APPROVED_LOG = 0x0000000f;\nexport const OP_MESSAGE_EXECUTED_LOG = 0x00000010;\nexport const OP_CONTRACT_CALL_LOG = 0x00000016;\nexport const OP_JETTON_GAS_PAID_LOG = 0x00000026;\nexport const OP_NATIVE_GAS_PAID_LOG = 0x00000021;\nexport const OP_OPERATORSHIP_TRANSFERED_LOG = 0x00000031;\n\n// Signer Operations\nexport const OP_INITIALIZE_SIGNERS = 0x00000012;\nexport const OP_VERIFY_PROOF = 0x00000013;\nexport const OP_START_SIGNER_ROTATION = 0x00000014;\nexport const OP_ROTATE_SIGNERS = 0x00000015;\n\n// Contract Call Operations\nexport const OP_CALL_CONTRACT = 0x00000009;\n\n// Timelock Operations\nexport const OP_SCHEDULE_TIMELOCK_PROPOSAL = 0x0000001c;\nexport const OP_CANCEL_TIMELOCK_PROPOSAL = 0x0000001d;\nexport const OP_EXECUTE_TIMELOCK_PROPOSAL = 0x0000001e;\nexport const OP_APPROVE_OPERATOR_PROPOSAL = 0x0000003c;\nexport const OP_CANCEL_OPERATOR_APPROVAL = 0x0000003d;\nexport const OP_EXECUTE_OPERATOR_PROPOSAL = 0x0000003e;\nexport const OP_OPERATOR_PROPOSAL_SCHEDULED_LOG = 0x0000003f;\nexport const OP_OPERATOR_PROPOSAL_CANCELED_LOG = 0x00000040;\nexport const OP_OPERATOR_PROPOSAL_EXECUTED_LOG = 0x00000041;\n\n// Governance logs\nexport const OP_PROPOSAL_SCHEDULED_LOG = 0x00000033;\nexport const OP_PROPOSAL_CANCELED_LOG = 0x00000034;\nexport const OP_PROPOSAL_EXECUTED_LOG = 0x00000035;\n\n// Balance Operations\nexport const OP_ADD_BALANCE = 0x00000022;\nexport const OP_SUBTRACT = 0x00000023;\n\n// Nullifier Operations\nexport const OP_NULLIFY_IF_ALLOWED = 0x00000019;\n\n// GasService Operations\nexport const OP_COLLECT_GAS = 0x00000020;\nexport const OP_COLLECT_JETTONS = 0x00000029;\nexport const OP_PAY_JETTON_GAS_FOR_CONTRACT_CALL = 0x00000027;\nexport const OP_PAY_NATIVE_GAS_FOR_CONTRACT_CALL = 0x0000001f;\nexport const OP_ADD_GAS = 0x00000036;\nexport const OP_ADD_JETTON_GAS = 0x00000037;\nexport const OP_NATIVE_GAS_ADDED_LOG = 0x00000038;\nexport const OP_JETTON_GAS_ADDED_LOG = 0x00000039;\nexport const OP_NATIVE_GAS_COLLECTED_LOG = 0x0000003a;\nexport const OP_JETTON_GAS_COLLECTED_LOG = 0x0000003b;\nexport const OP_UPDATE_GAS_INFO = 0x00000043;\nexport const OP_GAS_INFO_UPDATED_LOG = 0x00000044;\nexport const OP_PAY_GAS = 0x00000045;\nexport const OP_NATIVE_REFUND = 0x00000046;\nexport const OP_JETTON_REFUND = 0x00000047;\nexport const OP_NATIVE_GAS_REFUNDED_LOG = 0x00000048;\nexport const OP_JETTON_GAS_REFUNDED_LOG = 0x00000049;\n\n// Other\nexport const OP_TRANSFER_OWNERSHIP = 0x00000031;\n","import { beginCell, Cell } from \"@ton/core\";\n\nexport function bufferToCellWith4Refs(buffer: Buffer, bytesPerCell?: number): Cell {\n    // Default chunk size: 96 bytes = 256*3 bits.\n    const BYTES_PER_CELL = bytesPerCell ?? 96;\n\n    // Create the root cell builder.\n    let builder = beginCell();\n    let pos = 0;\n\n    // --- Store bytes in the root cell ---\n    let end = Math.min(buffer.length, pos + BYTES_PER_CELL);\n    for (let i = pos; i < end; i++) {\n        builder.storeUint(buffer[i], 8);\n    }\n    pos += BYTES_PER_CELL;\n\n    // --- Create up to 4 reference cells for the next chunks ---\n    // Note: if there is not enough data for a chunk, we simply do not add that reference.\n    for (let refIndex = 0; refIndex < 4; refIndex++) {\n        if (pos >= buffer.length) {\n            break;\n        }\n        let refBuilder = beginCell();\n        let endRef = Math.min(buffer.length, pos + BYTES_PER_CELL);\n        for (let i = pos; i < endRef; i++) {\n            refBuilder.storeUint(buffer[i], 8);\n        }\n        pos += BYTES_PER_CELL;\n        // Attach the built reference cell to the root.\n        builder.storeRef(refBuilder.endCell());\n    }\n\n    // Any extra payload after filling these 5 cells is ignored.\n    return builder.endCell();\n}\n\nexport function bufferToCell(buffer: Buffer, bytesPerCell?: number): Cell {\n    const BYTES_PER_CELL = bytesPerCell ?? 96; // Default to 120 bytes (960 bits) per cell\n\n    // Build cells recursively starting from the beginning of the buffer\n    function buildCellChain(startIndex: number): Cell {\n        const builder = beginCell();\n        const endIndex = Math.min(startIndex + BYTES_PER_CELL, buffer.length);\n\n        // Store bytes in the current cell\n        for (let i = startIndex; i < endIndex; i++) {\n            builder.storeUint(buffer[i], 8);\n        }\n\n        // If there are more bytes, create a reference to the next cell\n        if (endIndex < buffer.length) {\n            const nextCell = buildCellChain(endIndex);\n            builder.storeRef(nextCell);\n        }\n\n        return builder.endCell();\n    }\n\n    // Start building from the first chunk\n    return buildCellChain(0);\n}","export function uint8ArrayToBigInt(arr: Uint8Array): bigint {\n    return arr.reduce((acc, byte) => (acc << 8n) + BigInt(byte), 0n);\n}\n\nexport function isHexString(str: string): boolean {\n    if (!str.startsWith(\"0x\")) return false;\n    const hexPart = str.slice(2);\n    if (hexPart.length % 2 !== 0) return false;\n    return /^[0-9a-fA-F]+$/.test(hexPart);\n}\n\nexport function hexToUint8Array(hex: string): Uint8Array {\n    // Remove the \"0x\" prefix if present.\n    if (hex.startsWith(\"0x\")) {\n        hex = hex.slice(2);\n    }\n    const length = hex.length / 2;\n    const uint8Array = new Uint8Array(length);\n    for (let i = 0; i < length; i++) {\n        uint8Array[i] = parseInt(hex.substr(i * 2, 2), 16);\n    }\n    return uint8Array;\n}\n\nexport function isBase64String(str: string): boolean {\n    // This is a simple regex to check for base64 encoding.\n    // It allows A-Z, a-z, 0-9, +, /, and optional '=' padding.\n    return /^[A-Za-z0-9+/]+={0,2}$/.test(str);\n}\n\nexport function base64ToUint8Array(base64: string): Uint8Array {\n    // In Node.js, you can use Buffer\n    return new Uint8Array(Buffer.from(base64, \"base64\"));\n}\n\n/**\n * Converts a bigint to a Buffer of a fixed byte length.\n * @param value The bigint to convert.\n * @param byteLength The target length in bytes.\n * @returns A Buffer representing the bigint in big-endian order.\n */\nexport function bigintToBuffer(value: bigint, byteLength: number): Buffer {\n    // Convert the bigint to a hex string\n    const hex = value.toString(16);\n    // Ensure the hex string has even length and is padded to the correct length\n    const paddedHex = hex.padStart(byteLength * 2, \"0\");\n    return Buffer.from(paddedHex, \"hex\");\n}\n\nexport function bigIntToUtf8String(value: bigint): string {\n    // Convert BigInt to a hex string\n    let hex = value.toString(16);\n    // Ensure even length\n    if (hex.length % 2 !== 0) {\n        hex = \"0\" + hex;\n    }\n    // Create a Buffer from the hex string\n    const buffer = Buffer.from(hex, \"hex\");\n    // Decode the buffer as UTF-8 (lossy if the bytes are not valid UTF-8)\n    return buffer.toString(\"utf8\");\n}\n\nexport function generateRandomBuffer(bytes: number) {\n    if (bytes <= 0) {\n        throw new Error(\"Bytes must be a positive number\");\n    }\n\n    const buffer = Buffer.alloc(bytes);\n\n    for (let i = 0; i < bytes; i++) {\n        buffer[i] = Math.floor(Math.random() * 256);\n    }\n\n    return buffer;\n}\n","import { keccak256 } from \"ethers/lib/utils\";\n\nexport function keccak256Single(inputBuffer: Buffer): Buffer {\n    // ethers' keccak256 returns a hex string with \"0x\" prefix.\n    const hashHex = keccak256(inputBuffer);\n    return Buffer.from(hashHex.slice(2), \"hex\");\n}\n\nexport function computePayloadHash(payloadBuffer: Buffer) {\n    const payloadHashBuffer = keccak256Single(payloadBuffer);\n    const payloadhash = BigInt(\"0x\" + payloadHashBuffer.toString(\"hex\"));\n    return payloadhash;\n}\n","import { beginCell } from \"@ton/core\";\nimport nacl from \"tweetnacl\";\nimport { decodeUTF8, encodeBase64 } from \"tweetnacl-util\";\nimport { base64ToUint8Array, hexToUint8Array, isBase64String, isHexString, uint8ArrayToBigInt } from \"./encoding\";\n\n\nexport function getDeterministicSigners(count: number, sorted: boolean, duplicate: boolean): nacl.SignKeyPair[] {\n    const signers: nacl.SignKeyPair[] = [];\n    for (let i = 0; i < count; i++) {\n        // Create a deterministic seed for each signer.\n        const seed = new Uint8Array(32);\n        for (let j = 0; j < 32; j++) {\n            // basic seed for demo purposes\n            seed[j] = (i + j) % 256;\n        }\n        const signer = nacl.sign.keyPair.fromSeed(seed);\n        signers.push(signer);\n    }\n\n    // If duplicate is true, duplicate one of the signers before sorting.\n    if (duplicate && signers.length > 0) {\n        // Here we duplicate the first signer.\n        signers.push(signers[0]);\n    }\n\n    // Sort signers by publicKey in ascending order (lexicographically)\n    if (sorted) {\n        signers.sort((a, b) => {\n            const aBytes = a.publicKey;\n            const bBytes = b.publicKey;\n            const len = Math.min(aBytes.length, bBytes.length);\n            for (let i = 0; i < len; i++) {\n                if (aBytes[i] < bBytes[i]) return -1;\n                if (aBytes[i] > bBytes[i]) return 1;\n            }\n            return aBytes.length - bBytes.length;\n        });\n    }\n\n    return signers;\n}\n\n/**\n * Verifies a single signature.\n * @param message - The original message string.\n * @param signatureBase64 - The signature in base64 format.\n * @param publicKeyBigInt - The public key stored as a BigInt.\n * @returns true if the signature is valid.\n */\nexport function verifySignature(\n    message: string,\n    signatureBase64: string,\n    publicKeyBigInt: bigint\n): boolean {\n    // Convert the message to raw bytes.\n    const messageBytes = new TextEncoder().encode(message);\n\n    // Convert signature from base64 to a Uint8Array.\n    const signatureBytes = Buffer.from(signatureBase64, 'base64');\n\n    // Convert the BigInt public key back to a hex string.\n    let publicKeyHex = publicKeyBigInt.toString(16);\n    if (publicKeyHex.length % 2 !== 0) {\n        publicKeyHex = '0' + publicKeyHex;\n    }\n    // Convert the hex public key into a Buffer (raw bytes).\n    const publicKeyBuffer = Buffer.from(publicKeyHex, 'hex');\n\n    // Ensure the public key is the expected length (e.g. 32 bytes for Ed25519).\n    if (publicKeyBuffer.length !== 32) {\n        throw new Error(`Invalid public key length: expected 32, got ${publicKeyBuffer.length}`);\n    }\n    const publicKeyBytes = new Uint8Array(publicKeyBuffer);\n\n    // Use tweetnacl to verify the signature.\n    return nacl.sign.detached.verify(messageBytes, signatureBytes, publicKeyBytes);\n}\n\n/**\n * Verifies all signatures in the weighted signers structure.\n * @param weightedSigners - The object returned by getProofForMessage.\n * @param message - The message that was signed.\n * @returns true if all signatures are valid.\n */\nexport function verifyProofWeightedSigners(weightedSigners: any, message: string): boolean {\n    return weightedSigners.signers.every((signerObj: any) => {\n        const { signature, signer: publicKeyBigInt } = signerObj;\n        return verifySignature(message, signature, publicKeyBigInt);\n    });\n}\n\n\n\nexport function getSignatureBase64(message: string, keyPair: nacl.SignKeyPair): string {\n    let messageUint8: Uint8Array;\n    if (isHexString(message)) {\n        // The message is a hex string; convert it to bytes.\n        messageUint8 = hexToUint8Array(message);\n    } else if (isBase64String(message)) {\n        // The message is a base64 string; convert it to bytes.\n        messageUint8 = base64ToUint8Array(message);\n    } else {\n        // Otherwise, treat it as a UTF-8 encoded string.\n        messageUint8 = decodeUTF8(message);\n    }\n\n    const signature = nacl.sign.detached(messageUint8, keyPair.secretKey);\n    const signatureBase64 = encodeBase64(signature);\n    return signatureBase64;\n}\n\nexport function getEmptySignature() {\n    // Allocate a 64-byte buffer filled with zeros (512 bits)\n    const zeroBuffer = Buffer.alloc(64, 0);\n\n    // Convert the buffer to a base64 string\n    const zeroBase64 = zeroBuffer.toString('base64');\n\n    return zeroBase64;\n}\n\nexport function getSignatureData(message: string, keyPair: nacl.SignKeyPair) {\n    const messageUint8 = decodeUTF8(message);\n    const signature = nacl.sign.detached(messageUint8, keyPair.secretKey);\n    const signatureBase64 = encodeBase64(signature);\n    const signatureBuffer = Buffer.from(signatureBase64, 'base64');\n    const signatureCell = beginCell().storeBuffer(signatureBuffer).endCell();\n    return {\n        signatureSlice: signatureCell.asSlice(),\n        signerPublicKey: uint8ArrayToBigInt(keyPair.publicKey)\n    };\n}\n\n","import { Address, Cell, Dictionary, beginCell } from '@ton/core';\nimport { buildMessageIdCell, bufferToCell } from '../builders';\nimport { computePayloadHash } from '../crypto';\n\nexport function serializeMessagesToBeApproved(\n    messagesToBeApproved: Array<{\n        message: string;\n        sourceChain: string;\n        sourceAddress: string;\n        payloadBuffer: Buffer;\n        executableAddress: Address;\n        destinationChain: string;\n    }>,\n): Cell {\n    // Create an empty dictionary where each value is a Buffer of size (256 + 128 + 512) bits.\n    const messagesDict = Dictionary.empty(Dictionary.Keys.Uint(16), Dictionary.Values.Cell());\n\n    messagesToBeApproved.forEach((msg, index) => {\n        const messageCell = beginCell()\n            .storeRef(buildMessageIdCell(msg.message))\n            .storeRef(beginCell().storeStringTail(msg.sourceChain).endCell())\n            .storeRef(beginCell().storeStringTail(msg.sourceAddress).endCell())\n            .storeRef(\n                beginCell()\n                    .storeRef(bufferToCell(msg.executableAddress.hash))\n                    .storeRef(beginCell().storeStringTail(msg.destinationChain).endCell())\n                    .endCell(),\n            )\n            .storeUint(computePayloadHash(msg.payloadBuffer), 256)\n            .endCell();\n\n        messagesDict.set(index, messageCell);\n    });\n\n    return beginCell().storeDict(messagesDict).endCell();\n}\n","import { Cell, Dictionary, beginCell } from \"@ton/core\";\nimport { bigintToBuffer } from \"../crypto\";\nimport { WeightedSigner, WeightedSigners } from \"../types\";\n\n\nexport function serializeWeightedSigners(data: WeightedSigners): Cell {\n\n    // Create an empty dictionary where each value is a Buffer of size (256 + 128 + 512) bits.\n    const signersDict = Dictionary.empty(\n        Dictionary.Keys.Uint(16),\n        Dictionary.Values.Buffer((256 + 128 + 512) / 8)\n    );\n\n    // Store each weighted signer in the dictionary.\n    data.signers.forEach((signer, index) => {\n        signersDict.set(index, serializeWeightedSigner(signer));\n    });\n\n    return beginCell()\n        .storeDict(signersDict)\n        .storeUint(data.threshold, 128)\n        .storeUint(data.nonce, 256)\n        .endCell();\n}\n\nexport function serializeWeightedSigner(signer: WeightedSigner): Buffer {\n    const combinedData = combineData(signer.signer, signer.weight, signer.signature);\n    return combinedData;\n}\n\n/**\n * Combines a 256-bit bigint, a 128-bit bigint, and a base64-encoded signature\n * into a single Buffer of 256 + 128 + 512 bits (i.e. 32 + 16 + 64 bytes = 112 bytes).\n *\n * @param publicKey A bigint representing 256 bits (32 bytes).\n * @param weight A bigint representing 128 bits (16 bytes).\n * @param signatureBase64 A base64 string representing a 512-bit signature (64 bytes).\n * @returns A Buffer containing the combined data.\n */\nfunction combineData(publicKey: bigint, weight: bigint, signatureBase64: string): Buffer {\n    // Convert bigints to fixed-length buffers.\n    const buf256 = bigintToBuffer(publicKey, 32); // 256 bits = 32 bytes\n    const buf128 = bigintToBuffer(weight, 16); // 128 bits = 16 bytes\n\n    // Decode the base64 signature to a buffer.\n    const sigBuffer = Buffer.from(signatureBase64, 'base64');\n    if (!(sigBuffer.length == 64 || sigBuffer.length == 0)) {\n        throw new Error(`Invalid signature length: expected 64 bytes, got ${sigBuffer.length}`);\n    }\n\n    // Concatenate the buffers.\n    return Buffer.concat([buf256, buf128, sigBuffer]);\n}\n\n\n","import { beginCell, Cell, Dictionary } from '@ton/core';\nimport { CHAIN_HASH_BITS, GAS_INFO_BYTES } from '../constants';\nimport { bigintToBuffer } from '../crypto';\nimport { GasInfo, GasInfos } from '../types';\n\nexport function serializeGasInfo(gasInfo: GasInfo): Buffer {\n    const gasEstimationTypeBuffer = bigintToBuffer(gasInfo.gasEstimationType, 8);\n    const l1FeeScalarBuffer = bigintToBuffer(gasInfo.l1FeeScalar, 8);\n    const axelarBaseFeeBuffer = bigintToBuffer(gasInfo.axelarBaseFee, 16);\n    const relativeGasPriceBuffer = bigintToBuffer(gasInfo.relativeGasPrice, 16);\n    const relativeBlobBaseFeeBuffer = bigintToBuffer(gasInfo.relativeBlobBaseFee, 16);\n    const expressFeeBuffer = bigintToBuffer(gasInfo.expressFee, 16);\n\n    return Buffer.concat([\n        gasEstimationTypeBuffer,\n        l1FeeScalarBuffer,\n        axelarBaseFeeBuffer,\n        relativeGasPriceBuffer,\n        relativeBlobBaseFeeBuffer,\n        expressFeeBuffer,\n    ]);\n}\n\nexport function serializeGasInfos(data: GasInfos): Cell {\n    const gasInfoDict = Dictionary.empty(\n        Dictionary.Keys.BigUint(CHAIN_HASH_BITS),\n        Dictionary.Values.Buffer(GAS_INFO_BYTES),\n    );\n\n    data.forEach((gasInfo, chain) => {\n        gasInfoDict.set(chain, serializeGasInfo(gasInfo));\n    });\n\n    return beginCell().storeDict(gasInfoDict).endCell();\n}\n","import { toNano } from \"@ton/core\";\n\nexport const INIT_SIGNERS_COST = toNano(\"0.06\");\nexport const APPROVE_MESAGE_COST = toNano(\"0.15\");\nexport const APPROVE_MESSAGES_COST = toNano(\"0.15\");\nexport const START_SIGNER_ROTATION_COST = APPROVE_MESAGE_COST;\nexport const ROTATE_SIGNERS_COST = INIT_SIGNERS_COST;\nexport const EXECUTABLE_NATIVE_COST = toNano(\"0.1\");\n// Partial execution constants\nexport const RELAYER_EXECUTE_COST = toNano(\"0.3\"); // cost of sending op::relayer_execute with a 5KB payload\nexport const PAY_JETTON_GAS_FOR_CONTRACT_CALL_COST = RELAYER_EXECUTE_COST;\nexport const EXECUTE_PROPOSAL_COST = RELAYER_EXECUTE_COST;\n","export const ERR_UNAUTHORIZED = 101;\nexport const ERR_MALFORMED_SIGNATURE = 102;\nexport const ERR_INVALID_SIGNER_CONFIG = 109;\nexport const ERR_SIGNERS_UNINITIALIZED = 103;\nexport const ERR_INVALID_NONCE = 104;\nexport const ERR_INVALID_PAYLOAD = 105;\nexport const ERR_INSUFFICIENT_GAS = 106;\nexport const ERR_INSUFFICIENT_PROPOSAL_GAS = 107;\nexport const ERR_INVALID_WORKCHAIN = 333;\nexport const ERR_INVALID_AMOUNT = 107;\nexport const ERR_INVALID_SIGNATURE = 108;\nexport const ERR_INSUFFICIENT_BALANCE = 110;\nexport const ERR_UNAUTHORIZED_SOURCE_ADDRESS = 111;\nexport const ERR_UNAUTHORIZED_SOURCE_CHAIN = 112;\nexport const ERR_INSUFFICIENT_WEIGHT = 113;\nexport const ERR_DUPLICATE_SIGNER = 114;\nexport const ERR_PROOF_NOT_SORTED = 115;\nexport const ERR_SIGNER_CONFIG_NOT_SORTED = 116;\nexport const ERR_SIGNER_CONFIG_DUPLICATE_SIGNER = 117;\nexport const ERR_SIGNERS_ALREADY_INITIALIZED = 118;\nexport const ERR_REDUNDANT_SIGNATURES_PROVIDED = 130;\nexport const ERR_INVALID_OP_CODE = 131;\nexport const ERR_INVALID_EXECUTABLE_GAS = 134;\n","export const GAS_INFO_BITS = 640;\nexport const GAS_INFO_BYTES = GAS_INFO_BITS / 8;\nexport const CHAIN_HASH_BITS = 256;\nexport const EPOCH_KEY_LENGTH = 256;\nexport const NONCE_KEY_LENGTH = 256;\nexport const SIGNER_CONFIG_HASH_LENGTH = 256;\n","export const TIMELOCK_PROPOSAL_DISABLED = 0;\nexport const TIMELOCK_PROPOSAL_SCHEDULED = 1;\nexport const TIMELOCK_PROPOSAL_EXECUTED = 2;\nexport const TIMELOCK_PROPOSAL_CANCELED = 3;\n\nexport const OPERATOR_PROPOSAL_DISABLED = 0;\nexport const OPERATOR_PROPOSAL_SCHEDULED = 1;\nexport const OPERATOR_PROPOSAL_EXECUTED = 2;\nexport const OPERATOR_PROPOSAL_CANCELED = 3;\n","import {\n    Address,\n    beginCell,\n    Cell,\n    Contract,\n    contractAddress,\n    ContractProvider,\n    Sender,\n    SendMode,\n    toNano,\n} from \"@ton/core\";\n\nexport type JettonWalletConfig = {};\n\nexport function jettonWalletConfigToCell(config: JettonWalletConfig): Cell {\n    return beginCell().endCell();\n}\n\nexport class JettonWallet implements Contract {\n    constructor(\n        readonly address: Address,\n        readonly init?: { code: Cell; data: Cell },\n    ) {}\n\n    static createFromAddress(address: Address) {\n        return new JettonWallet(address);\n    }\n\n    static createFromConfig(\n        config: JettonWalletConfig,\n        code: Cell,\n        workchain = 0,\n    ) {\n        const data = jettonWalletConfigToCell(config);\n        const init = { code, data };\n        return new JettonWallet(contractAddress(workchain, init), init);\n    }\n\n    async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n        await provider.internal(via, {\n            value,\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: beginCell().endCell(),\n        });\n    }\n\n    async getJettonBalance(provider: ContractProvider) {\n        let state = await provider.getState();\n        if (state.state.type !== \"active\") {\n            return 0n;\n        }\n        let res = await provider.get(\"get_wallet_data\", []);\n        return res.stack.readBigNumber();\n    }\n    static transferMessage(\n        jetton_amount: bigint,\n        to: Address,\n        responseAddress: Address,\n        customPayload: Cell | null,\n        forward_ton_amount: bigint,\n        forwardPayload: Cell | null,\n    ) {\n        return beginCell()\n            .storeUint(0xf8a7ea5, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeCoins(jetton_amount)\n            .storeAddress(to)\n            .storeAddress(responseAddress)\n            .storeMaybeRef(customPayload)\n            .storeCoins(forward_ton_amount)\n            .storeMaybeRef(forwardPayload)\n            .endCell();\n    }\n    async sendTransfer(\n        provider: ContractProvider,\n        via: Sender,\n        value: bigint,\n        jetton_amount: bigint,\n        to: Address,\n        responseAddress: Address,\n        customPayload: Cell,\n        forward_ton_amount: bigint,\n        forwardPayload: Cell,\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonWallet.transferMessage(\n                jetton_amount,\n                to,\n                responseAddress,\n                customPayload,\n                forward_ton_amount,\n                forwardPayload,\n            ),\n            value: value,\n        });\n    }\n    /*\n      burn#595f07bc query_id:uint64 amount:(VarUInteger 16)\n                    response_destination:MsgAddress custom_payload:(Maybe ^Cell)\n                    = InternalMsgBody;\n    */\n    static burnMessage(\n        jetton_amount: bigint,\n        responseAddress: Address,\n        customPayload: Cell | null,\n    ) {\n        return beginCell()\n            .storeUint(0x595f07bc, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeCoins(jetton_amount)\n            .storeAddress(responseAddress)\n            .storeMaybeRef(customPayload)\n            .endCell();\n    }\n\n    async sendBurn(\n        provider: ContractProvider,\n        via: Sender,\n        value: bigint,\n        jetton_amount: bigint,\n        responseAddress: Address,\n        customPayload: Cell,\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonWallet.burnMessage(\n                jetton_amount,\n                responseAddress,\n                customPayload,\n            ),\n            value: value,\n        });\n    }\n    /*\n      withdraw_tons#107c49ef query_id:uint64 = InternalMsgBody;\n    */\n    static withdrawTonsMessage() {\n        return beginCell()\n            .storeUint(0x6d8e5e3c, 32)\n            .storeUint(0, 64) // op, queryId\n            .endCell();\n    }\n\n    async sendWithdrawTons(provider: ContractProvider, via: Sender) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonWallet.withdrawTonsMessage(),\n            value: toNano(\"0.1\"),\n        });\n    }\n    /*\n      withdraw_jettons#10 query_id:uint64 wallet:MsgAddressInt amount:Coins = InternalMsgBody;\n    */\n    static withdrawJettonsMessage(from: Address, amount: bigint) {\n        return beginCell()\n            .storeUint(0x768a50b2, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeAddress(from)\n            .storeCoins(amount)\n            .storeMaybeRef(null)\n            .endCell();\n    }\n\n    async sendWithdrawJettons(\n        provider: ContractProvider,\n        via: Sender,\n        from: Address,\n        amount: bigint,\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonWallet.withdrawJettonsMessage(from, amount),\n            value: toNano(\"0.1\"),\n        });\n    }\n}\n","import {\n    Address,\n    beginCell,\n    Cell,\n    Contract,\n    contractAddress,\n    ContractProvider,\n    Sender,\n    SendMode,\n    toNano,\n    internal as internal_relaxed,\n} from \"@ton/core\";\n\nimport { Op } from \"./JettonConstants\";\n\nexport type JettonMinterContent = {\n    type: 0 | 1;\n    uri: string;\n};\n\nexport type JettonMinterConfig = {\n    admin: Address;\n    content: Cell;\n    wallet_code: Cell;\n};\n\nexport function jettonMinterConfigToCell(config: JettonMinterConfig): Cell {\n    return beginCell()\n        .storeCoins(0)\n        .storeAddress(config.admin)\n        .storeRef(config.content)\n        .storeRef(config.wallet_code)\n        .endCell();\n}\n\nexport function jettonContentToCell(content: JettonMinterContent) {\n    return beginCell()\n        .storeUint(content.type, 8)\n        .storeStringTail(content.uri) //Snake logic under the hood\n        .endCell();\n}\n\nexport class JettonMinter implements Contract {\n    constructor(\n        readonly address: Address,\n        readonly init?: { code: Cell; data: Cell },\n    ) {}\n\n    static createFromAddress(address: Address) {\n        return new JettonMinter(address);\n    }\n\n    static createFromConfig(\n        config: JettonMinterConfig,\n        code: Cell,\n        workchain = 0,\n    ) {\n        const data = jettonMinterConfigToCell(config);\n        const init = { code, data };\n        return new JettonMinter(contractAddress(workchain, init), init);\n    }\n\n    async sendDeploy(provider: ContractProvider, via: Sender, value: bigint) {\n        await provider.internal(via, {\n            value,\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: beginCell().endCell(),\n        });\n    }\n\n    protected static jettonInternalTransfer(\n        jetton_amount: bigint,\n        forward_ton_amount: bigint,\n        response_addr?: Address,\n        query_id: number | bigint = 0,\n    ) {\n        return beginCell()\n            .storeUint(Op.internal_transfer, 32)\n            .storeUint(query_id, 64)\n            .storeCoins(jetton_amount)\n            .storeAddress(null)\n            .storeAddress(response_addr)\n            .storeCoins(forward_ton_amount)\n            .storeBit(false)\n            .endCell();\n    }\n    static mintMessage(\n        from: Address,\n        to: Address,\n        jetton_amount: bigint,\n        forward_ton_amount: bigint,\n        total_ton_amount: bigint,\n        query_id: number | bigint = 0,\n    ) {\n        const mintMsg = beginCell()\n            .storeUint(Op.internal_transfer, 32)\n            .storeUint(0, 64)\n            .storeCoins(jetton_amount)\n            .storeAddress(null)\n            .storeAddress(from) // Response addr\n            .storeCoins(forward_ton_amount)\n            .storeMaybeRef(null)\n            .endCell();\n\n        return beginCell()\n            .storeUint(Op.mint, 32)\n            .storeUint(query_id, 64) // op, queryId\n            .storeAddress(to)\n            .storeCoins(total_ton_amount)\n            .storeCoins(jetton_amount)\n            .storeRef(mintMsg)\n            .endCell();\n    }\n    async sendMint(\n        provider: ContractProvider,\n        via: Sender,\n        to: Address,\n        jetton_amount: bigint,\n        forward_ton_amount: bigint,\n        total_ton_amount: bigint,\n    ) {\n        if (total_ton_amount <= forward_ton_amount) {\n            throw new Error(\"Total ton amount should be > forward amount\");\n        }\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonMinter.mintMessage(\n                this.address,\n                to,\n                jetton_amount,\n                forward_ton_amount,\n                total_ton_amount,\n            ),\n            value: total_ton_amount + toNano(\"0.015\"),\n        });\n    }\n\n    /* provide_wallet_address#2c76b973 query_id:uint64 owner_address:MsgAddress include_address:Bool = InternalMsgBody;\n     */\n    static discoveryMessage(owner: Address, include_address: boolean) {\n        return beginCell()\n            .storeUint(0x2c76b973, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeAddress(owner)\n            .storeBit(include_address)\n            .endCell();\n    }\n\n    async sendDiscovery(\n        provider: ContractProvider,\n        via: Sender,\n        owner: Address,\n        include_address: boolean,\n        value: bigint = toNano(\"0.1\"),\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonMinter.discoveryMessage(owner, include_address),\n            value: value,\n        });\n    }\n\n    static changeAdminMessage(newOwner: Address) {\n        return beginCell()\n            .storeUint(Op.change_admin, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeAddress(newOwner)\n            .endCell();\n    }\n\n    async sendChangeAdmin(\n        provider: ContractProvider,\n        via: Sender,\n        newOwner: Address,\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonMinter.changeAdminMessage(newOwner),\n            value: toNano(\"0.05\"),\n        });\n    }\n    static changeContentMessage(content: Cell) {\n        return beginCell()\n            .storeUint(Op.change_content, 32)\n            .storeUint(0, 64) // op, queryId\n            .storeRef(content)\n            .endCell();\n    }\n\n    async sendChangeContent(\n        provider: ContractProvider,\n        via: Sender,\n        content: Cell,\n    ) {\n        await provider.internal(via, {\n            sendMode: SendMode.PAY_GAS_SEPARATELY,\n            body: JettonMinter.changeContentMessage(content),\n            value: toNano(\"0.05\"),\n        });\n    }\n    async getWalletAddress(\n        provider: ContractProvider,\n        owner: Address,\n    ): Promise<Address> {\n        const res = await provider.get(\"get_wallet_address\", [\n            { type: \"slice\", cell: beginCell().storeAddress(owner).endCell() },\n        ]);\n        return res.stack.readAddress();\n    }\n\n    async getJettonData(provider: ContractProvider) {\n        let res = await provider.get(\"get_jetton_data\", []);\n        let totalSupply = res.stack.readBigNumber();\n        let mintable = res.stack.readBoolean();\n        let adminAddress = res.stack.readAddress();\n        let content = res.stack.readCell();\n        let walletCode = res.stack.readCell();\n        return {\n            totalSupply,\n            mintable,\n            adminAddress,\n            content,\n            walletCode,\n        };\n    }\n\n    async getTotalSupply(provider: ContractProvider) {\n        let res = await this.getJettonData(provider);\n        return res.totalSupply;\n    }\n    async getAdminAddress(provider: ContractProvider) {\n        let res = await this.getJettonData(provider);\n        return res.adminAddress;\n    }\n    async getContent(provider: ContractProvider) {\n        let res = await this.getJettonData(provider);\n        return res.content;\n    }\n}\n","export abstract class Op {\n    static transfer = 0xf8a7ea5;\n    static transfer_notification = 0x7362d09c;\n    static internal_transfer = 0x178d4519;\n    static excesses = 0xd53276db;\n    static burn = 0x595f07bc;\n    static burn_notification = 0x7bdd97de;\n\n    static provide_wallet_address = 0x2c76b973;\n    static take_wallet_address = 0xd1735400;\n    static mint = 21;\n    static change_admin = 3;\n    static change_content = 4;\n}\n\nexport abstract class Errors {\n    static invalid_op = 709;\n    static not_admin = 73;\n    static unouthorized_burn = 74;\n    static discovery_fee_not_matched = 75;\n    static wrong_op = 0xffff;\n    static not_owner = 705;\n    static not_enough_ton = 709;\n    static not_enough_gas = 707;\n    static not_valid_wallet = 707;\n    static wrong_workchain = 333;\n    static balance_error = 706;\n}\n","import { Address, Cell, ContractProvider, Sender, SendMode } from \"@ton/core\";\nimport { JettonWallet } from \"./JettonWallet\";\n\nexport async function sendTransfer(\n    provider: ContractProvider,\n    via: Sender,\n    value: bigint,\n    jetton_amount: bigint,\n    to: Address,\n    responseAddress: Address,\n    customPayload: Cell,\n    forward_ton_amount: bigint,\n    forwardPayload: Cell,\n) {\n    await provider.internal(via, {\n        sendMode: SendMode.PAY_GAS_SEPARATELY,\n        body: JettonWallet.transferMessage(\n            jetton_amount,\n            to,\n            responseAddress,\n            customPayload,\n            forward_ton_amount,\n            forwardPayload,\n        ),\n        value: value,\n    });\n}\n","import { Address, Cell } from \"@ton/core\";\n\nexport interface WeightedSigner {\n    signer: bigint;\n    weight: bigint;\n    signature: string;\n}\n\nexport interface WeightedSigners {\n    signers: WeightedSigner[];\n    threshold: bigint;\n    nonce: bigint;\n}\n\nexport interface MessageToBeApproved {\n    message: string;\n    sourceChain: string;\n    sourceAddress: string;\n    payloadBuffer: Buffer;\n    executableAddress: Address;\n    destinationChain: string;\n}\n\nexport interface MessagesToBeApproved {\n    messages: string[];\n    sourceChains: string[];\n    sourceAddresses: string[];\n    payloadBuffers: Buffer[];\n    executableAddresses: Address[];\n    destinationChains: string[];\n}\n\nexport interface GasInfo {\n    gasEstimationType: bigint;\n    l1FeeScalar: bigint;\n    axelarBaseFee: bigint;\n    relativeGasPrice: bigint;\n    relativeBlobBaseFee: bigint;\n    expressFee: bigint;\n}\n\nexport type GasInfos = Map<bigint, GasInfo>;\n\nexport enum GasEstimationType {\n    Default = 0,\n    OptimismEcotone = 1,\n    OptimismBedrock = 2,\n    Arbitrum = 3,\n    Scroll = 4,\n}\n\nexport interface OProposal {\n    targetAddress: bigint;\n    nativeTon: bigint;\n    proposalHash: bigint;\n    proposal: Cell;\n}\n\nexport interface TProposal {\n    targetAddress: bigint;\n    nativeTon: bigint;\n    proposalHash: bigint;\n    proposal: Cell;\n    timelock: number;\n    expectedTargetAddress: Address;\n}\n"],"mappings":"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AI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,CAAC;AACP,cAAM,IAAI;AACV,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,YAAI,EAAE,EAAE;AACR,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AACX,eAAO,IAAI;AA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AY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QACpC;AAAA,QAAY;AAAA,QAAY;AAAA,QAAY;AAAA,QAC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","names":["nacl","beginCell","beginCell","nacl","beginCell","beginCell","beginCell","Dictionary","beginCell","Dictionary","beginCell","beginCell","Dictionary","Dictionary","beginCell","contractAddress","beginCell","beginCell","toNano","beginCell","contractAddress","SendMode","toNano","beginCell","contractAddress","SendMode","toNano","SendMode","SendMode","GasEstimationType"]}