@toon-protocol/sdk 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/bignumber.js@9.3.1/node_modules/bignumber.js/bignumber.js","../../../node_modules/.pnpm/arweave@1.15.7/src/common/ar.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/api.ts","../../../node_modules/.pnpm/bn.js@4.12.2/node_modules/bn.js/lib/bn.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits.js","../../../node_modules/.pnpm/safer-buffer@2.1.2/node_modules/safer-buffer/safer.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/reporter.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/buffer.js","../../../node_modules/.pnpm/minimalistic-assert@1.0.1/node_modules/minimalistic-assert/index.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/node.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/der.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/der.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/pem.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/encoders/index.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/der.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/pem.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/decoders/index.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/api.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/base/index.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1/constants/index.js","../../../node_modules/.pnpm/asn1.js@5.4.1/node_modules/asn1.js/lib/asn1.js","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/crypto/pem.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/crypto/node-driver.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/network.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/error.ts","../../../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/utils.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/deepHash.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/merkle.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/transaction.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/lib/transaction-uploader.ts","../../../node_modules/.pnpm/arconnect@0.4.2/node_modules/arconnect/index.es.js","../../../node_modules/.pnpm/arweave@1.15.7/src/common/transactions.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/wallets.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/silo.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/chunks.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/blocks.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/common/common.ts","../../../node_modules/.pnpm/arweave@1.15.7/src/node/index.ts"],"sourcesContent":[";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.3.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, -1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // The index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne + (id === 2 && e > ne);\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n // If any number is NaN, return NaN.\r\n function maxOrMin(args, n) {\r\n var k, y,\r\n i = 1,\r\n x = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n y = new BigNumber(args[i]);\r\n if (!y.s || (k = compare(x, y)) === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = mathfloor(n / pows10[d - j - 1] % 10);\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : mathfloor(n / pows10[d - j - 1] % 10);\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n }\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n }\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n",null,null,"(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 // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\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 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 r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\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 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 BN.prototype.inspect = function inspect () {\n return (this.red ? '<BN-R: ' : '<BN: ') + this.toString(16) + '>';\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.modn(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);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\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] & (1 << wbit)) >>> wbit;\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 var fftm = new FFTM();\n return fftm.mulp(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 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 this.length = num === 0 ? 1 : this.length;\n\n return 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.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(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.modn = function modn (num) {\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 acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\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 return this.strip();\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 BN v4 instance\n r.strip();\n } else {\n // r is 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 return a.umod(this.m)._forceRed(this);\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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (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}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n if (!buffer.hasOwnProperty(key)) continue\n if (key === 'SlowBuffer' || key === 'Buffer') continue\n safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n if (!Buffer.hasOwnProperty(key)) continue\n if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n Safer.from = function (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n }\n if (value && typeof value.length === 'undefined') {\n throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n }\n return Buffer(value, encodingOrOffset, length)\n }\n}\n\nif (!Safer.alloc) {\n Safer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n }\n if (size < 0 || size >= 2 * (1 << 30)) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n var buf = Buffer(size)\n if (!fill || fill.length === 0) {\n buf.fill(0)\n } else if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n return buf\n }\n}\n\nif (!safer.kStringMaxLength) {\n try {\n safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n } catch (e) {\n // we can't determine kStringMaxLength in environments where process.binding\n // is unsupported, so let's not set it\n }\n}\n\nif (!safer.constants) {\n safer.constants = {\n MAX_LENGTH: safer.kMaxLength\n }\n if (safer.kStringMaxLength) {\n safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n }\n}\n\nmodule.exports = safer\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n",null,null,null,null,"'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",null,null,null,null,null,"export default {};\n",null,null,null,null,null,null,null],"mappings":"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","names":["BigNumber","compare","format","module","exports","Buffer","self","comb10MulTo","prime","Buffer","Buffer","state","require_der","Buffer","header","size","out","require_der","require_pem","Buffer","require_api","define","name","crypto","len","i","len2","tag","resp","crypto","crypto","crypto"]}