{"version":3,"sources":["webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/dotenv/lib/main.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js"],"names":["BN","utils","getNAF","getJSF","assert","BaseCurve","type","conf","this","p","red","prime","mont","zero","toRed","one","two","n","g","pointFromJSON","gRed","_wnafT1","Array","_wnafT2","_wnafT3","_wnafT4","_bitLength","bitLength","adjustCount","div","cmpn","redN","_maxwellTrick","BasePoint","curve","precomputed","module","exports","prototype","point","Error","validate","_fixedNafMul","k","doubles","_getDoubles","naf","I","step","j","nafW","repr","length","l","push","a","jpoint","b","i","mixedAdd","points","neg","add","toP","_wnafMul","w","nafPoints","_getNAFPoints","wnd","acc","dblp","z","_wnafMulAdd","defW","coeffs","len","jacobianResult","wndWidth","max","comb","y","cmp","toJ","redNeg","index","jsf","Math","ja","jb","tmp","eq","decodePoint","bytes","enc","toArray","byteLength","slice","pointFromX","encodeCompressed","encode","_encode","compact","x","getX","getY","isEven","concat","precompute","power","beta","_getBeta","_hasDoubles","ceil","dbl","res","r","elliptic","version","rand","curves","ec","eddsa","path","os","crypto","LINE","_debug","message","console","log","_dotenvKey","options","DOTENV_KEY","process","env","_instructions","result","dotenvKey","uri","URL","error","code","err","key","password","environment","searchParams","get","environmentKey","toUpperCase","ciphertext","parsed","_vaultPath","possibleVaultPath","isArray","filepath","fs","existsSync","endsWith","resolve","cwd","_resolveHome","envPath","join","homedir","DotenvModule","configDotenv","dotenvPath","encoding","debug","Boolean","lastError","optionPaths","parsedAll","parse","readFileSync","populate","e","processEnv","_configVault","_parseVault","vaultPath","keys","split","decrypted","attrs","trim","decrypt","config","encrypted","keyStr","Buffer","from","nonce","subarray","authTag","aesgcm","createDecipheriv","setAuthTag","update","final","isRange","RangeError","invalidKeyLength","decryptionFailed","src","obj","match","lines","toString","replace","exec","value","maybeQuote","arguments","undefined","override","Object","hasOwnProperty","call","base","short","edwards","inherits","Base","MontCurve","i4","redInvm","a24","redMul","redAdd","Point","normalize","x2","redSqr","rhs","redSqrt","fromJSON","inspect","isInfinity","fromRed","aa","bb","redSub","c","nx","nz","diffAdd","diff","da","cb","redISub","mul","t","clone","bits","iushrn","andln","mulAdd","jumlAdd","other","EdwardsCurve","twisted","mOneA","extended","umod","m","c2","d","dd","oneC","zOne","_mulA","num","_mulC","odd","lhs","y2","isOdd","pointFromY","_extDbl","redIAdd","f","h","ny","nt","_projDbl","_extAdd","_projAdd","k1","k2","jmulAdd","zi","eqXToP","rx","xc","iadd"],"mappings":"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","file":"js/index~b5906859-c0fba0b71dcf170017f6.chunk.js","sourcesContent":["'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--) nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--) l++;\n if (i >= 0) l++;\n acc = acc.dblp(l);\n if (i < 0) break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg());\n } else {\n // J +- J\n if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n var comb = [points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b] /* 7 */];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n var index = [-3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3 /* 1 1 */];\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n if (!zero) break;\n k++;\n i--;\n }\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg();\n if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++) wnd[i] = null;\n if (jacobianResult) return acc;else return acc.toP();\n};\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\nBasePoint.prototype.eq = function eq( /*other*/\n) {\n throw new Error('Not implemented');\n};\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1);\n var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len));\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x);\n return [0x04].concat(x, this.getY().toArray('be', len));\n};\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed) return this;\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n return this;\n};\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed) return false;\n var doubles = this.precomputed.doubles;\n if (!doubles) return false;\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles;\n var doubles = [this];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles\n };\n};\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf) return this.precomputed.naf;\n var res = [this];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++) res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res\n };\n};\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++) r = r.dbl();\n return r;\n};","'use strict';\n\nvar elliptic = exports;\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');","const fs = require('fs');\nconst path = require('path');\nconst os = require('os');\nconst crypto = require('crypto');\nconst packageJson = require('../package.json');\nconst version = packageJson.version;\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;\n\n// Parse src into an Object\nfunction parse(src) {\n const obj = {};\n\n // Convert buffer to string\n let lines = src.toString();\n\n // Convert line breaks to same format\n lines = lines.replace(/\\r\\n?/mg, '\\n');\n let match;\n while ((match = LINE.exec(lines)) != null) {\n const key = match[1];\n\n // Default undefined or null to empty string\n let value = match[2] || '';\n\n // Remove whitespace\n value = value.trim();\n\n // Check if double quoted\n const maybeQuote = value[0];\n\n // Remove surrounding quotes\n value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2');\n\n // Expand newlines if double quoted\n if (maybeQuote === '\"') {\n value = value.replace(/\\\\n/g, '\\n');\n value = value.replace(/\\\\r/g, '\\r');\n }\n\n // Add to object\n obj[key] = value;\n }\n return obj;\n}\nfunction _parseVault(options) {\n const vaultPath = _vaultPath(options);\n\n // Parse .env.vault\n const result = DotenvModule.configDotenv({\n path: vaultPath\n });\n if (!result.parsed) {\n const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);\n err.code = 'MISSING_DATA';\n throw err;\n }\n\n // handle scenario for comma separated keys - for use with key rotation\n // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n const keys = _dotenvKey(options).split(',');\n const length = keys.length;\n let decrypted;\n for (let i = 0; i < length; i++) {\n try {\n // Get full key\n const key = keys[i].trim();\n\n // Get instructions for decrypt\n const attrs = _instructions(result, key);\n\n // Decrypt\n decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key);\n break;\n } catch (error) {\n // last key\n if (i + 1 >= length) {\n throw error;\n }\n // try next key\n }\n }\n\n // Parse decrypted .env string\n return DotenvModule.parse(decrypted);\n}\nfunction _log(message) {\n console.log(`[dotenv@${version}][INFO] ${message}`);\n}\nfunction _warn(message) {\n console.log(`[dotenv@${version}][WARN] ${message}`);\n}\nfunction _debug(message) {\n console.log(`[dotenv@${version}][DEBUG] ${message}`);\n}\nfunction _dotenvKey(options) {\n // prioritize developer directly setting options.DOTENV_KEY\n if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n return options.DOTENV_KEY;\n }\n\n // secondary infra already contains a DOTENV_KEY environment variable\n if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n return process.env.DOTENV_KEY;\n }\n\n // fallback to empty string\n return '';\n}\nfunction _instructions(result, dotenvKey) {\n // Parse DOTENV_KEY. Format is a URI\n let uri;\n try {\n uri = new URL(dotenvKey);\n } catch (error) {\n if (error.code === 'ERR_INVALID_URL') {\n const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development');\n err.code = 'INVALID_DOTENV_KEY';\n throw err;\n }\n throw error;\n }\n\n // Get decrypt key\n const key = uri.password;\n if (!key) {\n const err = new Error('INVALID_DOTENV_KEY: Missing key part');\n err.code = 'INVALID_DOTENV_KEY';\n throw err;\n }\n\n // Get environment\n const environment = uri.searchParams.get('environment');\n if (!environment) {\n const err = new Error('INVALID_DOTENV_KEY: Missing environment part');\n err.code = 'INVALID_DOTENV_KEY';\n throw err;\n }\n\n // Get ciphertext payload\n const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`;\n const ciphertext = result.parsed[environmentKey]; // DOTENV_VAULT_PRODUCTION\n if (!ciphertext) {\n const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`);\n err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT';\n throw err;\n }\n return {\n ciphertext,\n key\n };\n}\nfunction _vaultPath(options) {\n let possibleVaultPath = null;\n if (options && options.path && options.path.length > 0) {\n if (Array.isArray(options.path)) {\n for (const filepath of options.path) {\n if (fs.existsSync(filepath)) {\n possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`;\n }\n }\n } else {\n possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`;\n }\n } else {\n possibleVaultPath = path.resolve(process.cwd(), '.env.vault');\n }\n if (fs.existsSync(possibleVaultPath)) {\n return possibleVaultPath;\n }\n return null;\n}\nfunction _resolveHome(envPath) {\n return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath;\n}\nfunction _configVault(options) {\n _log('Loading env from encrypted .env.vault');\n const parsed = DotenvModule._parseVault(options);\n let processEnv = process.env;\n if (options && options.processEnv != null) {\n processEnv = options.processEnv;\n }\n DotenvModule.populate(processEnv, parsed, options);\n return {\n parsed\n };\n}\nfunction configDotenv(options) {\n const dotenvPath = path.resolve(process.cwd(), '.env');\n let encoding = 'utf8';\n const debug = Boolean(options && options.debug);\n if (options && options.encoding) {\n encoding = options.encoding;\n } else {\n if (debug) {\n _debug('No encoding is specified. UTF-8 is used by default');\n }\n }\n let optionPaths = [dotenvPath]; // default, look for .env\n if (options && options.path) {\n if (!Array.isArray(options.path)) {\n optionPaths = [_resolveHome(options.path)];\n } else {\n optionPaths = []; // reset default\n for (const filepath of options.path) {\n optionPaths.push(_resolveHome(filepath));\n }\n }\n }\n\n // Build the parsed data in a temporary object (because we need to return it). Once we have the final\n // parsed data, we will combine it with process.env (or options.processEnv if provided).\n let lastError;\n const parsedAll = {};\n for (const path of optionPaths) {\n try {\n // Specifying an encoding returns a string instead of a buffer\n const parsed = DotenvModule.parse(fs.readFileSync(path, {\n encoding\n }));\n DotenvModule.populate(parsedAll, parsed, options);\n } catch (e) {\n if (debug) {\n _debug(`Failed to load ${path} ${e.message}`);\n }\n lastError = e;\n }\n }\n let processEnv = process.env;\n if (options && options.processEnv != null) {\n processEnv = options.processEnv;\n }\n DotenvModule.populate(processEnv, parsedAll, options);\n if (lastError) {\n return {\n parsed: parsedAll,\n error: lastError\n };\n } else {\n return {\n parsed: parsedAll\n };\n }\n}\n\n// Populates process.env from .env file\nfunction config(options) {\n // fallback to original dotenv if DOTENV_KEY is not set\n if (_dotenvKey(options).length === 0) {\n return DotenvModule.configDotenv(options);\n }\n const vaultPath = _vaultPath(options);\n\n // dotenvKey exists but .env.vault file does not exist\n if (!vaultPath) {\n _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`);\n return DotenvModule.configDotenv(options);\n }\n return DotenvModule._configVault(options);\n}\nfunction decrypt(encrypted, keyStr) {\n const key = Buffer.from(keyStr.slice(-64), 'hex');\n let ciphertext = Buffer.from(encrypted, 'base64');\n const nonce = ciphertext.subarray(0, 12);\n const authTag = ciphertext.subarray(-16);\n ciphertext = ciphertext.subarray(12, -16);\n try {\n const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce);\n aesgcm.setAuthTag(authTag);\n return `${aesgcm.update(ciphertext)}${aesgcm.final()}`;\n } catch (error) {\n const isRange = error instanceof RangeError;\n const invalidKeyLength = error.message === 'Invalid key length';\n const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data';\n if (isRange || invalidKeyLength) {\n const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)');\n err.code = 'INVALID_DOTENV_KEY';\n throw err;\n } else if (decryptionFailed) {\n const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY');\n err.code = 'DECRYPTION_FAILED';\n throw err;\n } else {\n throw error;\n }\n }\n}\n\n// Populate process.env with parsed values\nfunction populate(processEnv, parsed) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const debug = Boolean(options && options.debug);\n const override = Boolean(options && options.override);\n if (typeof parsed !== 'object') {\n const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate');\n err.code = 'OBJECT_REQUIRED';\n throw err;\n }\n\n // Set process.env\n for (const key of Object.keys(parsed)) {\n if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n if (override === true) {\n processEnv[key] = parsed[key];\n }\n if (debug) {\n if (override === true) {\n _debug(`\"${key}\" is already defined and WAS overwritten`);\n } else {\n _debug(`\"${key}\" is already defined and was NOT overwritten`);\n }\n }\n } else {\n processEnv[key] = parsed[key];\n }\n }\n}\nconst DotenvModule = {\n configDotenv,\n _configVault,\n _parseVault,\n config,\n decrypt,\n parse,\n populate\n};\nmodule.exports.configDotenv = DotenvModule.configDotenv;\nmodule.exports._configVault = DotenvModule._configVault;\nmodule.exports._parseVault = DotenvModule._parseVault;\nmodule.exports.config = DotenvModule.config;\nmodule.exports.decrypt = DotenvModule.decrypt;\nmodule.exports.parse = DotenvModule.parse;\nmodule.exports.populate = DotenvModule.populate;\nmodule.exports = DotenvModule;","'use strict';\n\nvar curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar utils = require('../utils');\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n return y.redSqr().cmp(rhs) === 0;\n};\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) bits.push(t.andln(1));\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n return this.x.fromRed();\n};","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\nvar assert = utils.assert;\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n Base.call(this, 'edwards', conf);\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point');\n if (x.fromRed().isOdd() !== odd) x = x.redNeg();\n return this.point(x, y);\n};\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n return lhs.cmp(rhs) === 0;\n};\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red) this.x = this.x.toRed(this.curve.red);\n if (!this.y.red) this.y = this.y.toRed(this.curve.red);\n if (!this.z.red) this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne) this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0);\n};\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n\n // Double in extended coordinates\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\nPoint.prototype.add = function add(p) {\n if (this.isInfinity()) return p;\n if (p.isInfinity()) return this;\n if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p);\n};\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t) this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0) return false;\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0) return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;"],"sourceRoot":""}