{"version":3,"sources":["../node_modules/brorand/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/base64-js/index.js"],"names":["r","Rand","rand","this","module","exports","len","generate","prototype","_rand","n","getBytes","res","Uint8Array","i","length","getByte","self","crypto","getRandomValues","arr","msCrypto","window","Error","require","randomBytes","e","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","constructor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","parseBase","str","start","end","mul","b","Math","min","move","dest","src","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","_strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","_move","clone","_expand","size","_normSign","Symbol","for","inspect","zeros","groupSizes","groupBases","padding","out","carry","groupSize","groupBase","isZero","modrn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","smallMulTo","a","lo","k","ncarry","rword","maxJ","ArrayType","byteLength","reqLength","allocUnsafe","allocate","_toArrayLikeLE","position","shift","_toArrayLikeBE","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","bigMulTo","hncarry","jumboMulTo","FFTM","x","y","mulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","mulp","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","isNegNum","muln","sqr","isqr","toBitArray","q","iushln","bits","carryMask","newCarry","ishln","iushrn","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","andln","acc","modn","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","undefined","strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","code","indexOf"],"mappings":"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","file":"static/js/main~62ab6885.45adbdc3.chunk.js","sourcesContent":["var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n"],"sourceRoot":""}