{"version":3,"sources":["webpack:////home/vsts/work/1/s/node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/certificate.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash.js","webpack:////home/vsts/work/1/s/node_modules/ripemd160/index.js","webpack:////home/vsts/work/1/s/node_modules/timers-browserify/main.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/decode.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/ghash.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb1.js","webpack:////home/vsts/work/1/s/node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:////home/vsts/work/1/s/node_modules/miller-rabin/lib/mr.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ctr.js","webpack:////home/vsts/work/1/s/node_modules/ieee754/index.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/psSupported.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curves.js","webpack:////home/vsts/work/1/s/node_modules/buffer-equal-constant-time/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/transformData.js","webpack:////home/vsts/work/1/s/node_modules/vm-browserify/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/aes.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/writable-browser.js","webpack:////home/vsts/work/1/s/node_modules/string_decoder/lib/string_decoder.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/hash.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/node.js","webpack:////home/vsts/work/1/s/node_modules/browserify-cipher/browser.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:////home/vsts/work/1/s/node_modules/util/node_modules/inherits/inherits_browser.js","webpack:////home/vsts/work/1/s/node_modules/jwa/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/utils.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/1.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/tostring.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ecb.js","webpack:////home/vsts/work/1/s/node_modules/cipher-base/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isnumber/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/verify.js","webpack:////home/vsts/work/1/s/node_modules/md5.js/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/axios.js","webpack:////home/vsts/work/1/s/node_modules/stream-browserify/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isboolean/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/des.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/asn1.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha1.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/TokenExpiredError.js","webpack:////home/vsts/work/1/s/node_modules/create-hmac/browser.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_transform.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/adapters/xhr.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/dispatchRequest.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:////home/vsts/work/1/s/node_modules/crypto-browserify/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cbc.js","webpack:////home/vsts/work/1/s/node_modules/create-hash/browser.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/combineURLs.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isplainobject/index.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/utils.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:////home/vsts/work/1/s/node_modules/util/support/isBufferBrowser.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/publicEncrypt.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/Cancel.js","webpack:////home/vsts/work/1/s/node_modules/jws/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/readable-browser.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/validator.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/withPublic.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/to-buffer.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/spread.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/api.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/lib/generatePrime.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/CancelToken.js","webpack:////home/vsts/work/1/s/node_modules/evp_bytestokey/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/privateDecrypt.js","webpack:////home/vsts/work/1/s/node_modules/create-hash/md5.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha256.js","webpack:////home/vsts/work/1/s/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha.js","webpack:////home/vsts/work/1/s/node_modules/browserify-des/index.js","webpack:///./node_modules/react-icons/lib/esm/iconsManifest.js","webpack:///./node_modules/react-icons/lib/esm/iconContext.js","webpack:///./node_modules/react-icons/lib/esm/iconBase.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/enhanceError.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/mergeConfig.js","webpack:////home/vsts/work/1/s/node_modules/create-ecdh/browser.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/InterceptorManager.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/sign.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/utils.js","webpack:////home/vsts/work/1/s/node_modules/util-deprecate/browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/decrypter.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/buildURL.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/base.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./src/models/ResponseException.ts","webpack:////home/vsts/work/1/s/node_modules/isarray/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/settle.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/encrypter.js","webpack:////home/vsts/work/1/s/node_modules/randomfill/browser.js","webpack:////home/vsts/work/1/s/node_modules/lodash.includes/index.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/mgf.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/async.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/sync-browser.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/data-stream.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/constants/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/passthrough.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/cancel/isCancel.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha224.js","webpack:////home/vsts/work/1/s/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js","webpack:////home/vsts/work/1/s/node_modules/process-nextick-args/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:////home/vsts/work/1/s/node_modules/minimalistic-assert/index.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/Axios.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/utils.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/verify-stream.js","webpack:////home/vsts/work/1/s/node_modules/browserify-rsa/index.js","webpack:////home/vsts/work/1/s/node_modules/ms/index.js","webpack:////home/vsts/work/1/s/node_modules/core-util-is/lib/util.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha512.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/node_modules/semver/semver.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/authCipher.js","webpack:////home/vsts/work/1/s/node_modules/util/util.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/256.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/cipher.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/index.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/browser/index.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/sign.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:////home/vsts/work/1/s/node_modules/base64-js/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-des/modes.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/defaults.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/parseHeaders.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/duplex-browser.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/ede.js","webpack:////home/vsts/work/1/s/node_modules/public-encrypt/xor.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/base/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isstring/index.js","webpack:////home/vsts/work/1/s/node_modules/lodash.once/index.js","webpack:////home/vsts/work/1/s/node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:////home/vsts/work/1/s/node_modules/axios/index.js","webpack:////home/vsts/work/1/s/node_modules/sha.js/index.js","webpack:////home/vsts/work/1/s/node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/JsonWebTokenError.js","webpack:////home/vsts/work/1/s/node_modules/randombytes/browser.js","webpack:////home/vsts/work/1/s/node_modules/hash-base/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/browser.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/512.js","webpack:////home/vsts/work/1/s/node_modules/create-hmac/legacy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/browser.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./src/constants/arrays.ts","webpack:////home/vsts/work/1/s/node_modules/sha.js/sha384.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/hmac.js","webpack:////home/vsts/work/1/s/node_modules/diffie-hellman/lib/dh.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/ofb.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/timespan.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/lib/NotBeforeError.js","webpack:////home/vsts/work/1/s/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha.js","webpack:////home/vsts/work/1/s/node_modules/lodash.isinteger/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/modes/cfb8.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/ec/key.js","webpack:////home/vsts/work/1/s/node_modules/jsonwebtoken/verify.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/createError.js","webpack:////home/vsts/work/1/s/node_modules/jws/lib/sign-stream.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/transform.js","webpack:////home/vsts/work/1/s/node_modules/inherits/inherits_browser.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/algos.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/core/buildFullPath.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_readable.js","webpack:////home/vsts/work/1/s/node_modules/events/events.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/224.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/common.js","webpack:////home/vsts/work/1/s/node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:////home/vsts/work/1/s/node_modules/des.js/lib/des/cbc.js","webpack:////home/vsts/work/1/s/node_modules/buffer-xor/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/incr32.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/384.js","webpack:///./src/adapters/axios.ts","webpack:///./src/adapters/hooks/reviewsHook.ts","webpack:///./src/adapters/hooks/boardsHook.ts","webpack:///./src/adapters/hooks/organizationsHook.ts","webpack:///./src/adapters/hooks/reviewDownloadsHook.ts","webpack:///./src/adapters/hooks/uploadAttachmentsHook.ts","webpack:///./src/adapters/hooks/commentSetHook.tsx","webpack:///./src/adapters/hooks/usersHook.ts","webpack:///./src/adapters/hooks/updateReviewStatusHook.tsx","webpack:////home/vsts/work/1/s/node_modules/swr/node_modules/dequal/lite/index.mjs","webpack:////home/vsts/work/1/s/node_modules/swr/esm/libs/hash.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/cache.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/libs/web-preset.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/config.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/env.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/swr-config-context.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/use-swr.js","webpack:////home/vsts/work/1/s/node_modules/swr/esm/index.js","webpack:///./src/adapters/hooks/useCatalogHook.ts","webpack:///./src/adapters/hooks/uploadFilesHook.ts","webpack:///./src/adapters/hooks/updateReviewHook.tsx","webpack:///./src/adapters/hooks/getAllUsersHook.ts","webpack:///./src/adapters/hooks/distributionListHook.ts","webpack:///./src/adapters/apis/reviewsApi.ts","webpack:////home/vsts/work/1/s/node_modules/brorand/index.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////home/vsts/work/1/s/node_modules/elliptic/lib/elliptic/curve/index.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/bind.js","webpack:////home/vsts/work/1/s/node_modules/asn1.js/lib/asn1/constants/der.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_writable.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/precondition.js","webpack:////home/vsts/work/1/s/node_modules/parse-asn1/fixProc.js","webpack:////home/vsts/work/1/s/node_modules/readable-stream/lib/_stream_duplex.js","webpack:////home/vsts/work/1/s/node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/sha/common.js","webpack:////home/vsts/work/1/s/node_modules/browserify-aes/streamCipher.js","webpack:////home/vsts/work/1/s/node_modules/hash.js/lib/hash/ripemd.js","webpack:////home/vsts/work/1/s/node_modules/pbkdf2/lib/default-encoding.js","webpack:////home/vsts/work/1/s/node_modules/axios/lib/helpers/cookies.js"],"names":["assert","val","msg","Error","inherits","ctor","superCtor","super_","TempCtor","prototype","constructor","BN","number","base","endian","isBN","this","negative","words","length","red","_init","Buffer","module","exports","wordSize","window","e","parseHex4Bits","string","index","c","charCodeAt","parseHexByte","lowerBound","r","parseBase","str","start","end","mul","len","Math","min","i","num","Array","isArray","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","w","off","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","copy","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","self","out","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","ret","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","res","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","toTwos","width","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","iadd","isub","add","sub","comb10MulTo","mid","o","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","x","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","s","rtwdf","cos","PI","itwdf","sin","p","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","n","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","muln","sqr","isqr","toBitArray","iushln","bits","carryMask","newCarry","ishln","hint","extended","h","mask","maskedWords","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","div","divmod","positive","divn","umod","divRound","dm","half","r2","acc","egcd","A","B","C","D","g","isEven","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","name","tmp","_tmp","K256","call","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","undefined","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","asn","Time","define","choice","utcTime","utctime","generalTime","gentime","AttributeTypeValue","seq","obj","key","objid","any","AlgorithmIdentifier","optional","SubjectPublicKeyInfo","use","bitstr","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","def","octstr","TBSCertificate","explicit","implicit","X509Certificate","hash","utils","common","sha","ripemd","hmac","sha1","sha256","sha224","sha384","sha512","ripemd160","HashBase","ARRAY16","zl","zr","sl","sr","hl","hr","RIPEMD160","_a","_b","_c","_d","_e","rotl","fn1","d","fn2","fn3","fn4","fn5","_update","_block","readInt32LE","al","bl","cl","dl","el","ar","br","cr","dr","er","tl","tr","_digest","_blockOffset","fill","writeUInt32LE","_length","buffer","alloc","writeInt32LE","apply","Function","Timeout","id","clearFn","_id","_clearFn","setTimeout","scope","arguments","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","global","clearImmediate","jws","jwt","options","decoded","decode","payload","JSON","parse","complete","header","signature","EventEmitter","DH","ENCODINGS","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","gen","createDiffieHellman","DiffieHellman","enc","generator","genc","isBuffer","generatePrime","ZEROES","fromArray","buf","allocUnsafe","writeUInt32BE","GHASH","state","cache","ghash","block","_multiply","lsbVi","Vi","readUInt32BE","Zi","update","chunk","concat","slice","final","abl","pna","Readable","Duplex","ReadableState","EElistenerCount","emitter","type","listeners","Stream","OurUint8Array","Uint8Array","util","Object","create","debugUtil","debug","debuglog","StringDecoder","BufferList","destroyImpl","kProxyEvents","stream","isDuplex","objectMode","readableObjectMode","hwm","highWaterMark","readableHwm","readableHighWaterMark","defaultHwm","floor","pipes","pipesCount","flowing","ended","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","destroyed","defaultEncoding","awaitDrain","readingMore","decoder","encoding","_readableState","readable","read","_read","destroy","_destroy","readableAddChunk","addToFront","skipChunkCheck","push","emitReadable","onEofChunk","TypeError","chunkInvalid","emit","getPrototypeOf","from","_uint8ArrayToBuffer","addChunk","write","maybeReadMore","needMoreData","unshift","defineProperty","get","set","value","_undestroy","undestroy","err","cb","isPaused","setEncoding","howMuchToRead","head","data","computeNewHighWaterMark","nextTick","emitReadable_","flow","maybeReadMore_","nReadingNextTick","resume_","fromList","join","clear","list","hasStrings","nb","tail","copyFromBufferString","copyFromBuffer","fromListPartial","endReadable","endReadableNT","indexOf","xs","parseInt","nOrig","doRead","pipe","pipeOpts","src","endFn","process","stdout","stderr","onend","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","_writableState","needDrain","once","on","pipeOnDrain","increasedAwaitDrain","pause","event","fn","prependListener","_events","resume","dests","splice","ev","addListener","wrap","_this","paused","method","bind","enumerable","_fromList","curves","parseBytes","KeyPair","Signature","EDDSA","curve","precompute","pointClass","point","encodingLength","sign","message","secret","keyFromSecret","hashInt","messagePrefix","R","Rencoded","encodePoint","s_","pubBytes","priv","S","makeSignature","verify","sig","pub","eddsa","keyFromPublic","SG","intFromLE","digest","fromPublic","fromSecret","getY","getX","decodePoint","bytes","lastIx","normed","xIsOdd","pointFromY","encodeInt","decodeInt","isPoint","isStandardBrowserEnv","originURL","msie","test","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","url","href","setAttribute","protocol","host","search","hostname","port","pathname","charAt","location","requestURL","parsed","isString","encryptByte","byteParam","decrypt","_cipher","encryptBlock","_prev","shiftIn","encrypt","HmacDRBG","predResist","outSize","minEntropy","hmacStrength","_reseed","reseedInterval","K","V","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","seed","_hmac","kmac","reseed","addEnc","generate","temp","encode","bn","brorand","MillerRabin","rand","Rand","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","incr32","getBlock","encryptBlockRaw","chunkNum","_cache","offset","pad","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","Infinity","rt","isNaN","log","LN2","semver","satisfies","version","asn1","der","constants","DEREncoder","entity","tree","DERNode","body","parent","Node","two","reporter","_encode","_encodeComposite","tag","primitive","cls","content","encodedTag","tagByName","hasOwnProperty","error","tagClassByName","encodeTag","_createEncoderBuffer","lenOctets","_encodeStr","unused","writeUInt16BE","_isNumstr","_isPrintstr","_encodeObjid","values","relative","stringify","ident","_encodeTime","time","date","Date","getFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","_encodeBool","_use","_getEncoder","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","pre","PresetCurve","short","edwards","validate","isInfinity","defineCurve","configurable","gRed","beta","lambda","basis","SlowBuffer","bufferEq","install","equal","that","origBufEqual","origSlowBufEqual","restore","defaults","headers","fns","context","forEach","Object_keys","keys","defineProp","writable","globals","Context","Script","code","runInContext","iframe","style","display","appendChild","win","contentWindow","wEval","eval","wExecScript","execScript","winKeys","removeChild","runInThisContext","runInNewContext","createContext","isContext","createScript","publicEncrypt","privateDecrypt","privateEncrypt","publicDecrypt","asUInt32Array","scrubVec","v","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t1","t2","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s1","s2","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_key","_reset","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","decryptBlock","m1","scrub","isEncoding","toLowerCase","nenc","retried","_normalizeEncoding","normalizeEncoding","text","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","Hash","finalSize","_finalSize","_blockSize","_len","accum","assigned","remainder","rem","lowBits","highBits","_hash","Reporter","EncoderBuffer","DecoderBuffer","tags","methods","children","args","reverseArgs","useDecoder","contains","_wrap","stateProps","cstate","prop","filter","child","_useArgs","arg","map","newKey","_decode","wrapResult","prevObj","result","present","prevKey","enterKey","_peekTag","isError","save","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","raw","track","path","_getUse","_reporterState","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","match","some","node","_encodeChoice","_encodePrimitive","DES","aes","aesModes","desModes","ebtk","createCipheriv","suite","iv","createDecipheriv","createCipher","Cipher","password","keyLen","ivLen","Cipheriv","createDecipher","Decipher","Decipheriv","listCiphers","getCiphers","doubles","step","points","naf","bufferEqual","crypto","formatEcdsa","MSG_INVALID_SECRET","MSG_INVALID_VERIFIER_KEY","supportsKeyObjects","createPublicKey","checkIsPublicKey","typeError","asymmetricKeyType","export","checkIsPrivateKey","fromBase64","base64","toBase64","base64url","template","errMsg","format","normalizeInput","thing","createHmacSigner","checkIsSecretKey","createHmac","createHmacVerifier","computedSig","createKeySigner","privateKey","signer","createSign","createKeyVerifier","publicKey","verifier","createVerify","createPSSKeySigner","RSA_PKCS1_PSS_PADDING","saltLength","RSA_PSS_SALTLEN_DIGEST","createPSSKeyVerifier","createECDSASigner","inner","derToJose","createECDSAVerifer","joseToDer","createNoneSigner","createNoneVerifier","algorithm","signerFactories","hs","rs","ps","es","none","verifierFactories","algo","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","permuteTable","padSplit","group","shaCommon","rotl32","sum32","sum32_5","ft_1","BlockHash","sha1_K","SHA1","W","padLength","toHex32","split32","Transform","CipherBase","hashMode","_finalOrDigest","_final","__final","_decoder","_encoding","useUint8Array","useArrayBuffer","ArrayBuffer","isView","TYPED_ARRAY_SUPPORT","inputEnc","outputEnc","bufferData","byteOffset","outData","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_flush","done","fin","objectToString","isObjectLike","EC","ec","parseKeys","checkValue","signType","curveId","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","modulus","padNum","publicExponent","MD5","fnF","fnG","fnH","fnI","Axios","mergeConfig","createInstance","defaultConfig","instance","request","extend","axios","instanceConfig","Cancel","CancelToken","isCancel","all","promises","Promise","spread","isAxiosError","default","EE","Writable","PassThrough","source","_isStdio","didOnEnd","cleanup","listenerCount","DESState","_desState","deriveKeys","shiftTable","kL","kR","inp","inOff","outOff","_encrypt","_decrypt","_pad","_unpad","lStart","rStart","keyL","keyR","certificate","RSAPrivateKey","RSAPublicKey","null_","PublicKey","PrivateKeyInfo","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECParameters","namedCurve","ECPrivateKey","Sha1","init","_w","rotl5","rotl30","ft","readInt32BE","H","writeInt32BE","JsonWebTokenError","TokenExpiredError","expiredAt","Legacy","Base","md5","ZEROS","Hmac","alg","blocksize","_alg","ipad","_ipad","opad","_opad","getParamSize","paramBytesForAlg","ES256","ES384","ES512","paramBytes","afterTransform","ts","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","flush","prefinish","_write","_this2","err2","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","resolve","reject","requestData","requestHeaders","responseType","isFormData","XMLHttpRequest","auth","username","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","toUpperCase","params","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","transformData","throwIfCancellationRequested","throwIfRequested","transformRequest","merge","adapter","transformResponse","reason","bignum","DERDecoder","derDecodeTag","fail","readUInt8","tagClass","oct","tagStr","derDecodeLen","isEmpty","decodedTag","skip","_skipUntilEnd","possibleEnd","String","fromCharCode","readUInt16BE","numstr","printstr","identifiers","subident","first","second","year","mon","day","hour","sec","UTC","_getDecoder","cachedProperty","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","randomBytes","rng","pseudoRandomBytes","prng","createHash","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","dh","Sign","Verify","createECDH","rf","randomFill","randomFillSync","createCredentials","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","NPN_ENABLED","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","relativeURL","func","funcProto","objectProto","funcToString","objectCtorString","getPrototype","isHostObject","proto","Ctor","minAssert","minUtils","zero2","getNAF","getJSF","k1","k2","jsf","m8","d1","d2","u1","u2","m14","m24","computer","MontCurve","conf","i4","a24","Point","BasePoint","zero","normalize","rhs","pointFromJSON","fromJSON","dbl","aa","bb","nx","nz","diffAdd","da","mulAdd","jumlAdd","other","mgf","withPublic","crt","reverse","paddedMsg","iHash","hLen","hLen2","dblen","maskedDb","maskedSeed","oaep","cur","nonZero","pkcs1","__CANCEL__","SignStream","VerifyStream","ALGORITHMS","isValid","opts","Constructor","_classCallCheck","entry","target","custom","pkg","validators","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","validator","isDeprecated","formatMessage","opt","desc","console","warn","assertOptions","schema","allowUnknown","ieee754","kMaxLength","createBuffer","RangeError","__proto__","encodingOrOffset","array","fromArrayLike","fromArrayBuffer","actual","fromString","checked","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","foundIndex","found","hexWrite","Number","remaining","strLen","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","Symbol","species","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","stringtrim","base64clean","dst","PEMDecoder","lines","label","callback","Entity","decoders","encoders","_createNamed","named","_initNamed","nh","keyPair","keyFromPrivate","fromPrivate","genKeyPair","drbg","ns2","_truncateToN","truncOnly","msgBitLength","bkey","getPrivate","ns1","iter","kp","kpX","recoveryParam","canonical","sinv","_maxwellTrick","jmulAdd","getPublic","eqXToP","recoverPubKey","isYOdd","isSecondKey","pointFromX","rInv","getKeyRecoveryParam","Q","Qprime","copyProps","SafeBuffer","findPrime","simpleSieve","fermatTest","TWENTYFOUR","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","_getPrimes","n2","executor","resolvePromise","token","salt","keyBits","used","keyStart","ivStart","zBuffer","db","dif","p1","Sha256","ch","maj","sigma0","sigma1","gamma0","_f","_g","_h","f","T1","T2","Sha","des","modes","CBC","instantiate","EDE","modeName","_des","des3","DefaultContext","color","className","attr","IconContext","__assign","assign","__rest","getOwnPropertySymbols","propertyIsEnumerable","GenIcon","props","IconBase","Tree2Element","elem","title","svgProps","computedSize","stroke","strokeWidth","height","xmlns","Consumer","description","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","elliptic","formatReturnValue","p256","secp256r1","secp192r1","p384","p521","generateKeys","getPublicKey","computeSecret","inenc","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_priv","_importPrivate","emitErrorNT","readableDestroyed","writableDestroyed","errorEmitted","ending","finished","encryptStart","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","eject","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","toDER","ecSign","priv_key","dsaSign","isObject","isFunction","isArrayBuffer","FormData","isArrayBufferView","isNumber","isDate","isFile","isBlob","isStream","isURLSearchParams","URLSearchParams","product","assignValue","thisArg","stripBOM","localStorage","warned","trace","AuthCipher","MODES","StreamCipher","Splitter","_last","_mode","_autopadding","last","padded","unpad","setTo","autoPadding","serializedParams","parts","toISOString","hashmarkIndex","BaseCurve","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","precomputed","_fixedNafMul","_getDoubles","I","nafW","repr","jpoint","mixedAdd","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","encodeCompressed","compact","power","_getBeta","_hasDoubles","pem","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p2","q1","q2","ax","_endoWnafMulAdd","npoints","ncoeffs","endoMul","obj2point","ny","ys1","dyinv","_precompute","negate","zinv","zinv2","ay","pz2","z2","h2","h3","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","zs","xc","ResponseErrorType","errorType","ResponseErrorDetails","details","class","getMessage","ResponseData","errorDetails","errorMessage","getMessages","getErrorType","Response","ResponseException","exception","getErrorMessage","validateStatus","PADDING","padBuff","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","msCrypto","kMaxUint32","assertOffset","actualFill","browser","ourBuf","uint","getRandomValues","reTrim","reIsBadHex","reIsBinary","reIsOctal","reIsUint","freeParseInt","baseIsNaN","baseValues","object","iteratee","arrayMap","nativeKeys","nativeMax","arrayLikeKeys","inherited","isArrayLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","baseKeys","isLength","collection","fromIndex","guard","isSymbol","valueOf","isBinary","toFinite","toInteger","predicate","fromRight","baseFindIndex","baseIndexOf","i2ops","ZERO_BUF","checkParameters","subtle","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","iterations","importKey","deriveBits","keylen","prom","catch","checkNative","resp","sizes","rmd160","saltLen","shaFunc","getDigest","ipad1","ipad2","run","DK","block1","destPos","T","U","DataStream","_reverse","NotBeforeError","Sha224","getParamBytesForAlg","signatureAsBuffer","countPadding","maxEncodedParamLength","inputLength","TAG_SEQ","seqLength","TAG_INT","rLength","rOffset","sLength","sOffset","rPadding","sPadding","signatureBytes","rsBytes","shortLength","MAX_OCTET","arg1","arg2","arg3","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","WritableState","internalUtil","deprecate","realHasInstance","nop","writableObjectMode","writableHwm","writableHighWaterMark","finalCalled","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","need","getBuffer","hasInstance","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","dispatchRequest","interceptors","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","isSurrogatePair","htonl","zero8","join32","rotr32","sum32_3","sum32_4","sum64","ah","bh","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","eh","sum64_5_lo","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","jwa","JWS_REGEX","safeJsonParse","headerFromJWS","jwsSig","encodedHeader","signatureFromJWS","isValidJws","jwsVerify","secretOrKey","securedInput","securedInputFromJWS","jwsDecode","payloadFromJWS","typ","json","secretStream","getr","prime1","prime2","blinds","blinder","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","plural","ms","msAbs","isPlural","exec","parseFloat","long","fmtLong","fmtShort","isBoolean","isNull","isNullOrUndefined","isRegExp","isPrimitive","Sha512","Ch","xl","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","fh","gh","hh","fl","gl","xh","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","NODE_DEBUG","SEMVER_SPEC_VERSION","MAX_SAFE_INTEGER","safeRe","safeRegexReplacements","MAX_LENGTH","makeSafeRe","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","MAINVERSION","MAINVERSIONLOOSE","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","PRERELEASE","PRERELEASELOOSE","BUILDIDENTIFIER","LETTERDASHNUMBER","BUILD","FULL","FULLPLAIN","LOOSEPLAIN","LOOSE","GTLT","XRANGEIDENTIFIERLOOSE","XRANGEIDENTIFIER","XRANGEPLAIN","XRANGEPLAINLOOSE","XRANGE","XRANGELOOSE","COERCE","LONETILDE","TILDETRIM","RegExp","TILDE","TILDELOOSE","LONECARET","CARETTRIM","CARET","CARETLOOSE","COMPARATORLOOSE","COMPARATOR","COMPARATORTRIM","HYPHENRANGE","HYPHENRANGELOOSE","STAR","loose","includePrerelease","SemVer","major","minor","patch","prerelease","build","clean","compareMain","comparePre","compareIdentifiers","inc","release","identifier","version1","version2","prefix","defaultResult","numeric","anum","bnum","neq","op","Comparator","comp","ANY","operator","rcompareIdentifiers","compareLoose","rcompare","sort","rsort","Range","range","parseRange","isX","hyphenReplace","$0","fM","fm","fp","fpr","fb","to","tM","tm","tp","tpr","tb","testSet","allowed","outside","hilo","gtfn","ltefn","ltfn","ecomp","comparators","high","low","comparator","intersects","rangeTmp","sameDirectionIncreasing","sameDirectionDecreasing","sameSemVer","differentDirectionsInclusive","oppositeDirectionsLessThan","oppositeDirectionsGreaterThan","comps","compRe","pr","replaceCaret","replaceCarets","replaceTilde","replaceTildes","gtlt","xM","xm","replaceXRange","replaceXRanges","replaceStars","parseComparator","thisComparators","every","thisComparator","rangeComparators","rangeComparator","toComparators","maxSatisfying","versions","maxSV","rangeObj","minSatisfying","minSV","minVersion","minver","compver","validRange","ltr","gtr","r1","coerce","ck","_ghash","_finID","toPad","ivBits","calcIv","_secCache","_alen","_authTag","_called","rump","xorTest","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","objects","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","seen","stylize","stylizeNoColor","depth","colors","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","simple","formatPrimitive","visibleKeys","idx","arrayToHash","getOwnPropertyNames","formatError","braces","toUTCString","formatProperty","formatArray","pop","reduce","numLinesEst","reduceToSingleString","line","pid","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","setPrototypeOf","defineProperties","callbackify","callbackified","maybeCb","rej","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA256","errors","ReporterError","rethrow","pathLen","now","partial","captureStackTrace","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","aesid","fixProc","ciphers","compat","passphrase","subtype","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","cipher","cipherText","parameters","algorithms","_hashType","_tag","_signType","sigBuffer","PS_SUPPORTED","isInteger","SUPPORTED_ALGS","sign_options_schema","expiresIn","notBefore","audience","issuer","subject","jwtid","noTimestamp","keyid","mutatePayload","registered_claims_schema","iat","exp","nbf","parameterName","options_to_payload","options_for_objects","secretOrPrivateKey","isObjectPayload","kid","failure","validatePayload","invalid_options","validateOptions","timespan","claim","PEMEncoder","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","normalizeHeaderName","enhanceError","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","rawValue","parser","encoder","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","ignoreDuplicateOf","EDEState","k3","_edeState","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","before","Algorithm","generated","_finalized","sha512_K","SHA512","ch64_hi","yh","yl","zh","ch64_lo","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","deciphers","SystemAdminEmail","email","SYSTEM_ADMIN_EMAIL","ROWS_PER_PAGE","DownloadTypesEnum","CommentStatusEnum","ActionType","SORT_ORDER","PublicStatuses","NONE","ALL","COMMENTS","ATTACHMENTS","StaffStatuses","DateRanges","MenuItems","EISCUseSectionStatus","ReviewStatusEnum","DescriptionComplete","AwaitingComments","ClosedForComments","PublicReviewColumns","isSortable","minWidth","StaffReviewColumns","Sha384","outer","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","hex","checkPrime","__gen","_gen","getPrime","front","getGenerator","_secret","_pubBytes","privBytes","getSecret","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","milliseconds","move","_move","for","modrn","allocate","_toArrayLikeLE","position","_toArrayLikeBE","isNegNum","privEnc","pubEnc","derive","PUB_KEY_ALGS","RSA_KEY_ALGS","HS_ALGS","jwtString","secretOrPublicKey","clockTimestamp","decodedToken","secretCallback","hasSignature","ignoreNotBefore","clockTolerance","ignoreExpiration","audiences","aud","targetAudience","iss","jti","maxAge","maxAgeTimestamp","jwsSign","encodedPayload","jwsSecuredInput","isAbsoluteURL","combineURLs","requestedURL","ReflectOwnKeys","Reflect","ReflectApply","receiver","ownKeys","NumberIsNaN","errorListener","resolver","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","doError","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","normalizedName","SHA224","pending","pendingTotal","_delta8","_delta32","CBCState","_cbcInit","_cbcState","superProto","SHA384","AxiosPublic","Accept","AxiosPrivate","async","orsCookie","Cookies","getJSON","logout","profile","refreshToken","accessToken","getTime","tokenTimeLeft","refreshTokenTimeLeft","refreshResponse","post","newAccessToken","newRefreshToken","refreshExpiry","expires","setUserProfile","authorization","restartIdle","loggedIn","isLoggedIn","useReviews","hasReviewError","setError","useState","isFetchingReviews","setFetching","getReview","getReviews","useBoards","hasBoardError","isFetchingBoard","setFetchingBoard","isFetchingBoards","getBoards","queryParams","getBoard","abbr","useOrganizations","hasOrgError","isFetchingOrgs","getOrganizations","useReviewDownloads","isFetching","enqueueDownloadAttachments","reviewId","referenceId","downloadAttachments","useGetCommentSet","getCommentSetsByParams","organizationId","authorId","withComments","withReplies","getCommentSetById","commentSetId","getCommentSetByParams","commentSets","getPublicCommentSets","useGetUsers","users","setUsers","getUsers","useUpdateReviewStatus","setErrors","success","setSuccess","updateReviewStatus","has","table","WeakMap","counter","Cache","initialData","Map","entries","subs","serializeKey","notify","delete","subscribe","isSubscribed","_i","online","isOnline","isDocumentVisible","visibilityState","fetcher","fetch","registerOnFocus","registerOnReconnect","slowConnection","effectiveType","onLoadingSlow","onSuccess","onError","onErrorRetry","__","revalidate","errorRetryCount","retryCount","random","errorRetryInterval","focusThrottleInterval","dedupingInterval","loadingTimeout","refreshInterval","revalidateOnFocus","revalidateOnReconnect","refreshWhenHidden","refreshWhenOffline","shouldRetryOnError","suspense","dequal","bar","IS_SERVER","Deno","deno","rAF","useIsomorphicLayoutEffect","SWRConfigContext","displayName","__awaiter","_arguments","P","__generator","sent","trys","ops","verb","iterator","CONCURRENT_PROMISES","CONCURRENT_PROMISES_TS","FOCUS_REVALIDATORS","RECONNECT_REVALIDATORS","CACHE_REVALIDATORS","MUTATION_TS","MUTATION_END_TS","revalidate_1","revalidators","trigger","shouldRevalidate","keyErr","keyValidating","updaters","currentData","currentError","currentIsValidating","broadcastState","isValidating","_data","beforeMutationTs","beforeConcurrentPromisesTs","isAsyncMutation","err_1","shouldAbort","Provider","fnArgs","configRef","willRevalidateOnMount","revalidateOnMount","resolveData","cachedData","resolveIsValidating","initialError","initialIsValidating","stateDependencies","stateRef","latestData","latestError","rerender","dispatch","shouldUpdateState","unmountedRef","initialMountedRef","keyRef","eventsCallback","boundMutate","addRevalidator","keyedRevalidators","revalidateOpts","dedupe","loading","shouldDeduping","newData","startAt","newState","err_2","isUpdating","currentHookData","latestKeyedData","softRevalidate","unsubFocus","unsubReconnect","unsubUpdate","updatedData","updatedError","updatedIsValidating","needUpdate","timer","tick","memoizedState","mutate","fetchQuery","useCatalog","catalogCode","useSWR","isLoading","useUploadForm","uploadErrors","setUploadErrors","uploadedFiles","setUploadedFiles","files","file","formData","append","useUpdateReview","updateReview","useGetAllUsers","globalContext","useContext","GlobalContext","allUsers","setAllUsers","onLoad","showMessage","variant","useDistributionList","setIsFetching","items","setItems","getAll","query","distributionLists","generateQuery","searchFilter","statusFilter","dateFilter","developerFilter","orderBy","order","boardAbbr","_rand","getBytes","getByte","objectKeys","allowHalfOpen","onEndNT","0","1","2","3","MAX_ALLOC","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","p32","Kh","E","Ah","Bh","Dh","Eh","rh","sh","domain","secure","cookie","toGMTString","decodeURIComponent","remove"],"mappings":"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EAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,kEAAmE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,sEAEtsRC,IAAK,CACHttB,IAAK,EACLqtB,OAAQ,CAAC,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,iEAAkE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,kEAAmE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,mEAAoE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEAAqE,CAAC,mEAAoE,oEA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GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,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AG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,IAC/Q0lG,EAAK,CAAC,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,IAChR/3F,EAAI,CAAC,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAC1Rg4F,EAAK,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,K,sBCpE9R,oBAEA,GAAI9lF,EAAOgK,SAAWhK,EAAOgK,QAAQw3C,QACnC77C,EAAkB,aACb,GAAI3F,EAAOgK,SAAWhK,EAAOgK,QAAQ6K,QAAS,CAEnDlP,EADoB8D,SAASO,EAAQ6K,QAAQtd,MAAM,KAAK,GAAGsL,MAAM,GAAI,KAClC,EAAI,QAAU,cAEjD8C,EAAkB,QAEpBpmB,EAAOC,QAAUmmB,I,kECRjB,IAAI7K,EAAQ,EAAQ,QACpBvb,EAAOC,QAAUsb,EAAMqU,uBAGd,CACLhI,MAAO,SAAe5Q,EAAMmR,EAAOquE,EAAS5yD,EAAM4iE,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAOx/E,KAAKlQ,EAAO,IAAMi/B,mBAAmB9tB,IACxC5M,EAAM07C,SAASu/B,IACjBkQ,EAAOx/E,KAAK,WAAa,IAAI4Q,KAAK0+D,GAASmQ,eAEzCprF,EAAM4V,SAASyS,IACjB8iE,EAAOx/E,KAAK,QAAU0c,GAEpBroB,EAAM4V,SAASq1E,IACjBE,EAAOx/E,KAAK,UAAYs/E,IAEX,IAAXC,GACFC,EAAOx/E,KAAK,UAEdiJ,SAASu2E,OAASA,EAAOr9E,KAAK,OAEhC1C,KAAM,SAAc3P,GAClB,IAAIytB,EAAQtU,SAASu2E,OAAOjiE,MAAM,IAAImxC,OAAO,aAAe5+D,EAAO,cACnE,OAAOytB,EAAQmiE,mBAAmBniE,EAAM,IAAM,MAEhDoiE,OAAQ,SAAgB7vF,GACtBvX,KAAKmoB,MAAM5Q,EAAM,GAAI8gB,KAAKwqD,MAAQ,SAM/B,CACL16D,MAAO,aACPjB,KAAM,WACJ,OAAO,MAETkgF,OAAQ","file":"33241534ba6f3cb283901c6b5b11a0282aafb67a-d30da4b14c9004c7d2de.js","sourcesContent":["(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 this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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);","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict';\n\nvar asn = require('asn1.js');\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n });\n});\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(this.key('type').objid(), this.key('value').any());\n});\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('parameters').optional(), this.key('curve').objid().optional());\n});\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue);\n});\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName);\n});\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n });\n});\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(this.key('notBefore').use(Time), this.key('notAfter').use(Time));\n});\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(this.key('extnID').objid(), this.key('critical').bool().def(false), this.key('extnValue').octstr());\n});\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(this.key('version').explicit(0)['int']().optional(), this.key('serialNumber')['int'](), this.key('signature').use(AlgorithmIdentifier), this.key('issuer').use(Name), this.key('validity').use(Validity), this.key('subject').use(Name), this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo), this.key('issuerUniqueID').implicit(1).bitstr().optional(), this.key('subjectUniqueID').implicit(2).bitstr().optional(), this.key('extensions').explicit(3).seqof(Extension).optional());\n});\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(this.key('tbsCertificate').use(TBSCertificate), this.key('signatureAlgorithm').use(AlgorithmIdentifier), this.key('signatureValue').bitstr());\n});\nmodule.exports = X509Certificate;","var hash = exports;\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;","'use strict';\n\nvar Buffer = require('buffer').Buffer;\nvar inherits = require('inherits');\nvar HashBase = require('hash-base');\nvar ARRAY16 = new Array(16);\nvar zl = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar zr = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar sl = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sr = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e];\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000];\nfunction RIPEMD160() {\n HashBase.call(this, 64);\n\n // state\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n}\ninherits(RIPEMD160, HashBase);\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16;\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4);\n var al = this._a | 0;\n var bl = this._b | 0;\n var cl = this._c | 0;\n var dl = this._d | 0;\n var el = this._e | 0;\n var ar = this._a | 0;\n var br = this._b | 0;\n var cr = this._c | 0;\n var dr = this._d | 0;\n var er = this._e | 0;\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl;\n var tr;\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]);\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]);\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]);\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]);\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]);\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]);\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]);\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]);\n } else {\n // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]);\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]);\n }\n al = el;\n el = dl;\n dl = rotl(cl, 10);\n cl = bl;\n bl = tl;\n ar = er;\n er = dr;\n dr = rotl(cr, 10);\n cr = br;\n br = tr;\n }\n\n // update state\n var t = this._b + cl + dr | 0;\n this._b = this._c + dl + er | 0;\n this._c = this._d + el + ar | 0;\n this._d = this._e + al + br | 0;\n this._e = this._a + bl + cr | 0;\n this._a = t;\n};\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n this._update();\n this._blockOffset = 0;\n }\n this._block.fill(0, this._blockOffset, 56);\n this._block.writeUInt32LE(this._length[0], 56);\n this._block.writeUInt32LE(this._length[1], 60);\n this._update();\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n buffer.writeInt32LE(this._e, 16);\n return buffer;\n};\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\nfunction fn1(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + e | 0;\n}\nfunction fn2(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + e | 0;\n}\nfunction fn3(a, b, c, d, e, m, k, s) {\n return rotl(a + ((b | ~c) ^ d) + m + k | 0, s) + e | 0;\n}\nfunction fn4(a, b, c, d, e, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + e | 0;\n}\nfunction fn5(a, b, c, d, e, m, k, s) {\n return rotl(a + (b ^ (c | ~d)) + m + k | 0, s) + e | 0;\n}\nmodule.exports = RIPEMD160;","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = typeof self !== \"undefined\" && self.setImmediate || typeof global !== \"undefined\" && global.setImmediate || this && this.setImmediate;\nexports.clearImmediate = typeof self !== \"undefined\" && self.clearImmediate || typeof global !== \"undefined\" && global.clearImmediate || this && this.clearImmediate;","var jws = require('jws');\nmodule.exports = function (jwt, options) {\n options = options || {};\n var decoded = jws.decode(jwt, options);\n if (!decoded) {\n return null;\n }\n var payload = decoded.payload;\n\n //try parse the payload\n if (typeof payload === 'string') {\n try {\n var obj = JSON.parse(payload);\n if (obj !== null && typeof obj === 'object') {\n payload = obj;\n }\n } catch (e) {}\n }\n\n //return header if `complete` option is enabled. header includes claims\n //such as `kid` and `alg` used to select the key within a JWKS needed to\n //verify the signature\n if (options.complete === true) {\n return {\n header: decoded.header,\n payload: payload,\n signature: decoded.signature\n };\n }\n return payload;\n};","module.exports = require('events').EventEmitter;","var generatePrime = require('./lib/generatePrime');\nvar primes = require('./lib/primes.json');\nvar DH = require('./lib/dh');\nfunction getDiffieHellman(mod) {\n var prime = new Buffer(primes[mod].prime, 'hex');\n var gen = new Buffer(primes[mod].gen, 'hex');\n return new DH(prime, gen);\n}\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n return new DH(prime, generator, true);\n}\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;","var Buffer = require('safe-buffer').Buffer;\nvar ZEROES = Buffer.alloc(16, 0);\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\nfunction fromArray(out) {\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0] >>> 0, 0);\n buf.writeUInt32BE(out[1] >>> 0, 4);\n buf.writeUInt32BE(out[2] >>> 0, 8);\n buf.writeUInt32BE(out[3] >>> 0, 12);\n return buf;\n}\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n this._multiply();\n};\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h);\n var Zi = [0, 0, 0, 0];\n var j, xi, lsbVi;\n var i = -1;\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0];\n Zi[1] ^= Vi[1];\n Zi[2] ^= Vi[2];\n Zi[3] ^= Vi[3];\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0;\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n Vi[0] = Vi[0] >>> 1;\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n this.state = fromArray(Zi);\n};\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n this.ghash(chunk);\n }\n};\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\nmodule.exports = GHASH;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n return needMoreData(state);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n if (!(this instanceof EDDSA)) return new EDDSA(curve);\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({\n R: R,\n S: S,\n Rencoded: Rencoded\n });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n if (sig.S().gte(sig.eddsa.curve.n) || sig.S().isNeg()) {\n return false;\n }\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++) hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature) return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() :\n// Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad;\n var i = -1;\n var len = 8;\n var out = 0;\n var bit, value;\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev);\n bit = byteParam & 1 << 7 - i ? 0x80 : 0;\n value = pad[0] ^ bit;\n out += (value & 0x80) >> i % 8;\n self._prev = shiftIn(self._prev, decrypt ? bit : value);\n }\n return out;\n}\nfunction shiftIn(buffer, value) {\n var len = buffer.length;\n var i = -1;\n var out = Buffer.allocUnsafe(buffer.length);\n buffer = Buffer.concat([buffer, Buffer.from([value])]);\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG)) return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac().update(this.V).update([0x00]);\n if (seed) kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed) return;\n this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest();\n this.V = this._hmac().update(this.V).digest();\n};\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval) throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};","var bn = require('bn.js');\nvar brorand = require('brorand');\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do var a = new bn(this.rand.generate(min_bytes)); while (a.cmp(n) >= 0);\n return a;\n};\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb) cb(a);\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return false;\n if (x.cmp(rn1) === 0) break;\n }\n if (i === s) return false;\n }\n return prime;\n};\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n if (!k) k = Math.max(1, len / 48 | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n var rn1 = n1.toRed(red);\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0) return g;\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) continue;\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n if (x.cmp(rone) === 0) return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0) break;\n }\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n return false;\n};","var xor = require('buffer-xor');\nvar Buffer = require('safe-buffer').Buffer;\nvar incr32 = require('../incr32');\nfunction getBlock(self) {\n var out = self._cipher.encryptBlockRaw(self._prev);\n incr32(self._prev);\n return out;\n}\nvar blockSize = 16;\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize);\n var start = self._cache.length;\n self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]);\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self);\n var offset = start + i * blockSize;\n self._cache.writeUInt32BE(out[0], offset + 0);\n self._cache.writeUInt32BE(out[1], offset + 4);\n self._cache.writeUInt32BE(out[2], offset + 8);\n self._cache.writeUInt32BE(out[3], offset + 12);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n};\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n buffer[offset + i - d] |= s * 128;\n};","var semver = require('semver');\nmodule.exports = semver.satisfies(process.version, '^6.12.0 || >=8.0.0');","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\n\n// Import DER constants\nvar der = asn1.constants.der;\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}\n;\nmodule.exports = DEREncoder;\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 base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n var header = new Buffer(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 var lenOctets = 1;\n for (var i = content.length; i >= 0x100; i >>= 8) lenOctets++;\n var header = new Buffer(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) header[i] = j & 0xff;\n return this._createEncoderBuffer([header, content]);\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 var buf = new Buffer(str.length * 2);\n for (var 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 ' + '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 ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + '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 + ' unsupported');\n }\n};\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values) return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s\\.]+/g);\n for (var i = 0; i < id.length; i++) id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (var i = 0; i < id.length; i++) id[i] |= 0;\n }\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\n if (!relative) {\n if (id[1] >= 40) 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 var size = 0;\n for (var i = 0; i < id.length; i++) {\n var ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7) size++;\n }\n var objid = new Buffer(size);\n var offset = objid.length - 1;\n for (var i = id.length - 1; i >= 0; i--) {\n var ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0) objid[offset--] = 0x80 | ident & 0x7f;\n }\n return this._createEncoderBuffer(objid);\n};\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n if (tag === 'gentime') {\n str = [two(date.getFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else if (tag === 'utctime') {\n str = [two(date.getFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n return this._encodeStr(str, 'octstr');\n};\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values) 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: ' + JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = new Buffer(numArray);\n }\n if (Buffer.isBuffer(num)) {\n var size = num.length;\n if (num.length === 0) size++;\n var out = new Buffer(size);\n num.copy(out);\n if (num.length === 0) out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n for (var i = num; i >= 0x100; i >>= 8) size++;\n var out = new Array(size);\n for (var 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 return this._createEncoderBuffer(new Buffer(out));\n};\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n var state = this._baseState;\n var i;\n if (state['default'] === null) return false;\n var data = dataBuffer.join();\n if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n if (data.length !== state.defaultBuffer.length) return false;\n for (i = 0; i < data.length; i++) if (data[i] !== state.defaultBuffer[i]) return false;\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n var res;\n if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set';\n if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag);\n if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported');\n if (!primitive) res |= 0x20;\n res |= der.tagClassByName[cls || 'universal'] << 6;\n return res;\n}","'use strict';\n\nvar curves = exports;\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\nvar assert = utils.assert;\nfunction PresetCurve(options) {\n if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function () {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve\n });\n return curve;\n }\n });\n}\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811']\n});\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34']\n});\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5']\n});\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f']\n});\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650']\n});\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['9']\n});\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [{\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3'\n }, {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15'\n }],\n gRed: false,\n g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre]\n});","/*jshint node:true */\n'use strict';\n\nvar Buffer = require('buffer').Buffer; // browserify\nvar SlowBuffer = require('buffer').SlowBuffer;\nmodule.exports = bufferEq;\nfunction bufferEq(a, b) {\n // shortcutting on type is necessary for correctness\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n return false;\n }\n\n // buffer sizes should be well-known information, so despite this\n // shortcutting, it doesn't leak any information about the *contents* of the\n // buffers.\n if (a.length !== b.length) {\n return false;\n }\n var c = 0;\n for (var i = 0; i < a.length; i++) {\n /*jshint bitwise:false */\n c |= a[i] ^ b[i]; // XOR\n }\n return c === 0;\n}\nbufferEq.install = function () {\n Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {\n return bufferEq(this, that);\n };\n};\nvar origBufEqual = Buffer.prototype.equal;\nvar origSlowBufEqual = SlowBuffer.prototype.equal;\nbufferEq.restore = function () {\n Buffer.prototype.equal = origBufEqual;\n SlowBuffer.prototype.equal = origSlowBufEqual;\n};","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n return data;\n};","var indexOf = function (xs, item) {\n if (xs.indexOf) return xs.indexOf(item);else for (var i = 0; i < xs.length; i++) {\n if (xs[i] === item) return i;\n }\n return -1;\n};\nvar Object_keys = function (obj) {\n if (Object.keys) return Object.keys(obj);else {\n var res = [];\n for (var key in obj) res.push(key);\n return res;\n }\n};\nvar forEach = function (xs, fn) {\n if (xs.forEach) return xs.forEach(fn);else for (var i = 0; i < xs.length; i++) {\n fn(xs[i], i, xs);\n }\n};\nvar defineProp = function () {\n try {\n Object.defineProperty({}, '_', {});\n return function (obj, name, value) {\n Object.defineProperty(obj, name, {\n writable: true,\n enumerable: false,\n configurable: true,\n value: value\n });\n };\n } catch (e) {\n return function (obj, name, value) {\n obj[name] = value;\n };\n }\n}();\nvar globals = ['Array', 'Boolean', 'Date', 'Error', 'EvalError', 'Function', 'Infinity', 'JSON', 'Math', 'NaN', 'Number', 'Object', 'RangeError', 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError', 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', 'undefined', 'unescape'];\nfunction Context() {}\nContext.prototype = {};\nvar Script = exports.Script = function NodeScript(code) {\n if (!(this instanceof Script)) return new Script(code);\n this.code = code;\n};\nScript.prototype.runInContext = function (context) {\n if (!(context instanceof Context)) {\n throw new TypeError(\"needs a 'context' argument.\");\n }\n var iframe = document.createElement('iframe');\n if (!iframe.style) iframe.style = {};\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n var win = iframe.contentWindow;\n var wEval = win.eval,\n wExecScript = win.execScript;\n if (!wEval && wExecScript) {\n // win.eval() magically appears when this is called in IE:\n wExecScript.call(win, 'null');\n wEval = win.eval;\n }\n forEach(Object_keys(context), function (key) {\n win[key] = context[key];\n });\n forEach(globals, function (key) {\n if (context[key]) {\n win[key] = context[key];\n }\n });\n var winKeys = Object_keys(win);\n var res = wEval.call(win, this.code);\n forEach(Object_keys(win), function (key) {\n // Avoid copying circular objects like `top` and `window` by only\n // updating existing context properties or new properties in the `win`\n // that was only introduced after the eval.\n if (key in context || indexOf(winKeys, key) === -1) {\n context[key] = win[key];\n }\n });\n forEach(globals, function (key) {\n if (!(key in context)) {\n defineProp(context, key, win[key]);\n }\n });\n document.body.removeChild(iframe);\n return res;\n};\nScript.prototype.runInThisContext = function () {\n return eval(this.code); // maybe...\n};\nScript.prototype.runInNewContext = function (context) {\n var ctx = Script.createContext(context);\n var res = this.runInContext(ctx);\n if (context) {\n forEach(Object_keys(ctx), function (key) {\n context[key] = ctx[key];\n });\n }\n return res;\n};\nforEach(Object_keys(Script.prototype), function (name) {\n exports[name] = Script[name] = function (code) {\n var s = Script(code);\n return s[name].apply(s, [].slice.call(arguments, 1));\n };\n});\nexports.isContext = function (context) {\n return context instanceof Context;\n};\nexports.createScript = function (code) {\n return exports.Script(code);\n};\nexports.createContext = Script.createContext = function (context) {\n var copy = new Context();\n if (typeof context === 'object') {\n forEach(Object_keys(context), function (key) {\n copy[key] = context[key];\n });\n }\n return copy;\n};","exports.publicEncrypt = require('./publicEncrypt');\nexports.privateDecrypt = require('./privateDecrypt');\nexports.privateEncrypt = function privateEncrypt(key, buf) {\n return exports.publicEncrypt(key, buf, true);\n};\nexports.publicDecrypt = function publicDecrypt(key, buf) {\n return exports.privateDecrypt(key, buf, true);\n};","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer;\nfunction asUInt32Array(buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n var len = buf.length / 4 | 0;\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n return out;\n}\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\n}\nfunction cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0];\n var SUB_MIX1 = SUB_MIX[1];\n var SUB_MIX2 = SUB_MIX[2];\n var SUB_MIX3 = SUB_MIX[3];\n var s0 = M[0] ^ keySchedule[0];\n var s1 = M[1] ^ keySchedule[1];\n var s2 = M[2] ^ keySchedule[2];\n var s3 = M[3] ^ keySchedule[3];\n var t0, t1, t2, t3;\n var ksRow = 4;\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++];\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++];\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++];\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++];\n s0 = t0;\n s1 = t1;\n s2 = t2;\n s3 = t3;\n }\n t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n t0 = t0 >>> 0;\n t1 = t1 >>> 0;\n t2 = t2 >>> 0;\n t3 = t3 >>> 0;\n return [t0, t1, t2, t3];\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1;\n } else {\n d[j] = j << 1 ^ 0x11b;\n }\n }\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []];\n\n // Walk GF(2^8)\n var x = 0;\n var xi = 0;\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4;\n sx = sx >>> 8 ^ sx & 0xff ^ 0x63;\n SBOX[x] = sx;\n INV_SBOX[sx] = x;\n\n // Compute multiplication\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4];\n\n // Compute sub bytes, mix columns tables\n var t = d[sx] * 0x101 ^ sx * 0x1010100;\n SUB_MIX[0][x] = t << 24 | t >>> 8;\n SUB_MIX[1][x] = t << 16 | t >>> 16;\n SUB_MIX[2][x] = t << 8 | t >>> 24;\n SUB_MIX[3][x] = t;\n\n // Compute inv sub bytes, inv mix columns tables\n t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100;\n INV_SUB_MIX[0][sx] = t << 24 | t >>> 8;\n INV_SUB_MIX[1][sx] = t << 16 | t >>> 16;\n INV_SUB_MIX[2][sx] = t << 8 | t >>> 24;\n INV_SUB_MIX[3][sx] = t;\n if (x === 0) {\n x = xi = 1;\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]];\n xi ^= d[d[xi]];\n }\n }\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\nfunction AES(key) {\n this._key = asUInt32Array(key);\n this._reset();\n}\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\nAES.prototype._reset = function () {\n var keyWords = this._key;\n var keySize = keyWords.length;\n var nRounds = keySize + 6;\n var ksRows = (nRounds + 1) * 4;\n var keySchedule = [];\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n if (k % keySize === 0) {\n t = t << 8 | t >>> 24;\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n t ^= RCON[k / keySize | 0] << 24;\n } else if (keySize > 6 && k % keySize === 4) {\n t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff];\n }\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n var invKeySchedule = [];\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt;\n } else {\n invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]];\n }\n }\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[1], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[3], 12);\n return buf;\n};\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M);\n\n // swap\n var m1 = M[1];\n M[1] = M[3];\n M[3] = m1;\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds);\n var buf = Buffer.allocUnsafe(16);\n buf.writeUInt32BE(out[0], 0);\n buf.writeUInt32BE(out[3], 4);\n buf.writeUInt32BE(out[2], 8);\n buf.writeUInt32BE(out[1], 12);\n return buf;\n};\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\nmodule.exports.AES = AES;","module.exports = require('./lib/_stream_writable.js');","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\nvar Buffer = require('safe-buffer').Buffer;\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n case 'raw':\n return true;\n default:\n return false;\n }\n};\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n}\n;\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var Buffer = require('safe-buffer').Buffer;\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize);\n this._finalSize = finalSize;\n this._blockSize = blockSize;\n this._len = 0;\n}\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8';\n data = Buffer.from(data, enc);\n }\n var block = this._block;\n var blockSize = this._blockSize;\n var length = data.length;\n var accum = this._len;\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize;\n var remainder = Math.min(length - offset, blockSize - assigned);\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i];\n }\n accum += remainder;\n offset += remainder;\n if (accum % blockSize === 0) {\n this._update(block);\n }\n }\n this._len += length;\n return this;\n};\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize;\n this._block[rem] = 0x80;\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1);\n if (rem >= this._finalSize) {\n this._update(this._block);\n this._block.fill(0);\n }\n var bits = this._len * 8;\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4);\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0;\n var highBits = (bits - lowBits) / 0x100000000;\n this._block.writeUInt32BE(highBits, this._blockSize - 8);\n this._block.writeUInt32BE(lowBits, this._blockSize - 4);\n }\n this._update(this._block);\n var hash = this._hash();\n return enc ? hash.toString(enc) : hash;\n};\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass');\n};\nmodule.exports = Hash;","var Reporter = require('../base').Reporter;\nvar EncoderBuffer = require('../base').EncoderBuffer;\nvar DecoderBuffer = require('../base').DecoderBuffer;\nvar assert = require('minimalistic-assert');\n\n// Supported tags\nvar tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'];\n\n// Public methods list\nvar methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags);\n\n// Overrided methods list\nvar overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool'];\nfunction Node(enc, parent) {\n var state = {};\n this._baseState = state;\n state.enc = enc;\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;\nvar stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains'];\nNode.prototype.clone = function clone() {\n var state = this._baseState;\n var cstate = {};\n stateProps.forEach(function (prop) {\n cstate[prop] = state[prop];\n });\n var res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\nNode.prototype._wrap = function wrap() {\n var state = this._baseState;\n methods.forEach(function (method) {\n this[method] = function _wrappedMethod() {\n var clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\nNode.prototype._init = function init(body) {\n var state = this._baseState;\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};\nNode.prototype._useArgs = function useArgs(args) {\n var state = this._baseState;\n\n // Filter children and args\n var 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 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) return arg;\n var res = {};\n Object.keys(arg).forEach(function (key) {\n if (key == (key | 0)) key |= 0;\n var 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 var 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 var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n assert(state.tag === null);\n state.tag = tag;\n this._useArgs(args);\n return this;\n };\n});\nNode.prototype.use = function use(item) {\n assert(item);\n var state = this._baseState;\n assert(state.use === null);\n state.use = item;\n return this;\n};\nNode.prototype.optional = function optional() {\n var state = this._baseState;\n state.optional = true;\n return this;\n};\nNode.prototype.def = function def(val) {\n var state = this._baseState;\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n return this;\n};\nNode.prototype.explicit = function explicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n return this;\n};\nNode.prototype.implicit = function implicit(num) {\n var state = this._baseState;\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n return this;\n};\nNode.prototype.obj = function obj() {\n var state = this._baseState;\n var args = Array.prototype.slice.call(arguments);\n state.obj = true;\n if (args.length !== 0) this._useArgs(args);\n return this;\n};\nNode.prototype.key = function key(newKey) {\n var state = this._baseState;\n assert(state.key === null);\n state.key = newKey;\n return this;\n};\nNode.prototype.any = function any() {\n var state = this._baseState;\n state.any = true;\n return this;\n};\nNode.prototype.choice = function choice(obj) {\n var state = this._baseState;\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function (key) {\n return obj[key];\n }));\n return this;\n};\nNode.prototype.contains = function contains(item) {\n var state = this._baseState;\n assert(state.use === null);\n state.contains = item;\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options));\n var result = state['default'];\n var present = true;\n var prevKey = null;\n if (state.key !== null) prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n var tag = null;\n if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag;\n if (tag === null && !state.any) {\n // Trial and Error\n var save = input.save();\n try {\n if (state.choice === null) this._decodeGeneric(state.tag, input, options);else 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 if (input.isError(present)) return present;\n }\n }\n\n // Push object on stack\n var prevObj;\n if (state.obj && present) prevObj = input.enterObject();\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n var explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit)) return explicit;\n input = explicit;\n }\n var start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n if (state.any) var save = input.save();\n var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any);\n if (input.isError(body)) return body;\n if (state.any) result = input.raw(save);else input = body;\n }\n if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged');\n if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) result = result;else if (state.choice === null) result = this._decodeGeneric(state.tag, input, options);else result = this._decodeChoice(input, options);\n if (input.isError(result)) 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 var data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present) result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey);\n return result;\n};\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n var state = this._baseState;\n if (tag === 'seq' || tag === 'set') return null;\n if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options);\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\nNode.prototype._getUse = function _getUse(entity, obj) {\n var 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};\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n var state = this._baseState;\n var result = null;\n var match = false;\n Object.keys(state.choice).some(function (key) {\n var save = input.save();\n var node = state.choice[key];\n try {\n var value = node._decode(input, options);\n if (input.isError(value)) return false;\n result = {\n type: key,\n value: value\n };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n if (!match) return input.error('Choice not matched');\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\nNode.prototype._encode = function encode(data, reporter, parent) {\n var state = this._baseState;\n if (state['default'] !== null && state['default'] === data) return;\n var result = this._encodeValue(data, reporter, parent);\n if (result === undefined) return;\n if (this._skipDefault(result, reporter, parent)) return;\n return result;\n};\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n var state = this._baseState;\n\n // Decode root node\n if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter());\n var 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) data = state['default'];else return;\n }\n\n // Encode children first\n var content = null;\n var 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_') return child._encode(null, reporter, data);\n if (child._baseState.key === null) return reporter.error('Child should have a key');\n var prevKey = reporter.enterKey(child._baseState.key);\n if (typeof data !== 'object') return reporter.error('Child expected, but input is not object');\n var res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\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)) return reporter.error('Too many args for : ' + state.tag);\n if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array');\n var child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function (item) {\n var state = this._baseState;\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 var result;\n if (!state.any && state.choice === null) {\n var tag = state.implicit !== null ? state.implicit : state.tag;\n var cls = state.implicit === null ? 'universal' : 'context';\n if (tag === null) {\n if (state.use === null) reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result);\n return result;\n};\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n var state = this._baseState;\n var node = state.choice[data.type];\n if (!node) {\n assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n var state = this._baseState;\n if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag);\n};\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str);\n};","var DES = require('browserify-des');\nvar aes = require('browserify-aes/browser');\nvar aesModes = require('browserify-aes/modes');\nvar desModes = require('browserify-des/modes');\nvar ebtk = require('evp_bytestokey');\nfunction createCipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nfunction createDecipher(suite, password) {\n suite = suite.toLowerCase();\n var keyLen, ivLen;\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key;\n ivLen = aesModes[suite].iv;\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8;\n ivLen = desModes[suite].iv;\n } else {\n throw new TypeError('invalid suite type');\n }\n var keys = ebtk(password, false, keyLen, ivLen);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nfunction createCipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite\n });\n throw new TypeError('invalid suite type');\n}\nfunction createDecipheriv(suite, key, iv) {\n suite = suite.toLowerCase();\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv);\n if (desModes[suite]) return new DES({\n key: key,\n iv: iv,\n mode: suite,\n decrypt: true\n });\n throw new TypeError('invalid suite type');\n}\nfunction getCiphers() {\n return Object.keys(desModes).concat(aes.getCiphers());\n}\nexports.createCipher = exports.Cipher = createCipher;\nexports.createCipheriv = exports.Cipheriv = createCipheriv;\nexports.createDecipher = exports.Decipher = createDecipher;\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","module.exports = {\n doubles: {\n step: 4,\n points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']]\n },\n naf: {\n wnd: 7,\n points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']]\n }\n};","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, 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} else {\n // old school shim for old browsers\n module.exports = 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}","var bufferEqual = require('buffer-equal-constant-time');\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = require('crypto');\nvar formatEcdsa = require('ecdsa-sig-formatter');\nvar util = require('util');\nvar MSG_INVALID_ALGORITHM = '\"%s\" is not a valid algorithm.\\n Supported algorithms are:\\n \"HS256\", \"HS384\", \"HS512\", \"RS256\", \"RS384\", \"RS512\", \"PS256\", \"PS384\", \"PS512\", \"ES256\", \"ES384\", \"ES512\" and \"none\".';\nvar MSG_INVALID_SECRET = 'secret must be a string or buffer';\nvar MSG_INVALID_VERIFIER_KEY = 'key must be a string or a buffer';\nvar MSG_INVALID_SIGNER_KEY = 'key must be a string, a buffer or an object';\nvar supportsKeyObjects = typeof crypto.createPublicKey === 'function';\nif (supportsKeyObjects) {\n MSG_INVALID_VERIFIER_KEY += ' or a KeyObject';\n MSG_INVALID_SECRET += 'or a KeyObject';\n}\nfunction checkIsPublicKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return;\n }\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.type !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.asymmetricKeyType !== 'string') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_VERIFIER_KEY);\n }\n}\n;\nfunction checkIsPrivateKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return;\n }\n if (typeof key === 'object') {\n return;\n }\n throw typeError(MSG_INVALID_SIGNER_KEY);\n}\n;\nfunction checkIsSecretKey(key) {\n if (Buffer.isBuffer(key)) {\n return;\n }\n if (typeof key === 'string') {\n return key;\n }\n if (!supportsKeyObjects) {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (typeof key !== 'object') {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (key.type !== 'secret') {\n throw typeError(MSG_INVALID_SECRET);\n }\n if (typeof key.export !== 'function') {\n throw typeError(MSG_INVALID_SECRET);\n }\n}\nfunction fromBase64(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction toBase64(base64url) {\n base64url = base64url.toString();\n var padding = 4 - base64url.length % 4;\n if (padding !== 4) {\n for (var i = 0; i < padding; ++i) {\n base64url += '=';\n }\n }\n return base64url.replace(/\\-/g, '+').replace(/_/g, '/');\n}\nfunction typeError(template) {\n var args = [].slice.call(arguments, 1);\n var errMsg = util.format.bind(util, template).apply(null, args);\n return new TypeError(errMsg);\n}\nfunction bufferOrString(obj) {\n return Buffer.isBuffer(obj) || typeof obj === 'string';\n}\nfunction normalizeInput(thing) {\n if (!bufferOrString(thing)) thing = JSON.stringify(thing);\n return thing;\n}\nfunction createHmacSigner(bits) {\n return function sign(thing, secret) {\n checkIsSecretKey(secret);\n thing = normalizeInput(thing);\n var hmac = crypto.createHmac('sha' + bits, secret);\n var sig = (hmac.update(thing), hmac.digest('base64'));\n return fromBase64(sig);\n };\n}\nfunction createHmacVerifier(bits) {\n return function verify(thing, signature, secret) {\n var computedSig = createHmacSigner(bits)(thing, secret);\n return bufferEqual(Buffer.from(signature), Buffer.from(computedSig));\n };\n}\nfunction createKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n // Even though we are specifying \"RSA\" here, this works with ECDSA\n // keys as well.\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign(privateKey, 'base64'));\n return fromBase64(sig);\n };\n}\nfunction createKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify(publicKey, signature, 'base64');\n };\n}\nfunction createPSSKeySigner(bits) {\n return function sign(thing, privateKey) {\n checkIsPrivateKey(privateKey);\n thing = normalizeInput(thing);\n var signer = crypto.createSign('RSA-SHA' + bits);\n var sig = (signer.update(thing), signer.sign({\n key: privateKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, 'base64'));\n return fromBase64(sig);\n };\n}\nfunction createPSSKeyVerifier(bits) {\n return function verify(thing, signature, publicKey) {\n checkIsPublicKey(publicKey);\n thing = normalizeInput(thing);\n signature = toBase64(signature);\n var verifier = crypto.createVerify('RSA-SHA' + bits);\n verifier.update(thing);\n return verifier.verify({\n key: publicKey,\n padding: crypto.constants.RSA_PKCS1_PSS_PADDING,\n saltLength: crypto.constants.RSA_PSS_SALTLEN_DIGEST\n }, signature, 'base64');\n };\n}\nfunction createECDSASigner(bits) {\n var inner = createKeySigner(bits);\n return function sign() {\n var signature = inner.apply(null, arguments);\n signature = formatEcdsa.derToJose(signature, 'ES' + bits);\n return signature;\n };\n}\nfunction createECDSAVerifer(bits) {\n var inner = createKeyVerifier(bits);\n return function verify(thing, signature, publicKey) {\n signature = formatEcdsa.joseToDer(signature, 'ES' + bits).toString('base64');\n var result = inner(thing, signature, publicKey);\n return result;\n };\n}\nfunction createNoneSigner() {\n return function sign() {\n return '';\n };\n}\nfunction createNoneVerifier() {\n return function verify(thing, signature) {\n return signature === '';\n };\n}\nmodule.exports = function jwa(algorithm) {\n var signerFactories = {\n hs: createHmacSigner,\n rs: createKeySigner,\n ps: createPSSKeySigner,\n es: createECDSASigner,\n none: createNoneSigner\n };\n var verifierFactories = {\n hs: createHmacVerifier,\n rs: createKeyVerifier,\n ps: createPSSKeyVerifier,\n es: createECDSAVerifer,\n none: createNoneVerifier\n };\n var match = algorithm.match(/^(RS|PS|ES|HS)(256|384|512)$|^(none)$/i);\n if (!match) throw typeError(MSG_INVALID_ALGORITHM, algorithm);\n var algo = (match[1] || match[3]).toLowerCase();\n var bits = match[2];\n return {\n sign: signerFactories[algo](bits),\n verify: verifierFactories[algo](bits)\n };\n};","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off];\n return res >>> 0;\n};\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = value >>> 16 & 0xff;\n bytes[2 + off] = value >>> 8 & 0xff;\n bytes[3 + off] = value & 0xff;\n};\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= inR >>> j + i & 1;\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= inR >>> j + i & 1;\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inR >> j + i & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\nvar pc2table = [\n// inL => outL\n14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26,\n// inR => outR\n15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24];\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\nvar sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11];\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = inL >>> 18 - i * 6 & 0x3f;\n var sb = sTable[i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = inR >>> 18 - i * 6 & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\nvar permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7];\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n return out >>> 0;\n};\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size) str = '0' + str;\n var out = [];\n for (var i = 0; i < size; i += group) out.push(str.slice(i, i + group));\n return out.join(' ');\n};","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\nvar sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];\nfunction SHA1() {\n if (!(this instanceof SHA1)) return new SHA1();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.W = new Array(80);\n}\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n for (var i = 0; i < 16; i++) W[i] = msg[start + i];\n for (; i < W.length; i++) W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","/*global module*/\nvar Buffer = require('buffer').Buffer;\nmodule.exports = function toString(obj) {\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number' || Buffer.isBuffer(obj)) return obj.toString();\n return JSON.stringify(obj);\n};","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar StringDecoder = require('string_decoder').StringDecoder;\nvar inherits = require('inherits');\nfunction CipherBase(hashMode) {\n Transform.call(this);\n this.hashMode = typeof hashMode === 'string';\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest;\n } else {\n this['final'] = this._finalOrDigest;\n }\n if (this._final) {\n this.__final = this._final;\n this._final = null;\n }\n this._decoder = null;\n this._encoding = null;\n}\ninherits(CipherBase, Transform);\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && ArrayBuffer.isView && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\nfunction toBuffer(data, encoding) {\n /*\n * No need to do anything for exact instance\n * This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n */\n if (data instanceof Buffer) {\n return data;\n }\n\n // Convert strings to Buffer\n if (typeof data === 'string') {\n return Buffer.from(data, encoding);\n }\n\n /*\n * Wrap any TypedArray instances and DataViews\n * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n */\n if (useArrayBuffer && ArrayBuffer.isView(data)) {\n // Bug in Node.js <6.3.1, which treats this as out-of-bounds\n if (data.byteLength === 0) {\n return Buffer.alloc(0);\n }\n var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n /*\n * Recheck result size, as offset/length doesn't work on Node.js <5.10\n * We just go to Uint8Array case if this fails\n */\n if (res.byteLength === data.byteLength) {\n return res;\n }\n }\n\n /*\n * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n * Doesn't make sense with other TypedArray instances\n */\n if (useUint8Array && data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n\n /*\n * Old Buffer polyfill on an engine that doesn't have TypedArray support\n * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n * Convert to our current Buffer implementation\n */\n if (Buffer.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === 'function' && data.constructor.isBuffer(data)) {\n return Buffer.from(data);\n }\n throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');\n}\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n var bufferData = toBuffer(data, inputEnc); // asserts correct input type\n var outData = this._update(bufferData);\n if (this.hashMode) {\n return this;\n }\n if (outputEnc) {\n outData = this._toString(outData, outputEnc);\n }\n return outData;\n};\nCipherBase.prototype.setAutoPadding = function () {};\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state');\n};\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state');\n};\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state');\n};\nCipherBase.prototype._transform = function (data, _, next) {\n var err;\n try {\n if (this.hashMode) {\n this._update(data);\n } else {\n this.push(this._update(data));\n }\n } catch (e) {\n err = e;\n } finally {\n next(err);\n }\n};\nCipherBase.prototype._flush = function (done) {\n var err;\n try {\n this.push(this.__final());\n } catch (e) {\n err = e;\n }\n done(err);\n};\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0);\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true);\n }\n return outData;\n};\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc);\n this._encoding = enc;\n }\n if (this._encoding !== enc) {\n throw new Error('can’t switch encodings');\n }\n var out = this._decoder.write(value);\n if (fin) {\n out += this._decoder.end();\n }\n return out;\n};\nmodule.exports = CipherBase;","(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 this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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 * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar numberTag = '[object Number]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified\n * as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\nfunction isNumber(value) {\n return typeof value == 'number' || isObjectLike(value) && objectToString.call(value) == numberTag;\n}\nmodule.exports = isNumber;","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nfunction verify(sig, hash, key, signType, tag) {\n var pub = parseKeys(key);\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n return ecVerify(sig, hash, pub);\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong public key type');\n }\n return dsaVerify(sig, hash, pub);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong public key type');\n }\n hash = Buffer.concat([tag, hash]);\n var len = pub.modulus.byteLength();\n var pad = [1];\n var padNum = 0;\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff);\n padNum += 1;\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n pad = Buffer.from(pad);\n var red = BN.mont(pub.modulus);\n sig = new BN(sig).toRed(red);\n sig = sig.redPow(new BN(pub.publicExponent));\n sig = Buffer.from(sig.fromRed().toArray());\n var out = padNum < 8 ? 1 : 0;\n len = Math.min(sig.length, pad.length);\n if (sig.length !== pad.length) {\n out = 1;\n }\n i = -1;\n while (++i < len) {\n out |= sig[i] ^ pad[i];\n }\n return out === 0;\n}\nfunction ecVerify(sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'));\n }\n var curve = new EC(curveId);\n var pubkey = pub.data.subjectPrivateKey.data;\n return curve.verify(hash, sig, pubkey);\n}\nfunction dsaVerify(sig, hash, pub) {\n var p = pub.data.p;\n var q = pub.data.q;\n var g = pub.data.g;\n var y = pub.data.pub_key;\n var unpacked = parseKeys.signature.decode(sig, 'der');\n var s = unpacked.s;\n var r = unpacked.r;\n checkValue(s, q);\n checkValue(r, q);\n var montp = BN.mont(p);\n var w = s.invm(q);\n var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q);\n return v.cmp(r) === 0;\n}\nfunction checkValue(b, q) {\n if (b.cmpn(0) <= 0) {\n throw new Error('invalid sig');\n }\n if (b.cmp(q) >= 0) {\n throw new Error('invalid sig');\n }\n}\nmodule.exports = verify;","'use strict';\n\nvar inherits = require('inherits');\nvar HashBase = require('hash-base');\nvar Buffer = require('safe-buffer').Buffer;\nvar ARRAY16 = new Array(16);\nfunction MD5() {\n HashBase.call(this, 64);\n\n // state\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n}\ninherits(MD5, HashBase);\nMD5.prototype._update = function () {\n var M = ARRAY16;\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4);\n var a = this._a;\n var b = this._b;\n var c = this._c;\n var d = this._d;\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7);\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12);\n c = fnF(c, d, a, b, M[2], 0x242070db, 17);\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22);\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7);\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12);\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17);\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22);\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7);\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12);\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17);\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22);\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7);\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12);\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17);\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22);\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5);\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9);\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14);\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20);\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5);\n d = fnG(d, a, b, c, M[10], 0x02441453, 9);\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14);\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20);\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5);\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9);\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14);\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20);\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5);\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9);\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14);\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20);\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4);\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11);\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16);\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23);\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4);\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11);\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16);\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23);\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4);\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11);\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16);\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23);\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4);\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11);\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16);\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23);\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6);\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10);\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15);\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21);\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6);\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10);\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15);\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21);\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6);\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10);\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15);\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21);\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6);\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10);\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15);\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21);\n this._a = this._a + a | 0;\n this._b = this._b + b | 0;\n this._c = this._c + c | 0;\n this._d = this._d + d | 0;\n};\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n this._update();\n this._blockOffset = 0;\n }\n this._block.fill(0, this._blockOffset, 56);\n this._block.writeUInt32LE(this._length[0], 56);\n this._block.writeUInt32LE(this._length[1], 60);\n this._update();\n\n // produce result\n var buffer = Buffer.allocUnsafe(16);\n buffer.writeInt32LE(this._a, 0);\n buffer.writeInt32LE(this._b, 4);\n buffer.writeInt32LE(this._c, 8);\n buffer.writeInt32LE(this._d, 12);\n return buffer;\n};\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\n}\nfunction fnF(a, b, c, d, m, k, s) {\n return rotl(a + (b & c | ~b & d) + m + k | 0, s) + b | 0;\n}\nfunction fnG(a, b, c, d, m, k, s) {\n return rotl(a + (b & d | c & ~d) + m + k | 0, s) + b | 0;\n}\nfunction fnH(a, b, c, d, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;\n}\nfunction fnI(a, b, c, d, m, k, s) {\n return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;\n}\nmodule.exports = MD5;","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\nStream.prototype.pipe = function (dest, options) {\n var source = this;\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n source.on('data', ondata);\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n dest.removeListener('close', cleanup);\n }\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};","/**\n * lodash 3.0.3 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\nmodule.exports = isBoolean;","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\nfunction DES(options) {\n Cipher.call(this, options);\n var state = new DESState();\n this._desState = state;\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\nDES.create = function create(options) {\n return new DES(options);\n};\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\nDES.prototype._pad = function _pad(buffer, off) {\n if (this.padding === false) {\n return false;\n }\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++) buffer[i] = value;\n return true;\n};\nDES.prototype._unpad = function _unpad(buffer) {\n if (this.padding === false) {\n return buffer;\n }\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++) assert.equal(buffer[i], pad);\n return buffer.slice(0, buffer.length - pad);\n};\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n\n'use strict';\n\nvar asn1 = require('asn1.js');\nexports.certificate = require('./certificate');\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('modulus')['int'](), this.key('publicExponent')['int'](), this.key('privateExponent')['int'](), this.key('prime1')['int'](), this.key('prime2')['int'](), this.key('exponent1')['int'](), this.key('exponent2')['int'](), this.key('coefficient')['int']());\n});\nexports.RSAPrivateKey = RSAPrivateKey;\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(this.key('modulus')['int'](), this.key('publicExponent')['int']());\n});\nexports.RSAPublicKey = RSAPublicKey;\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(this.key('algorithm').objid(), this.key('none').null_().optional(), this.key('curve').objid().optional(), this.key('params').seq().obj(this.key('p')['int'](), this.key('q')['int'](), this.key('g')['int']()).optional());\n});\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(this.key('version')['int'](), this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPrivateKey').octstr());\n});\nexports.PrivateKey = PrivateKeyInfo;\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(this.key('algorithm').seq().obj(this.key('id').objid(), this.key('decrypt').seq().obj(this.key('kde').seq().obj(this.key('id').objid(), this.key('kdeparams').seq().obj(this.key('salt').octstr(), this.key('iters')['int']())), this.key('cipher').seq().obj(this.key('algo').objid(), this.key('iv').octstr()))), this.key('subjectPrivateKey').octstr());\n});\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo;\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('p')['int'](), this.key('q')['int'](), this.key('g')['int'](), this.key('pub_key')['int'](), this.key('priv_key')['int']());\n});\nexports.DSAPrivateKey = DSAPrivateKey;\nexports.DSAparam = asn1.define('DSAparam', function () {\n this['int']();\n});\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(this.key('version')['int'](), this.key('privateKey').octstr(), this.key('parameters').optional().explicit(0).use(ECParameters), this.key('publicKey').optional().explicit(1).bitstr());\n});\nexports.ECPrivateKey = ECPrivateKey;\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r')['int'](), this.key('s')['int']());\n});","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\nfunction Sha1() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\ninherits(Sha1, Hash);\nSha1.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\nfunction rotl1(num) {\n return num << 1 | num >>> 31;\n}\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\nSha1.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]);\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\nmodule.exports = Sha1;","var JsonWebTokenError = require('./JsonWebTokenError');\nvar TokenExpiredError = function (message, expiredAt) {\n JsonWebTokenError.call(this, message);\n this.name = 'TokenExpiredError';\n this.expiredAt = expiredAt;\n};\nTokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);\nTokenExpiredError.prototype.constructor = TokenExpiredError;\nmodule.exports = TokenExpiredError;","'use strict';\n\nvar inherits = require('inherits');\nvar Legacy = require('./legacy');\nvar Base = require('cipher-base');\nvar Buffer = require('safe-buffer').Buffer;\nvar md5 = require('create-hash/md5');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar ZEROS = Buffer.alloc(128);\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n key = hash.update(key).digest();\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n this._hash.update(ipad);\n}\ninherits(Hmac, Base);\nHmac.prototype._update = function (data) {\n this._hash.update(data);\n};\nHmac.prototype._final = function () {\n var h = this._hash.digest();\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg);\n return hash.update(this._opad).update(h).digest();\n};\nmodule.exports = function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n return new Hmac(alg, key);\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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);","'use strict';\n\nfunction getParamSize(keySize) {\n var result = (keySize / 8 | 0) + (keySize % 8 === 0 ? 0 : 1);\n return result;\n}\nvar paramBytesForAlg = {\n ES256: getParamSize(256),\n ES384: getParamSize(384),\n ES512: getParamSize(521)\n};\nfunction getParamBytesForAlg(alg) {\n var paramBytes = paramBytesForAlg[alg];\n if (paramBytes) {\n return paramBytes;\n }\n throw new Error('Unknown algorithm \"' + alg + '\"');\n}\nmodule.exports = getParamBytesForAlg;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(config, config.data, config.headers, config.transformRequest);\n\n // Flatten headers\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n return Promise.reject(reason);\n });\n};","var inherits = require('inherits');\nvar asn1 = require('../../asn1');\nvar base = asn1.base;\nvar bignum = asn1.bignum;\n\n// Import DER constants\nvar der = asn1.constants.der;\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}\n;\nmodule.exports = DERDecoder;\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!(data instanceof base.DecoderBuffer)) data = new base.DecoderBuffer(data, options);\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n base.Node.call(this, 'der', parent);\n}\ninherits(DERNode, base.Node);\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty()) return false;\n var state = buffer.save();\n var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n buffer.restore(state);\n return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any;\n};\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag)) return decodedTag;\n var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len)) return len;\n if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n var state = buffer.save();\n var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res)) return res;\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n while (true) {\n var tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag)) return tag;\n var len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len)) return len;\n var res;\n if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res)) return res;\n if (tag.tagStr === 'end') break;\n }\n};\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) {\n var result = [];\n while (!buffer.isEmpty()) {\n var possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd)) return possibleEnd;\n var res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd) break;\n result.push(res);\n }\n return result;\n};\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n var unused = buffer.readUInt8();\n if (buffer.isError(unused)) return unused;\n return {\n unused: unused,\n data: buffer.raw()\n };\n } else if (tag === 'bmpstr') {\n var raw = buffer.raw();\n if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch');\n var str = '';\n for (var 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 var numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' + '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 var printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' + '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};\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n var result;\n var identifiers = [];\n var ident = 0;\n while (!buffer.isEmpty()) {\n var 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) identifiers.push(ident);\n var first = identifiers[0] / 40 | 0;\n var second = identifiers[0] % 40;\n if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1));\n if (values) {\n var tmp = values[result.join(' ')];\n if (tmp === undefined) tmp = values[result.join('.')];\n if (tmp !== undefined) result = tmp;\n }\n return result;\n};\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n var str = buffer.raw().toString();\n if (tag === 'gentime') {\n var year = str.slice(0, 4) | 0;\n var mon = str.slice(4, 6) | 0;\n var day = str.slice(6, 8) | 0;\n var hour = str.slice(8, 10) | 0;\n var min = str.slice(10, 12) | 0;\n var sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n var year = str.slice(0, 2) | 0;\n var mon = str.slice(2, 4) | 0;\n var day = str.slice(4, 6) | 0;\n var hour = str.slice(6, 8) | 0;\n var min = str.slice(8, 10) | 0;\n var sec = str.slice(10, 12) | 0;\n if (year < 70) year = 2000 + year;else year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\nDERNode.prototype._decodeNull = function decodeNull(buffer) {\n return null;\n};\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n var res = buffer.readUInt8();\n if (buffer.isError(res)) return res;else return res !== 0;\n};\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n var raw = buffer.raw();\n var res = new bignum(raw);\n if (values) res = values[res.toString(10)] || res;\n return res;\n};\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n var tag = buf.readUInt8(fail);\n if (buf.isError(tag)) return tag;\n var cls = der.tagClass[tag >> 6];\n var primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n var oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct)) return oct;\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n var tagStr = der.tag[tag];\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\nfunction derDecodeLen(buf, primitive, fail) {\n var len = buf.readUInt8(fail);\n if (buf.isError(len)) return len;\n\n // Indefinite form\n if (!primitive && len === 0x80) return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n var num = len & 0x7f;\n if (num > 4) return buf.error('length octect is too long');\n len = 0;\n for (var i = 0; i < num; i++) {\n len <<= 8;\n var j = buf.readUInt8(fail);\n if (buf.isError(j)) return j;\n len |= j;\n }\n return len;\n}","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n if (Array.isArray(sig)) {\n assert(sig.length === eddsa.encodingLength * 2, 'Signature has invalid size');\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\n }\n assert(sig.R && sig.S, 'Signature without R or S');\n if (eddsa.isPoint(sig.R)) this._R = sig.R;\n if (sig.S instanceof BN) this._S = sig.S;\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\nmodule.exports = Signature;","'use strict';\n\n// eslint-disable-next-line no-multi-assign\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes');\n\n// eslint-disable-next-line no-multi-assign\nexports.createHash = exports.Hash = require('create-hash');\n\n// eslint-disable-next-line no-multi-assign\nexports.createHmac = exports.Hmac = require('create-hmac');\nvar algos = require('browserify-sign/algos');\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\nexports.getHashes = function () {\n return hashes;\n};\nvar p = require('pbkdf2');\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\nvar aes = require('browserify-cipher');\nexports.Cipher = aes.Cipher;\nexports.createCipher = aes.createCipher;\nexports.Cipheriv = aes.Cipheriv;\nexports.createCipheriv = aes.createCipheriv;\nexports.Decipher = aes.Decipher;\nexports.createDecipher = aes.createDecipher;\nexports.Decipheriv = aes.Decipheriv;\nexports.createDecipheriv = aes.createDecipheriv;\nexports.getCiphers = aes.getCiphers;\nexports.listCiphers = aes.listCiphers;\nvar dh = require('diffie-hellman');\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\nvar sign = require('browserify-sign');\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = require('create-ecdh');\nvar publicEncrypt = require('public-encrypt');\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt;\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// [\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error('sorry, ' + name + ' is not implemented yet\\nwe accept pull requests\\nhttps://github.com/browserify/crypto-browserify');\n// };\n// });\n\nvar rf = require('randomfill');\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\nexports.createCredentials = function () {\n throw new Error('sorry, createCredentials is not implemented yet\\nwe accept pull requests\\nhttps://github.com/browserify/crypto-browserify');\n};\nexports.constants = {\n DH_CHECK_P_NOT_SAFE_PRIME: 2,\n DH_CHECK_P_NOT_PRIME: 1,\n DH_UNABLE_TO_CHECK_GENERATOR: 4,\n DH_NOT_SUITABLE_GENERATOR: 8,\n NPN_ENABLED: 1,\n ALPN_ENABLED: 1,\n RSA_PKCS1_PADDING: 1,\n RSA_SSLV23_PADDING: 2,\n RSA_NO_PADDING: 3,\n RSA_PKCS1_OAEP_PADDING: 4,\n RSA_X931_PADDING: 5,\n RSA_PKCS1_PSS_PADDING: 6,\n POINT_CONVERSION_COMPRESSED: 2,\n POINT_CONVERSION_UNCOMPRESSED: 4,\n POINT_CONVERSION_HYBRID: 6\n};","var xor = require('buffer-xor');\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev);\n self._prev = self._cipher.encryptBlock(data);\n return self._prev;\n};\nexports.decrypt = function (self, block) {\n var pad = self._prev;\n self._prev = block;\n var out = self._cipher.decryptBlock(block);\n return xor(out, pad);\n};","'use strict';\n\nvar inherits = require('inherits');\nvar MD5 = require('md5.js');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar Base = require('cipher-base');\nfunction Hash(hash) {\n Base.call(this, 'digest');\n this._hash = hash;\n}\ninherits(Hash, Base);\nHash.prototype._update = function (data) {\n this._hash.update(data);\n};\nHash.prototype._final = function () {\n return this._hash.digest();\n};\nmodule.exports = function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') return new MD5();\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160();\n return new Hash(sha(alg));\n};","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\nmodule.exports = isPlainObject;","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n var i;\n for (i = 0; i < naf.length; i += 1) {\n naf[i] = 0;\n }\n var ws = 1 << w + 1;\n var k = num.clone();\n for (i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n naf[i] = z;\n k.iushrn(1);\n }\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [[], []];\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = k1.andln(3) + d1 & 3;\n var m24 = k2.andln(3) + d2 & 3;\n if (m14 === 3) m14 = -1;\n if (m24 === 3) m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = k1.andln(7) + d1 & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14;\n }\n jsf[0].push(u1);\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = k2.andln(7) + d2 & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1) d1 = 1 - d1;\n if (2 * d2 === u2 + 1) d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n return jsf;\n}\nutils.getJSF = getJSF;\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\nutils.parseBytes = parseBytes;\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;","'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};","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};","var parseKeys = require('parse-asn1');\nvar randomBytes = require('randombytes');\nvar createHash = require('create-hash');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar BN = require('bn.js');\nvar withPublic = require('./withPublic');\nvar crt = require('browserify-rsa');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function publicEncrypt(publicKey, msg, reverse) {\n var padding;\n if (publicKey.padding) {\n padding = publicKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n var key = parseKeys(publicKey);\n var paddedMsg;\n if (padding === 4) {\n paddedMsg = oaep(key, msg);\n } else if (padding === 1) {\n paddedMsg = pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n paddedMsg = new BN(msg);\n if (paddedMsg.cmp(key.modulus) >= 0) {\n throw new Error('data too long for modulus');\n }\n } else {\n throw new Error('unknown padding');\n }\n if (reverse) {\n return crt(paddedMsg, key);\n } else {\n return withPublic(paddedMsg, key);\n }\n};\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var mLen = msg.length;\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n var hLen2 = 2 * hLen;\n if (mLen > k - hLen2 - 2) {\n throw new Error('message too long');\n }\n var ps = Buffer.alloc(k - mLen - hLen2 - 2);\n var dblen = k - hLen - 1;\n var seed = randomBytes(hLen);\n var maskedDb = xor(Buffer.concat([iHash, ps, Buffer.alloc(1, 1), msg], dblen), mgf(seed, dblen));\n var maskedSeed = xor(seed, mgf(maskedDb, hLen));\n return new BN(Buffer.concat([Buffer.alloc(1), maskedSeed, maskedDb], k));\n}\nfunction pkcs1(key, msg, reverse) {\n var mLen = msg.length;\n var k = key.modulus.byteLength();\n if (mLen > k - 11) {\n throw new Error('message too long');\n }\n var ps;\n if (reverse) {\n ps = Buffer.alloc(k - mLen - 3, 0xff);\n } else {\n ps = nonZero(k - mLen - 3);\n }\n return new BN(Buffer.concat([Buffer.from([0, reverse ? 1 : 2]), ps, Buffer.alloc(1), msg], k));\n}\nfunction nonZero(len) {\n var out = Buffer.allocUnsafe(len);\n var i = 0;\n var cache = randomBytes(len * 2);\n var cur = 0;\n var num;\n while (i < len) {\n if (cur === cache.length) {\n cache = randomBytes(len * 2);\n cur = 0;\n }\n num = cache[cur++];\n if (num) {\n out[i++] = num;\n }\n }\n return out;\n}","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","/*global exports*/\nvar SignStream = require('./lib/sign-stream');\nvar VerifyStream = require('./lib/verify-stream');\nvar ALGORITHMS = ['HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384', 'PS512', 'ES256', 'ES384', 'ES512'];\nexports.ALGORITHMS = ALGORITHMS;\nexports.sign = SignStream.sign;\nexports.verify = VerifyStream.verify;\nexports.decode = VerifyStream.decode;\nexports.isValid = VerifyStream.isValid;\nexports.createSign = function createSign(opts) {\n return new SignStream(opts);\n};\nexports.createVerify = function createVerify(opts) {\n return new VerifyStream(opts);\n};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }\n return ret;\n };\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n return BufferList;\n}();\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\n}","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","'use strict';\n\nvar pkg = require('./../../package.json');\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function (value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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);","(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 this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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 * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict';\n\nvar base64 = require('base64-js');\nvar ieee754 = require('ieee754');\nvar isArray = require('isarray');\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength();\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function () {\n return 42;\n }\n };\n return arr.foo() === 42 &&\n // typed array instances can be augmented\n typeof arr.subarray === 'function' &&\n // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n return that;\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error('If encoding is specified then the first argument must be a string');\n }\n return allocUnsafe(this, arg);\n }\n return from(this, arg, encodingOrOffset, length);\n}\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\nfunction from(that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n return fromObject(that, value);\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n });\n }\n}\nfunction assertSize(size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number');\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative');\n }\n}\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size);\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);\n }\n return createBuffer(that, size);\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that;\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size);\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n return that;\n}\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that;\n}\nfunction fromArrayBuffer(that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that;\n}\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n if (that.length === 0) {\n return that;\n }\n obj.copy(that, 0, 0, len);\n return that;\n }\n if (obj) {\n if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0);\n }\n return fromArrayLike(that, obj);\n }\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\nfunction checked(length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');\n }\n return length | 0;\n}\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\n}\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\nBuffer.compare = function compare(a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers');\n }\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\nBuffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true;\n default:\n return false;\n }\n};\nBuffer.concat = function concat(list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer;\n};\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n var len = string.length;\n if (len === 0) return 0;\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n case 'hex':\n return len >>> 1;\n case 'base64':\n return base64ToBytes(string).length;\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\nfunction slowToString(encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return '';\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return '';\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return '';\n }\n if (!encoding) encoding = 'utf8';\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n case 'ascii':\n return asciiSlice(this, start, end);\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n case 'base64':\n return base64Slice(this, start, end);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n};\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n};\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n};\nBuffer.prototype.toString = function toString() {\n var length = this.length | 0;\n if (length === 0) return '';\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n};\nBuffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n};\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '';\n};\nBuffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer');\n }\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError('val must be string, number or Buffer');\n}\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n}\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n}\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\nBuffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\nBuffer.prototype.toJSON = function toJSON() {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n};\nfunction base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n}\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret;\n}\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n}\nfunction hexSlice(buf, start, end) {\n var len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out;\n}\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n}\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n return newBuf;\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');\n}\nBuffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n return val;\n};\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\n};\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\nBuffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n};\nBuffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n};\nBuffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;\n};\nBuffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n};\nBuffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\nBuffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return this[offset];\n return (0xff - this[offset] + 1) * -1;\n};\nBuffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | this[offset + 1] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | this[offset] << 8;\n return val & 0x8000 ? val | 0xFFFF0000 : val;\n};\nBuffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n};\nBuffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n};\nBuffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n};\nBuffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n};\nBuffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n};\nBuffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n};\nfunction checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance');\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds');\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n}\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = value & 0xff;\n return offset + 1;\n};\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;\n }\n}\nBuffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n};\nBuffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n};\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;\n }\n}\nBuffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n};\nBuffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n};\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n};\nBuffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = value & 0xff;\n return offset + 1;\n};\nBuffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2;\n};\nBuffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 8;\n this[offset + 1] = value & 0xff;\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2;\n};\nBuffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value & 0xff;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4;\n};\nBuffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 0xff;\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4;\n};\nfunction checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range');\n if (offset < 0) throw new RangeError('Index out of range');\n}\nfunction writeFloat(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\nfunction writeDouble(buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');\n if (end < 0) throw new RangeError('sourceEnd out of bounds');\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n var len = end - start;\n var i;\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);\n }\n return len;\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding);\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\nfunction base64clean(str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return '';\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str;\n}\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\nfunction utf8ToBytes(string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue;\n }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction asciiToBytes(str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray;\n}\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n}\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\nfunction blitBuffer(src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n}\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","var inherits = require('inherits');\nvar Buffer = require('buffer').Buffer;\nvar DERDecoder = require('./der');\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\n;\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\nPEMDecoder.prototype.decode = function decode(data, options) {\n var lines = data.toString().split(/[\\r\\n]+/g);\n var label = options.label.toUpperCase();\n var re = /^-----(BEGIN|END) ([^-]+)-----$/;\n var start = -1;\n var end = -1;\n for (var i = 0; i < lines.length; i++) {\n var match = lines[i].match(re);\n if (match === null) continue;\n if (match[2] !== label) continue;\n if (start === -1) {\n if (match[1] !== 'BEGIN') break;\n start = i;\n } else {\n if (match[1] !== 'END') break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label);\n var base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9\\+\\/=]+/gi, '');\n var input = new Buffer(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};","var BN = require('bn.js');\nvar Buffer = require('safe-buffer').Buffer;\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\nmodule.exports = withPublic;","var Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing;\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding);\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer);\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView');\n }\n};","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","var asn1 = require('../asn1');\nvar inherits = require('inherits');\nvar api = exports;\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n this.decoders = {};\n this.encoders = {};\n}\n;\nEntity.prototype._createNamed = function createNamed(base) {\n var named;\n try {\n named = require('vm').runInThisContext('(function ' + this.name + '(entity) {\\n' + ' this._initNamed(entity);\\n' + '})');\n } catch (e) {\n named = function (entity) {\n this._initNamed(entity);\n };\n }\n inherits(named, base);\n named.prototype._initNamed = function initnamed(entity) {\n base.call(this, entity);\n };\n return new named(this);\n};\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(asn1.decoders[enc]);\n return this.decoders[enc];\n};\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(asn1.encoders[enc]);\n return this.encoders[enc];\n};\nEntity.prototype.encode = function encode(data, enc, /* internal */reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\nfunction EC(options) {\n if (!(this instanceof EC)) return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options), 'Unknown curve ' + options);\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve) options = {\n curve: options\n };\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options) options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray()\n });\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0) continue;\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly, bitLength) {\n var byteLength;\n if (BN.isBN(msg) || typeof msg === 'number') {\n msg = new BN(msg, 16);\n byteLength = msg.byteLength();\n } else if (typeof msg === 'object') {\n // BN assumes an array-like input and asserts length\n byteLength = msg.length;\n msg = new BN(msg, 16);\n } else {\n // BN converts the value to string\n var str = msg.toString();\n // HEX encoding\n byteLength = str.length + 1 >>> 1;\n msg = new BN(str, 16);\n }\n // Allow overriding\n if (typeof bitLength !== 'number') {\n bitLength = byteLength * 8;\n }\n var delta = bitLength - this.n.bitLength();\n if (delta > 0) msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg;\n};\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options) options = {};\n if (typeof msg !== 'string' && typeof msg !== 'number' && !BN.isBN(msg)) {\n assert(typeof msg === 'object' && msg && typeof msg.length === 'number', 'Expected message to be an array-like, a hex string, or a BN instance');\n assert(msg.length >>> 0 === msg.length); // non-negative 32-bit integer\n for (var i = 0; i < msg.length; i++) assert((msg[i] & 255) === msg[i]);\n }\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(msg, false, options.msgBitLength);\n\n // Would fail further checks, but let's make the error message clear\n assert(!msg.isNeg(), 'Can not sign a negative message');\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Recheck nonce to be bijective to msg\n assert(new BN(nonce).eq(msg), 'Can not sign message');\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8'\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n for (var iter = 0;; iter++) {\n var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue;\n var kp = this.g.mul(k);\n if (kp.isInfinity()) continue;\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0) continue;\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0) continue;\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n return new Signature({\n r: r,\n s: s,\n recoveryParam: recoveryParam\n });\n }\n};\nEC.prototype.verify = function verify(msg, signature, key, enc, options) {\n if (!options) options = {};\n msg = this._truncateToN(msg, false, options.msgBitLength);\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity()) return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\nEC.prototype.recoverPubKey = function (msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd);\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\nEC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null) return signature.recoveryParam;\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n if (Qprime.eq(Q)) return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++) if (k % res[j] === 0) break;\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n primes = res;\n return res;\n}\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n for (var i = 0; i < primes.length; i++) if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n return true;\n}\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n var num, n2;\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n}","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\nmodule.exports = CancelToken;","var Buffer = require('safe-buffer').Buffer;\nvar MD5 = require('md5.js');\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey(password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary');\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary');\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length');\n }\n var keyLen = keyBits / 8;\n var key = Buffer.alloc(keyLen);\n var iv = Buffer.alloc(ivLen || 0);\n var tmp = Buffer.alloc(0);\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5();\n hash.update(tmp);\n hash.update(password);\n if (salt) hash.update(salt);\n tmp = hash.digest();\n var used = 0;\n if (keyLen > 0) {\n var keyStart = key.length - keyLen;\n used = Math.min(keyLen, tmp.length);\n tmp.copy(key, keyStart, 0, used);\n keyLen -= used;\n }\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen;\n var length = Math.min(ivLen, tmp.length - used);\n tmp.copy(iv, ivStart, used, used + length);\n ivLen -= length;\n }\n }\n tmp.fill(0);\n return {\n key: key,\n iv: iv\n };\n}\nmodule.exports = EVP_BytesToKey;","var parseKeys = require('parse-asn1');\nvar mgf = require('./mgf');\nvar xor = require('./xor');\nvar BN = require('bn.js');\nvar crt = require('browserify-rsa');\nvar createHash = require('create-hash');\nvar withPublic = require('./withPublic');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n if (privateKey.padding) {\n padding = privateKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n var key = parseKeys(privateKey);\n var k = key.modulus.byteLength();\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n var msg;\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n if (padding === 4) {\n return oaep(key, msg);\n } else if (padding === 1) {\n return pkcs1(key, msg, reverse);\n } else if (padding === 3) {\n return msg;\n } else {\n throw new Error('unknown padding');\n }\n};\nfunction oaep(key, msg) {\n var k = key.modulus.byteLength();\n var iHash = createHash('sha1').update(Buffer.alloc(0)).digest();\n var hLen = iHash.length;\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\n var maskedSeed = msg.slice(1, hLen + 1);\n var maskedDb = msg.slice(hLen + 1);\n var seed = xor(maskedSeed, mgf(maskedDb, hLen));\n var db = xor(maskedDb, mgf(seed, k - hLen - 1));\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n var i = hLen;\n while (db[i] === 0) {\n i++;\n }\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\n return db.slice(i);\n}\nfunction pkcs1(key, msg, reverse) {\n var p1 = msg.slice(0, 2);\n var i = 2;\n var status = 0;\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\n }\n var ps = msg.slice(2, i - 1);\n if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) {\n status++;\n }\n if (ps.length < 8) {\n status++;\n }\n if (status) {\n throw new Error('decryption error');\n }\n return msg.slice(i);\n}\nfunction compare(a, b) {\n a = Buffer.from(a);\n b = Buffer.from(b);\n var dif = 0;\n var len = a.length;\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n var i = -1;\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n return dif;\n}","var MD5 = require('md5.js');\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\n};","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2];\nvar W = new Array(64);\nfunction Sha256() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\ninherits(Sha256, Hash);\nSha256.prototype.init = function () {\n this._a = 0x6a09e667;\n this._b = 0xbb67ae85;\n this._c = 0x3c6ef372;\n this._d = 0xa54ff53a;\n this._e = 0x510e527f;\n this._f = 0x9b05688c;\n this._g = 0x1f83d9ab;\n this._h = 0x5be0cd19;\n return this;\n};\nfunction ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\nfunction sigma0(x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10);\n}\nfunction sigma1(x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7);\n}\nfunction gamma0(x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ x >>> 3;\n}\nfunction gamma1(x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ x >>> 10;\n}\nSha256.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n var f = this._f | 0;\n var g = this._g | 0;\n var h = this._h | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 64; ++i) W[i] = gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16] | 0;\n for (var j = 0; j < 64; ++j) {\n var T1 = h + sigma1(e) + ch(e, f, g) + K[j] + W[j] | 0;\n var T2 = sigma0(a) + maj(a, b, c) | 0;\n h = g;\n g = f;\n f = e;\n e = d + T1 | 0;\n d = c;\n c = b;\n b = a;\n a = T1 + T2 | 0;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n this._f = f + this._f | 0;\n this._g = g + this._g | 0;\n this._h = h + this._h | 0;\n};\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n H.writeInt32BE(this._h, 28);\n return H;\n};\nmodule.exports = Sha256;","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\nSafeBuffer.prototype = Object.create(Buffer.prototype);\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\ninherits(Sha, Hash);\nSha.prototype.init = function () {\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n this._e = 0xc3d2e1f0;\n return this;\n};\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\nfunction ft(s, b, c, d) {\n if (s === 0) return b & c | ~b & d;\n if (s === 2) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\nSha.prototype._update = function (M) {\n var W = this._w;\n var a = this._a | 0;\n var b = this._b | 0;\n var c = this._c | 0;\n var d = this._d | 0;\n var e = this._e | 0;\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4);\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20);\n var t = rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s] | 0;\n e = d;\n d = c;\n c = rotl30(b);\n b = a;\n a = t;\n }\n this._a = a + this._a | 0;\n this._b = b + this._b | 0;\n this._c = c + this._c | 0;\n this._d = d + this._d | 0;\n this._e = e + this._e | 0;\n};\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20);\n H.writeInt32BE(this._a | 0, 0);\n H.writeInt32BE(this._b | 0, 4);\n H.writeInt32BE(this._c | 0, 8);\n H.writeInt32BE(this._d | 0, 12);\n H.writeInt32BE(this._e | 0, 16);\n return H;\n};\nmodule.exports = Sha;","var CipherBase = require('cipher-base');\nvar des = require('des.js');\nvar inherits = require('inherits');\nvar Buffer = require('safe-buffer').Buffer;\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n};\nmodes.des = modes['des-cbc'];\nmodes.des3 = modes['des-ede3-cbc'];\nmodule.exports = DES;\ninherits(DES, CipherBase);\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n var key = opts.key;\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n var iv = opts.iv;\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};","export var IconsManifest = [{\n \"id\": \"ci\",\n \"name\": \"Circum Icons\",\n \"projectUrl\": \"https://circumicons.com/\",\n \"license\": \"MPL-2.0 license\",\n \"licenseUrl\": \"https://github.com/Klarr-Agency/Circum-Icons/blob/main/LICENSE\"\n}, {\n \"id\": \"fa\",\n \"name\": \"Font Awesome 5\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n \"id\": \"fa6\",\n \"name\": \"Font Awesome 6\",\n \"projectUrl\": \"https://fontawesome.com/\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n \"id\": \"io\",\n \"name\": \"Ionicons 4\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n \"id\": \"io5\",\n \"name\": \"Ionicons 5\",\n \"projectUrl\": \"https://ionicons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/ionic-team/ionicons/blob/master/LICENSE\"\n}, {\n \"id\": \"md\",\n \"name\": \"Material Design icons\",\n \"projectUrl\": \"http://google.github.io/material-design-icons/\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"https://github.com/google/material-design-icons/blob/master/LICENSE\"\n}, {\n \"id\": \"ti\",\n \"name\": \"Typicons\",\n \"projectUrl\": \"http://s-ings.com/typicons/\",\n \"license\": \"CC BY-SA 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by-sa/3.0/\"\n}, {\n \"id\": \"go\",\n \"name\": \"Github Octicons icons\",\n \"projectUrl\": \"https://octicons.github.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/primer/octicons/blob/master/LICENSE\"\n}, {\n \"id\": \"fi\",\n \"name\": \"Feather\",\n \"projectUrl\": \"https://feathericons.com/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/feathericons/feather/blob/master/LICENSE\"\n}, {\n \"id\": \"lu\",\n \"name\": \"Lucide\",\n \"projectUrl\": \"https://lucide.dev/\",\n \"license\": \"ISC\",\n \"licenseUrl\": \"https://github.com/lucide-icons/lucide/blob/main/LICENSE\"\n}, {\n \"id\": \"gi\",\n \"name\": \"Game Icons\",\n \"projectUrl\": \"https://game-icons.net/\",\n \"license\": \"CC BY 3.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/3.0/\"\n}, {\n \"id\": \"wi\",\n \"name\": \"Weather Icons\",\n \"projectUrl\": \"https://erikflowers.github.io/weather-icons/\",\n \"license\": \"SIL OFL 1.1\",\n \"licenseUrl\": \"http://scripts.sil.org/OFL\"\n}, {\n \"id\": \"di\",\n \"name\": \"Devicons\",\n \"projectUrl\": \"https://vorillaz.github.io/devicons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"ai\",\n \"name\": \"Ant Design Icons\",\n \"projectUrl\": \"https://github.com/ant-design/ant-design-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"bs\",\n \"name\": \"Bootstrap Icons\",\n \"projectUrl\": \"https://github.com/twbs/icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"ri\",\n \"name\": \"Remix Icon\",\n \"projectUrl\": \"https://github.com/Remix-Design/RemixIcon\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n \"id\": \"fc\",\n \"name\": \"Flat Color Icons\",\n \"projectUrl\": \"https://github.com/icons8/flat-color-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"gr\",\n \"name\": \"Grommet-Icons\",\n \"projectUrl\": \"https://github.com/grommet/grommet-icons\",\n \"license\": \"Apache License Version 2.0\",\n \"licenseUrl\": \"http://www.apache.org/licenses/\"\n}, {\n \"id\": \"hi\",\n \"name\": \"Heroicons\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"hi2\",\n \"name\": \"Heroicons 2\",\n \"projectUrl\": \"https://github.com/tailwindlabs/heroicons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"si\",\n \"name\": \"Simple Icons\",\n \"projectUrl\": \"https://simpleicons.org/\",\n \"license\": \"CC0 1.0 Universal\",\n \"licenseUrl\": \"https://creativecommons.org/publicdomain/zero/1.0/\"\n}, {\n \"id\": \"sl\",\n \"name\": \"Simple Line Icons\",\n \"projectUrl\": \"https://thesabbir.github.io/simple-line-icons/\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"im\",\n \"name\": \"IcoMoon Free\",\n \"projectUrl\": \"https://github.com/Keyamoon/IcoMoon-Free\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/Keyamoon/IcoMoon-Free/blob/master/License.txt\"\n}, {\n \"id\": \"bi\",\n \"name\": \"BoxIcons\",\n \"projectUrl\": \"https://github.com/atisawd/boxicons\",\n \"license\": \"CC BY 4.0 License\",\n \"licenseUrl\": \"https://github.com/atisawd/boxicons/blob/master/LICENSE\"\n}, {\n \"id\": \"cg\",\n \"name\": \"css.gg\",\n \"projectUrl\": \"https://github.com/astrit/css.gg\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"vsc\",\n \"name\": \"VS Code Icons\",\n \"projectUrl\": \"https://github.com/microsoft/vscode-codicons\",\n \"license\": \"CC BY 4.0\",\n \"licenseUrl\": \"https://creativecommons.org/licenses/by/4.0/\"\n}, {\n \"id\": \"tb\",\n \"name\": \"Tabler Icons\",\n \"projectUrl\": \"https://github.com/tabler/tabler-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://opensource.org/licenses/MIT\"\n}, {\n \"id\": \"tfi\",\n \"name\": \"Themify Icons\",\n \"projectUrl\": \"https://github.com/lykmapipo/themify-icons\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/thecreation/standard-icons/blob/master/modules/themify-icons/LICENSE\"\n}, {\n \"id\": \"rx\",\n \"name\": \"Radix Icons\",\n \"projectUrl\": \"https://icons.radix-ui.com\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/radix-ui/icons/blob/master/LICENSE\"\n}, {\n \"id\": \"pi\",\n \"name\": \"Phosphor Icons\",\n \"projectUrl\": \"https://github.com/phosphor-icons/core\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/phosphor-icons/core/blob/main/LICENSE\"\n}, {\n \"id\": \"lia\",\n \"name\": \"Icons8 Line Awesome\",\n \"projectUrl\": \"https://icons8.com/line-awesome\",\n \"license\": \"MIT\",\n \"licenseUrl\": \"https://github.com/icons8/line-awesome/blob/master/LICENSE.md\"\n}];","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext\";\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\nexport function GenIcon(data) {\n // eslint-disable-next-line react/display-name\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var attr = props.attr,\n size = props.size,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"size\", \"title\"]);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign(__assign({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = ['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'];\n var directMergeKeys = ['validateStatus'];\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys).concat(directMergeKeys);\n var otherKeys = Object.keys(config1).concat(Object.keys(config2)).filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n utils.forEach(otherKeys, mergeDeepProperties);\n return config;\n};","var elliptic = require('elliptic');\nvar BN = require('bn.js');\nmodule.exports = function createECDH(curve) {\n return new ECDH(curve);\n};\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n};\naliases.p224 = aliases.secp224r1;\naliases.p256 = aliases.secp256r1 = aliases.prime256v1;\naliases.p192 = aliases.secp192r1 = aliases.prime192v1;\naliases.p384 = aliases.secp384r1;\naliases.p521 = aliases.secp521r1;\nfunction ECDH(curve) {\n this.curveType = aliases[curve];\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n this.keys = void 0;\n}\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair();\n return this.getPublicKey(enc, format);\n};\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8';\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic();\n var out = otherPub.mul(this.keys.getPrivate()).getX();\n return formatReturnValue(out, enc, this.curveType.byteLength);\n};\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true);\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\n }\n return formatReturnValue(key, enc);\n};\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc);\n};\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this.keys._importPublic(pub);\n return this;\n};\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n var _priv = new BN(priv);\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n this.keys._importPrivate(_priv);\n return this;\n};\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n var buf = new Buffer(bn);\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length);\n zeros.fill(0);\n buf = Buffer.concat([zeros, buf]);\n }\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n return this;\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","var Buffer = require('safe-buffer').Buffer;\nvar xor = require('buffer-xor');\nfunction encryptStart(self, data, decrypt) {\n var len = data.length;\n var out = xor(data, self._cache);\n self._cache = self._cache.slice(len);\n self._prev = Buffer.concat([self._prev, decrypt ? data : out]);\n return out;\n}\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev);\n self._prev = Buffer.allocUnsafe(0);\n }\n if (self._cache.length <= data.length) {\n len = self._cache.length;\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]);\n data = data.slice(len);\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)]);\n break;\n }\n }\n return out;\n};","'use strict';\n\nvar utils = require('./../utils');\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\nmodule.exports = InterceptorManager;","'use strict';\n\n// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer;\nvar createHmac = require('create-hmac');\nvar crt = require('browserify-rsa');\nvar EC = require('elliptic').ec;\nvar BN = require('bn.js');\nvar parseKeys = require('parse-asn1');\nvar curves = require('./curves.json');\nvar RSA_PKCS1_PADDING = 1;\nfunction sign(hash, key, hashType, signType, tag) {\n var priv = parseKeys(key);\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n return ecSign(hash, priv);\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') {\n throw new Error('wrong private key type');\n }\n return dsaSign(hash, priv, hashType);\n }\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') {\n throw new Error('wrong private key type');\n }\n if (key.padding !== undefined && key.padding !== RSA_PKCS1_PADDING) {\n throw new Error('illegal or unsupported padding mode');\n }\n hash = Buffer.concat([tag, hash]);\n var len = priv.modulus.byteLength();\n var pad = [0, 1];\n while (hash.length + pad.length + 1 < len) {\n pad.push(0xff);\n }\n pad.push(0x00);\n var i = -1;\n while (++i < hash.length) {\n pad.push(hash[i]);\n }\n var out = crt(pad, priv);\n return out;\n}\nfunction ecSign(hash, priv) {\n var curveId = curves[priv.curve.join('.')];\n if (!curveId) {\n throw new Error('unknown curve ' + priv.curve.join('.'));\n }\n var curve = new EC(curveId);\n var key = curve.keyFromPrivate(priv.privateKey);\n var out = key.sign(hash);\n return Buffer.from(out.toDER());\n}\nfunction dsaSign(hash, priv, algo) {\n var x = priv.params.priv_key;\n var p = priv.params.p;\n var q = priv.params.q;\n var g = priv.params.g;\n var r = new BN(0);\n var k;\n var H = bits2int(hash, q).mod(q);\n var s = false;\n var kv = getKey(x, q, hash, algo);\n while (s === false) {\n k = makeKey(q, kv, algo);\n r = makeR(g, k, p, q);\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q);\n if (s.cmpn(0) === 0) {\n s = false;\n r = new BN(0);\n }\n }\n return toDER(r, s);\n}\nfunction toDER(r, s) {\n r = r.toArray();\n s = s.toArray();\n\n // Pad values\n if (r[0] & 0x80) {\n r = [0].concat(r);\n }\n if (s[0] & 0x80) {\n s = [0].concat(s);\n }\n var total = r.length + s.length + 4;\n var res = [0x30, total, 0x02, r.length];\n res = res.concat(r, [0x02, s.length], s);\n return Buffer.from(res);\n}\nfunction getKey(x, q, hash, algo) {\n x = Buffer.from(x.toArray());\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length);\n x = Buffer.concat([zeros, x]);\n }\n var hlen = hash.length;\n var hbits = bits2octets(hash, q);\n var v = Buffer.alloc(hlen);\n v.fill(1);\n var k = Buffer.alloc(hlen);\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest();\n v = createHmac(algo, k).update(v).digest();\n return {\n k: k,\n v: v\n };\n}\nfunction bits2int(obits, q) {\n var bits = new BN(obits);\n var shift = (obits.length << 3) - q.bitLength();\n if (shift > 0) {\n bits.ishrn(shift);\n }\n return bits;\n}\nfunction bits2octets(bits, q) {\n bits = bits2int(bits, q);\n bits = bits.mod(q);\n var out = Buffer.from(bits.toArray());\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length);\n out = Buffer.concat([zeros, out]);\n }\n return out;\n}\nfunction makeKey(q, kv, algo) {\n var t;\n var k;\n do {\n t = Buffer.alloc(0);\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n t = Buffer.concat([t, kv.v]);\n }\n k = bits2int(t, q);\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest();\n kv.v = createHmac(algo, kv.k).update(kv.v).digest();\n } while (k.cmp(q) !== -1);\n return k;\n}\nfunction makeR(g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q);\n}\nmodule.exports = sign;\nmodule.exports.getKey = getKey;\nmodule.exports.makeKey = makeKey;","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */\n) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};","/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate(fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config(name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}","var AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar MODES = require('./modes');\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Decipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._last = void 0;\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Decipher, Transform);\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk));\n } else if (chunk) {\n throw new Error('data not multiple of block length');\n }\n};\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function (autoPadding) {\n var out;\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\nfunction unpad(last) {\n var padded = last[15];\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n var i = -1;\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\nfunction createDecipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true);\n }\n return new Decipher(config.module, password, iv);\n}\nfunction createDecipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createDecipheriv(suite, keys.key, keys.iv);\n}\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;","'use strict';\n\nvar utils = require('./../utils');\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n return url;\n};","'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};","var encoders = exports;\nencoders.der = require('./der');\nencoders.pem = require('./pem');","'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 ShortCurve(conf) {\n Base.call(this, 'short', 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.tinv = this.two.redInvm();\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function (vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16)\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\n};\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [l1, l2];\n};\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\n};\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return {\n k1: k1,\n k2: k2\n };\n};\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red) x = x.toRed(this.red);\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf) return true;\n var x = point.x;\n var y = point.y;\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n};\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\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 this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo) return;\n var pre = this.precomputed;\n if (pre && pre.beta) return pre.beta;\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function (p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul)\n }\n };\n }\n return beta;\n};\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed) return [this.x, this.y];\n return [this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1)\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1)\n }\n }];\n};\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string') obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2]) return res;\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [res].concat(pre.doubles.points.map(obj2point))\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [res].concat(pre.naf.points.map(obj2point))\n }\n };\n return res;\n};\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p;\n\n // P + O = P\n if (p.inf) return this;\n\n // P + P = 2P\n if (this.eq(p)) return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p)) return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0) return this.curve.point(null, null);\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0) return this.curve.point(null, null);\n var a = this.curve.a;\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k);\n};\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [this, p2];\n var coeffs = [k1, k2];\n if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\nPoint.prototype.eq = function eq(p) {\n return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf) return this;\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function (p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate)\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate)\n }\n };\n }\n return res;\n};\nPoint.prototype.toJ = function toJ() {\n if (this.inf) return this.curve.jpoint(null, null, null);\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\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 this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity()) return this.curve.point(null, null);\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n return this.curve.point(ax, ay);\n};\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p;\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ();\n\n // P + O = P\n if (p.isInfinity()) return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl();\n }\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0) return this;\n if (this.isInfinity()) return this;\n if (!pow) return this.dbl();\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++) r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow) jz4 = jz4.redMul(jyd4);\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this;\n if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl();\n};\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0) return true;\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\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};\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};","class ResponseErrorType {\n error: string;\n message: string[];\n\n constructor(errorType: any) {\n this.error = errorType.error || '';\n this.message = errorType.message\n ? Array.isArray(errorType.message)\n ? errorType.message\n : [errorType.message]\n : '';\n }\n}\n\nclass ResponseErrorDetails {\n class: number;\n code: string;\n lineNumber: number;\n message: string;\n name: string;\n number: number;\n\n constructor(details: any) {\n this.class = details.class || -1;\n this.code = details.code || '';\n this.lineNumber = details.lineNumber || -1;\n this.message = details.message || '';\n this.name = details.name || '';\n this.number = details.number || -1;\n }\n\n getMessage(): string {\n return `${this.name} ${this.message}`;\n }\n}\n\nclass ResponseData {\n errorDetails?: ResponseErrorDetails;\n errorMessage: string;\n errorType: ResponseErrorType;\n\n constructor(data: any) {\n this.errorDetails = data.errorDetails ? new ResponseErrorDetails(data.errorDetails) : undefined;\n this.errorMessage = data.errorMessage || '';\n this.errorType = new ResponseErrorType(data.errorType);\n }\n\n getMessages(): string[] {\n if (process.env.NODE_ENV !== 'production' && this.errorDetails) {\n return [...this.errorType.message, this.errorDetails.getMessage()];\n } else {\n return this.errorType.message;\n }\n }\n\n getErrorType(): string {\n return this.errorType.error;\n }\n}\n\nclass Response {\n config: any;\n data: ResponseData;\n\n constructor(response: any) {\n this.config = response.config || {};\n this.data = new ResponseData(response.data);\n }\n\n getMessages(): string[] {\n return this.data.getMessages();\n }\n\n getErrorType(): string {\n return this.data.getErrorType();\n }\n}\n\ninterface IResponseException {\n config: any;\n isAxiosError: boolean;\n request: any;\n response?: Response;\n\n getErrorMessage(): string[];\n}\n\nexport default class ResponseException implements IResponseException {\n config: any;\n isAxiosError: boolean;\n request: any;\n response?: Response;\n message: string;\n\n constructor(exception: any) {\n this.config = exception.config || {};\n this.isAxiosError = exception.isAxiosError;\n this.request = exception.request || {};\n this.message = exception.message || null;\n this.response = exception.response ? new Response(exception.response) : undefined;\n }\n\n getErrorMessage(): string[] {\n return this.response ? this.response.getMessages() : [this.message];\n }\n\n getErrorType(): string {\n return this.response ? this.response.getErrorType() : '';\n }\n}\n","var toString = {}.toString;\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n return stream.push(null);\n}","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","var MODES = require('./modes');\nvar AuthCipher = require('./authCipher');\nvar Buffer = require('safe-buffer').Buffer;\nvar StreamCipher = require('./streamCipher');\nvar Transform = require('cipher-base');\nvar aes = require('./aes');\nvar ebtk = require('evp_bytestokey');\nvar inherits = require('inherits');\nfunction Cipher(mode, key, iv) {\n Transform.call(this);\n this._cache = new Splitter();\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._mode = mode;\n this._autopadding = true;\n}\ninherits(Cipher, Transform);\nCipher.prototype._update = function (data) {\n this._cache.add(data);\n var chunk;\n var thing;\n var out = [];\n while (chunk = this._cache.get()) {\n thing = this._mode.encrypt(this, chunk);\n out.push(thing);\n }\n return Buffer.concat(out);\n};\nvar PADDING = Buffer.alloc(16, 0x10);\nCipher.prototype._final = function () {\n var chunk = this._cache.flush();\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk);\n this._cipher.scrub();\n return chunk;\n }\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub();\n throw new Error('data not multiple of block length');\n }\n};\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16);\n this.cache = this.cache.slice(16);\n return out;\n }\n return null;\n};\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length;\n var padBuff = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n padBuff.writeUInt8(len, i);\n }\n return Buffer.concat([this.cache, padBuff]);\n};\nfunction createCipheriv(suite, password, iv) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n if (typeof password === 'string') password = Buffer.from(password);\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length);\n if (typeof iv === 'string') iv = Buffer.from(iv);\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length);\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv);\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv);\n }\n return new Cipher(config.module, password, iv);\n}\nfunction createCipher(suite, password) {\n var config = MODES[suite.toLowerCase()];\n if (!config) throw new TypeError('invalid suite type');\n var keys = ebtk(password, false, config.key, config.iv);\n return createCipheriv(suite, keys.key, keys.iv);\n}\nexports.createCipheriv = createCipheriv;\nexports.createCipher = createCipher;","'use strict';\n\nfunction oldBrowser() {\n throw new Error('secure random number generation not supported by this browser\\nuse chrome, FireFox or Internet Explorer 11');\n}\nvar safeBuffer = require('safe-buffer');\nvar randombytes = require('randombytes');\nvar Buffer = safeBuffer.Buffer;\nvar kBufferMaxLength = safeBuffer.kMaxLength;\nvar crypto = global.crypto || global.msCrypto;\nvar kMaxUint32 = Math.pow(2, 32) - 1;\nfunction assertOffset(offset, length) {\n if (typeof offset !== 'number' || offset !== offset) {\n // eslint-disable-line no-self-compare\n throw new TypeError('offset must be a number');\n }\n if (offset > kMaxUint32 || offset < 0) {\n throw new TypeError('offset must be a uint32');\n }\n if (offset > kBufferMaxLength || offset > length) {\n throw new RangeError('offset out of range');\n }\n}\nfunction assertSize(size, offset, length) {\n if (typeof size !== 'number' || size !== size) {\n // eslint-disable-line no-self-compare\n throw new TypeError('size must be a number');\n }\n if (size > kMaxUint32 || size < 0) {\n throw new TypeError('size must be a uint32');\n }\n if (size + offset > length || size > kBufferMaxLength) {\n throw new RangeError('buffer too small');\n }\n}\nif (crypto && crypto.getRandomValues || !process.browser) {\n exports.randomFill = randomFill;\n exports.randomFillSync = randomFillSync;\n} else {\n exports.randomFill = oldBrowser;\n exports.randomFillSync = oldBrowser;\n}\nfunction randomFill(buf, offset, size, cb) {\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n if (typeof offset === 'function') {\n cb = offset;\n offset = 0;\n size = buf.length;\n } else if (typeof size === 'function') {\n cb = size;\n size = buf.length - offset;\n } else if (typeof cb !== 'function') {\n throw new TypeError('\"cb\" argument must be a function');\n }\n assertOffset(offset, buf.length);\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size, cb);\n}\nfunction actualFill(buf, offset, size, cb) {\n if (process.browser) {\n var ourBuf = buf.buffer;\n var uint = new Uint8Array(ourBuf, offset, size);\n crypto.getRandomValues(uint);\n if (cb) {\n process.nextTick(function () {\n cb(null, buf);\n });\n return;\n }\n return buf;\n }\n if (cb) {\n randombytes(size, function (err, bytes) {\n if (err) {\n return cb(err);\n }\n bytes.copy(buf, offset);\n cb(null, buf);\n });\n return;\n }\n var bytes = randombytes(size);\n bytes.copy(buf, offset);\n return buf;\n}\nfunction randomFillSync(buf, offset, size) {\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n if (!Buffer.isBuffer(buf) && !(buf instanceof global.Uint8Array)) {\n throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');\n }\n assertOffset(offset, buf.length);\n if (size === undefined) size = buf.length - offset;\n assertSize(size, offset, buf.length);\n return actualFill(buf, offset, size);\n}","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0,\n result = Array(length);\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n if (value !== value) {\n return baseFindIndex(array, baseIsNaN, fromIndex);\n }\n var index = fromIndex - 1,\n length = array.length;\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function (key) {\n return object[key];\n });\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];\n var length = result.length,\n skipIndexes = !!length;\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = fromIndex && !guard ? toInteger(fromIndex) : 0;\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object ? baseValues(object, keys(object)) : [];\n}\nmodule.exports = includes;","var createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0);\n var i = 0;\n var c;\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\n return t.slice(0, len);\n};\nfunction i2ops(c) {\n var out = Buffer.allocUnsafe(4);\n out.writeUInt32BE(c, 0);\n return out;\n}","var Buffer = require('safe-buffer').Buffer;\nvar checkParameters = require('./precondition');\nvar defaultEncoding = require('./default-encoding');\nvar sync = require('./sync');\nvar toBuffer = require('./to-buffer');\nvar ZERO_BUF;\nvar subtle = global.crypto && global.crypto.subtle;\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n};\nvar checks = [];\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8);\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo).then(function () {\n return true;\n }).catch(function () {\n return false;\n });\n checks[algo] = prom;\n return prom;\n}\nvar nextTick;\nfunction getNextTick() {\n if (nextTick) {\n return nextTick;\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick;\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask;\n } else if (global.setImmediate) {\n nextTick = global.setImmediate;\n } else {\n nextTick = global.setTimeout;\n }\n return nextTick;\n}\nfunction browserPbkdf2(password, salt, iterations, length, algo) {\n return subtle.importKey('raw', password, {\n name: 'PBKDF2'\n }, false, ['deriveBits']).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3);\n }).then(function (res) {\n return Buffer.from(res);\n });\n}\nfunction resolvePromise(promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out);\n });\n }, function (e) {\n getNextTick()(function () {\n callback(e);\n });\n });\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest;\n digest = undefined;\n }\n digest = digest || 'sha1';\n var algo = toBrowser[digest.toLowerCase()];\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out;\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n callback(null, out);\n });\n return;\n }\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2');\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo);\n return sync(password, salt, iterations, keylen, digest);\n }), callback);\n};","var md5 = require('create-hash/md5');\nvar RIPEMD160 = require('ripemd160');\nvar sha = require('sha.js');\nvar Buffer = require('safe-buffer').Buffer;\nvar checkParameters = require('./precondition');\nvar defaultEncoding = require('./default-encoding');\nvar toBuffer = require('./to-buffer');\nvar ZEROS = Buffer.alloc(128);\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n};\nfunction Hmac(alg, key, saltLen) {\n var hash = getDigest(alg);\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n if (key.length > blocksize) {\n key = hash(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4);\n ipad.copy(ipad1, 0, 0, blocksize);\n this.ipad1 = ipad1;\n this.ipad2 = ipad;\n this.opad = opad;\n this.alg = alg;\n this.blocksize = blocksize;\n this.hash = hash;\n this.size = sizes[alg];\n}\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize);\n var h = this.hash(ipad);\n h.copy(this.opad, this.blocksize);\n return this.hash(this.opad);\n};\nfunction getDigest(alg) {\n function shaFunc(data) {\n return sha(alg).update(data).digest();\n }\n function rmd160Func(data) {\n return new RIPEMD160().update(data).digest();\n }\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func;\n if (alg === 'md5') return md5;\n return shaFunc;\n}\nfunction pbkdf2(password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen);\n password = toBuffer(password, defaultEncoding, 'Password');\n salt = toBuffer(salt, defaultEncoding, 'Salt');\n digest = digest || 'sha1';\n var hmac = new Hmac(digest, password, salt.length);\n var DK = Buffer.allocUnsafe(keylen);\n var block1 = Buffer.allocUnsafe(salt.length + 4);\n salt.copy(block1, 0, 0, salt.length);\n var destPos = 0;\n var hLen = sizes[digest];\n var l = Math.ceil(keylen / hLen);\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length);\n var T = hmac.run(block1, hmac.ipad1);\n var U = T;\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2);\n for (var k = 0; k < hLen; k++) T[k] ^= U[k];\n }\n T.copy(DK, destPos);\n destPos += hLen;\n }\n return DK;\n}\nmodule.exports = pbkdf2;","/*global module, process*/\nvar Buffer = require('safe-buffer').Buffer;\nvar Stream = require('stream');\nvar util = require('util');\nfunction DataStream(data) {\n this.buffer = null;\n this.writable = true;\n this.readable = true;\n\n // No input\n if (!data) {\n this.buffer = Buffer.alloc(0);\n return this;\n }\n\n // Stream\n if (typeof data.pipe === 'function') {\n this.buffer = Buffer.alloc(0);\n data.pipe(this);\n return this;\n }\n\n // Buffer or String\n // or Object (assumedly a passworded key)\n if (data.length || typeof data === 'object') {\n this.buffer = data;\n this.writable = false;\n process.nextTick(function () {\n this.emit('end', data);\n this.readable = false;\n this.emit('close');\n }.bind(this));\n return this;\n }\n throw new TypeError('Unexpected data type (' + typeof data + ')');\n}\nutil.inherits(DataStream, Stream);\nDataStream.prototype.write = function write(data) {\n this.buffer = Buffer.concat([this.buffer, Buffer.from(data)]);\n this.emit('data', data);\n};\nDataStream.prototype.end = function end(data) {\n if (data) this.write(data);\n this.emit('end', data);\n this.emit('close');\n this.writable = false;\n this.readable = false;\n};\nmodule.exports = DataStream;","var constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n var res = {};\n Object.keys(map).forEach(function (key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key) key = key | 0;\n var value = map[key];\n res[value] = key;\n });\n return res;\n};\nconstants.der = require('./der');","module.exports = require('./readable').PassThrough;","module.exports = {\n decode: require('./decode'),\n verify: require('./verify'),\n sign: require('./sign'),\n JsonWebTokenError: require('./lib/JsonWebTokenError'),\n NotBeforeError: require('./lib/NotBeforeError'),\n TokenExpiredError: require('./lib/TokenExpiredError')\n};","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Sha256 = require('./sha256');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar W = new Array(64);\nfunction Sha224() {\n this.init();\n this._w = W; // new Array(64)\n\n Hash.call(this, 64, 56);\n}\ninherits(Sha224, Sha256);\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8;\n this._b = 0x367cd507;\n this._c = 0x3070dd17;\n this._d = 0xf70e5939;\n this._e = 0xffc00b31;\n this._f = 0x68581511;\n this._g = 0x64f98fa7;\n this._h = 0xbefa4fa4;\n return this;\n};\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28);\n H.writeInt32BE(this._a, 0);\n H.writeInt32BE(this._b, 4);\n H.writeInt32BE(this._c, 8);\n H.writeInt32BE(this._d, 12);\n H.writeInt32BE(this._e, 16);\n H.writeInt32BE(this._f, 20);\n H.writeInt32BE(this._g, 24);\n return H;\n};\nmodule.exports = Sha224;","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar getParamBytesForAlg = require('./param-bytes-for-alg');\nvar MAX_OCTET = 0x80,\n CLASS_UNIVERSAL = 0,\n PRIMITIVE_BIT = 0x20,\n TAG_SEQ = 0x10,\n TAG_INT = 0x02,\n ENCODED_TAG_SEQ = TAG_SEQ | PRIMITIVE_BIT | CLASS_UNIVERSAL << 6,\n ENCODED_TAG_INT = TAG_INT | CLASS_UNIVERSAL << 6;\nfunction base64Url(base64) {\n return base64.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction signatureAsBuffer(signature) {\n if (Buffer.isBuffer(signature)) {\n return signature;\n } else if ('string' === typeof signature) {\n return Buffer.from(signature, 'base64');\n }\n throw new TypeError('ECDSA signature must be a Base64 string or a Buffer');\n}\nfunction derToJose(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg);\n\n // the DER encoded param should at most be the param size, plus a padding\n // zero, since due to being a signed integer\n var maxEncodedParamLength = paramBytes + 1;\n var inputLength = signature.length;\n var offset = 0;\n if (signature[offset++] !== ENCODED_TAG_SEQ) {\n throw new Error('Could not find expected \"seq\"');\n }\n var seqLength = signature[offset++];\n if (seqLength === (MAX_OCTET | 1)) {\n seqLength = signature[offset++];\n }\n if (inputLength - offset < seqLength) {\n throw new Error('\"seq\" specified length of \"' + seqLength + '\", only \"' + (inputLength - offset) + '\" remaining');\n }\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"r\"');\n }\n var rLength = signature[offset++];\n if (inputLength - offset - 2 < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", only \"' + (inputLength - offset - 2) + '\" available');\n }\n if (maxEncodedParamLength < rLength) {\n throw new Error('\"r\" specified length of \"' + rLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n var rOffset = offset;\n offset += rLength;\n if (signature[offset++] !== ENCODED_TAG_INT) {\n throw new Error('Could not find expected \"int\" for \"s\"');\n }\n var sLength = signature[offset++];\n if (inputLength - offset !== sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", expected \"' + (inputLength - offset) + '\"');\n }\n if (maxEncodedParamLength < sLength) {\n throw new Error('\"s\" specified length of \"' + sLength + '\", max of \"' + maxEncodedParamLength + '\" is acceptable');\n }\n var sOffset = offset;\n offset += sLength;\n if (offset !== inputLength) {\n throw new Error('Expected to consume entire buffer, but \"' + (inputLength - offset) + '\" bytes remain');\n }\n var rPadding = paramBytes - rLength,\n sPadding = paramBytes - sLength;\n var dst = Buffer.allocUnsafe(rPadding + rLength + sPadding + sLength);\n for (offset = 0; offset < rPadding; ++offset) {\n dst[offset] = 0;\n }\n signature.copy(dst, offset, rOffset + Math.max(-rPadding, 0), rOffset + rLength);\n offset = paramBytes;\n for (var o = offset; offset < o + sPadding; ++offset) {\n dst[offset] = 0;\n }\n signature.copy(dst, offset, sOffset + Math.max(-sPadding, 0), sOffset + sLength);\n dst = dst.toString('base64');\n dst = base64Url(dst);\n return dst;\n}\nfunction countPadding(buf, start, stop) {\n var padding = 0;\n while (start + padding < stop && buf[start + padding] === 0) {\n ++padding;\n }\n var needsSign = buf[start + padding] >= MAX_OCTET;\n if (needsSign) {\n --padding;\n }\n return padding;\n}\nfunction joseToDer(signature, alg) {\n signature = signatureAsBuffer(signature);\n var paramBytes = getParamBytesForAlg(alg);\n var signatureBytes = signature.length;\n if (signatureBytes !== paramBytes * 2) {\n throw new TypeError('\"' + alg + '\" signatures must be \"' + paramBytes * 2 + '\" bytes, saw \"' + signatureBytes + '\"');\n }\n var rPadding = countPadding(signature, 0, paramBytes);\n var sPadding = countPadding(signature, paramBytes, signature.length);\n var rLength = paramBytes - rPadding;\n var sLength = paramBytes - sPadding;\n var rsBytes = 1 + 1 + rLength + 1 + 1 + sLength;\n var shortLength = rsBytes < MAX_OCTET;\n var dst = Buffer.allocUnsafe((shortLength ? 2 : 3) + rsBytes);\n var offset = 0;\n dst[offset++] = ENCODED_TAG_SEQ;\n if (shortLength) {\n // Bit 8 has value \"0\"\n // bits 7-1 give the length.\n dst[offset++] = rsBytes;\n } else {\n // Bit 8 of first octet has value \"1\"\n // bits 7-1 give the number of additional length octets.\n dst[offset++] = MAX_OCTET | 1;\n // length, base 256\n dst[offset++] = rsBytes & 0xff;\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = rLength;\n if (rPadding < 0) {\n dst[offset++] = 0;\n offset += signature.copy(dst, offset, 0, paramBytes);\n } else {\n offset += signature.copy(dst, offset, rPadding, paramBytes);\n }\n dst[offset++] = ENCODED_TAG_INT;\n dst[offset++] = sLength;\n if (sPadding < 0) {\n dst[offset++] = 0;\n signature.copy(dst, offset, paramBytes);\n } else {\n signature.copy(dst, offset, paramBytes + sPadding);\n }\n return dst;\n}\nmodule.exports = {\n derToJose: derToJose,\n joseToDer: joseToDer\n};","'use strict';\n\nif (typeof process === 'undefined' || !process.version || process.version.indexOf('v0.') === 0 || process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = {\n nextTick: nextTick\n };\n} else {\n module.exports = process;\n}\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\nutil.inherits(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n};\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","module.exports = assert;\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n var transitional = config.transitional;\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n var promise;\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n return promise;\n }\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n return promise;\n};\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nexports.inherits = inherits;\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = c >> 6 | 192;\n res[p++] = c & 63 | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = c >> 18 | 240;\n res[p++] = c >> 12 & 63 | 128;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n } else {\n res[p++] = c >> 12 | 224;\n res[p++] = c >> 6 & 63 | 128;\n res[p++] = c & 63 | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++) res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\nfunction htonl(w) {\n var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24;\n return res >>> 0;\n}\nexports.htonl = htonl;\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little') w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\nexports.zero2 = zero2;\nfunction zero8(word) {\n if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word;\n}\nexports.zero8 = zero8;\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = m >>> 16 & 0xff;\n res[k + 2] = m >>> 8 & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = m >>> 16 & 0xff;\n res[k + 1] = m >>> 8 & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\nfunction rotr32(w, b) {\n return w >>> b | w << 32 - b;\n}\nexports.rotr32 = rotr32;\nfunction rotl32(w, b) {\n return w << b | w >>> 32 - b;\n}\nexports.rotl32 = rotl32;\nfunction sum32(a, b) {\n return a + b >>> 0;\n}\nexports.sum32 = sum32;\nfunction sum32_3(a, b, c) {\n return a + b + c >>> 0;\n}\nexports.sum32_3 = sum32_3;\nfunction sum32_4(a, b, c, d) {\n return a + b + c + d >>> 0;\n}\nexports.sum32_4 = sum32_4;\nfunction sum32_5(a, b, c, d, e) {\n return a + b + c + d + e >>> 0;\n}\nexports.sum32_5 = sum32_5;\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = al + bl >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = lo + bl >>> 0;\n carry += lo < al ? 1 : 0;\n lo = lo + cl >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = lo + dl >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = lo + el >>> 0;\n carry += lo < el ? 1 : 0;\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\nfunction rotr64_hi(ah, al, num) {\n var r = al << 32 - num | ah >>> num;\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\nfunction rotr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\nfunction shr64_lo(ah, al, num) {\n var r = ah << 32 - num | al >>> num;\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nvar JWS_REGEX = /^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$/;\nfunction isObject(thing) {\n return Object.prototype.toString.call(thing) === '[object Object]';\n}\nfunction safeJsonParse(thing) {\n if (isObject(thing)) return thing;\n try {\n return JSON.parse(thing);\n } catch (e) {\n return undefined;\n }\n}\nfunction headerFromJWS(jwsSig) {\n var encodedHeader = jwsSig.split('.', 1)[0];\n return safeJsonParse(Buffer.from(encodedHeader, 'base64').toString('binary'));\n}\nfunction securedInputFromJWS(jwsSig) {\n return jwsSig.split('.', 2).join('.');\n}\nfunction signatureFromJWS(jwsSig) {\n return jwsSig.split('.')[2];\n}\nfunction payloadFromJWS(jwsSig, encoding) {\n encoding = encoding || 'utf8';\n var payload = jwsSig.split('.')[1];\n return Buffer.from(payload, 'base64').toString(encoding);\n}\nfunction isValidJws(string) {\n return JWS_REGEX.test(string) && !!headerFromJWS(string);\n}\nfunction jwsVerify(jwsSig, algorithm, secretOrKey) {\n if (!algorithm) {\n var err = new Error(\"Missing algorithm parameter for jws.verify\");\n err.code = \"MISSING_ALGORITHM\";\n throw err;\n }\n jwsSig = toString(jwsSig);\n var signature = signatureFromJWS(jwsSig);\n var securedInput = securedInputFromJWS(jwsSig);\n var algo = jwa(algorithm);\n return algo.verify(securedInput, signature, secretOrKey);\n}\nfunction jwsDecode(jwsSig, opts) {\n opts = opts || {};\n jwsSig = toString(jwsSig);\n if (!isValidJws(jwsSig)) return null;\n var header = headerFromJWS(jwsSig);\n if (!header) return null;\n var payload = payloadFromJWS(jwsSig);\n if (header.typ === 'JWT' || opts.json) payload = JSON.parse(payload, opts.encoding);\n return {\n header: header,\n payload: payload,\n signature: signatureFromJWS(jwsSig)\n };\n}\nfunction VerifyStream(opts) {\n opts = opts || {};\n var secretOrKey = opts.secret || opts.publicKey || opts.key;\n var secretStream = new DataStream(secretOrKey);\n this.readable = true;\n this.algorithm = opts.algorithm;\n this.encoding = opts.encoding;\n this.secret = this.publicKey = this.key = secretStream;\n this.signature = new DataStream(opts.signature);\n this.secret.once('close', function () {\n if (!this.signature.writable && this.readable) this.verify();\n }.bind(this));\n this.signature.once('close', function () {\n if (!this.secret.writable && this.readable) this.verify();\n }.bind(this));\n}\nutil.inherits(VerifyStream, Stream);\nVerifyStream.prototype.verify = function verify() {\n try {\n var valid = jwsVerify(this.signature.buffer, this.algorithm, this.key.buffer);\n var obj = jwsDecode(this.signature.buffer, this.encoding);\n this.emit('done', valid, obj);\n this.emit('data', valid);\n this.emit('end');\n this.readable = false;\n return valid;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\nVerifyStream.decode = jwsDecode;\nVerifyStream.isValid = isValidJws;\nVerifyStream.verify = jwsVerify;\nmodule.exports = VerifyStream;","'use strict';\n\nvar BN = require('bn.js');\nvar randomBytes = require('randombytes');\nvar Buffer = require('safe-buffer').Buffer;\nfunction getr(priv) {\n var len = priv.modulus.byteLength();\n var r;\n do {\n r = new BN(randomBytes(len));\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2));\n return r;\n}\nfunction blind(priv) {\n var r = getr(priv);\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();\n return {\n blinder: blinder,\n unblinder: r.invm(priv.modulus)\n };\n}\nfunction crt(msg, priv) {\n var blinds = blind(priv);\n var len = priv.modulus.byteLength();\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus);\n var c1 = blinded.toRed(BN.mont(priv.prime1));\n var c2 = blinded.toRed(BN.mont(priv.prime2));\n var qinv = priv.coefficient;\n var p = priv.prime1;\n var q = priv.prime2;\n var m1 = c1.redPow(priv.exponent1).fromRed();\n var m2 = c2.redPow(priv.exponent2).fromRed();\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q);\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len);\n}\ncrt.getr = getr;\nmodule.exports = crt;","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\nexports.isError = isError;\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' ||\n // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nvar W = new Array(160);\nfunction Sha512() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\ninherits(Sha512, Hash);\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667;\n this._bh = 0xbb67ae85;\n this._ch = 0x3c6ef372;\n this._dh = 0xa54ff53a;\n this._eh = 0x510e527f;\n this._fh = 0x9b05688c;\n this._gh = 0x1f83d9ab;\n this._hh = 0x5be0cd19;\n this._al = 0xf3bcc908;\n this._bl = 0x84caa73b;\n this._cl = 0xfe94f82b;\n this._dl = 0x5f1d36f1;\n this._el = 0xade682d1;\n this._fl = 0x2b3e6c1f;\n this._gl = 0xfb41bd6b;\n this._hl = 0x137e2179;\n return this;\n};\nfunction Ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\nfunction sigma0(x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);\n}\nfunction sigma1(x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);\n}\nfunction Gamma0(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;\n}\nfunction Gamma0l(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);\n}\nfunction Gamma1(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;\n}\nfunction Gamma1l(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);\n}\nfunction getCarry(a, b) {\n return a >>> 0 < b >>> 0 ? 1 : 0;\n}\nSha512.prototype._update = function (M) {\n var W = this._w;\n var ah = this._ah | 0;\n var bh = this._bh | 0;\n var ch = this._ch | 0;\n var dh = this._dh | 0;\n var eh = this._eh | 0;\n var fh = this._fh | 0;\n var gh = this._gh | 0;\n var hh = this._hh | 0;\n var al = this._al | 0;\n var bl = this._bl | 0;\n var cl = this._cl | 0;\n var dl = this._dl | 0;\n var el = this._el | 0;\n var fl = this._fl | 0;\n var gl = this._gl | 0;\n var hl = this._hl | 0;\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4);\n W[i + 1] = M.readInt32BE(i * 4 + 4);\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2];\n var xl = W[i - 15 * 2 + 1];\n var gamma0 = Gamma0(xh, xl);\n var gamma0l = Gamma0l(xl, xh);\n xh = W[i - 2 * 2];\n xl = W[i - 2 * 2 + 1];\n var gamma1 = Gamma1(xh, xl);\n var gamma1l = Gamma1l(xl, xh);\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2];\n var Wi7l = W[i - 7 * 2 + 1];\n var Wi16h = W[i - 16 * 2];\n var Wi16l = W[i - 16 * 2 + 1];\n var Wil = gamma0l + Wi7l | 0;\n var Wih = gamma0 + Wi7h + getCarry(Wil, gamma0l) | 0;\n Wil = Wil + gamma1l | 0;\n Wih = Wih + gamma1 + getCarry(Wil, gamma1l) | 0;\n Wil = Wil + Wi16l | 0;\n Wih = Wih + Wi16h + getCarry(Wil, Wi16l) | 0;\n W[i] = Wih;\n W[i + 1] = Wil;\n }\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j];\n Wil = W[j + 1];\n var majh = maj(ah, bh, ch);\n var majl = maj(al, bl, cl);\n var sigma0h = sigma0(ah, al);\n var sigma0l = sigma0(al, ah);\n var sigma1h = sigma1(eh, el);\n var sigma1l = sigma1(el, eh);\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j];\n var Kil = K[j + 1];\n var chh = Ch(eh, fh, gh);\n var chl = Ch(el, fl, gl);\n var t1l = hl + sigma1l | 0;\n var t1h = hh + sigma1h + getCarry(t1l, hl) | 0;\n t1l = t1l + chl | 0;\n t1h = t1h + chh + getCarry(t1l, chl) | 0;\n t1l = t1l + Kil | 0;\n t1h = t1h + Kih + getCarry(t1l, Kil) | 0;\n t1l = t1l + Wil | 0;\n t1h = t1h + Wih + getCarry(t1l, Wil) | 0;\n\n // t2 = sigma0 + maj\n var t2l = sigma0l + majl | 0;\n var t2h = sigma0h + majh + getCarry(t2l, sigma0l) | 0;\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n el = dl + t1l | 0;\n eh = dh + t1h + getCarry(el, dl) | 0;\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n al = t1l + t2l | 0;\n ah = t1h + t2h + getCarry(al, t1l) | 0;\n }\n this._al = this._al + al | 0;\n this._bl = this._bl + bl | 0;\n this._cl = this._cl + cl | 0;\n this._dl = this._dl + dl | 0;\n this._el = this._el + el | 0;\n this._fl = this._fl + fl | 0;\n this._gl = this._gl + gl | 0;\n this._hl = this._hl + hl | 0;\n this._ah = this._ah + ah + getCarry(this._al, al) | 0;\n this._bh = this._bh + bh + getCarry(this._bl, bl) | 0;\n this._ch = this._ch + ch + getCarry(this._cl, cl) | 0;\n this._dh = this._dh + dh + getCarry(this._dl, dl) | 0;\n this._eh = this._eh + eh + getCarry(this._el, el) | 0;\n this._fh = this._fh + fh + getCarry(this._fl, fl) | 0;\n this._gh = this._gh + gh + getCarry(this._gl, gl) | 0;\n this._hh = this._hh + hh + getCarry(this._hl, hl) | 0;\n};\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64);\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n writeInt64BE(this._gh, this._gl, 48);\n writeInt64BE(this._hh, this._hl, 56);\n return H;\n};\nmodule.exports = Sha512;","var asn1 = exports;\nasn1.bignum = require('bn.js');\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');","exports = module.exports = SemVer;\nvar debug;\n/* istanbul ignore next */\nif (typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n debug = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n args.unshift('SEMVER');\n console.log.apply(console, args);\n };\n} else {\n debug = function () {};\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0';\nvar MAX_LENGTH = 256;\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */9007199254740991;\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16;\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n\n// The actual regexps go on exports.re\nvar re = exports.re = [];\nvar safeRe = exports.safeRe = [];\nvar src = exports.src = [];\nvar R = 0;\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]';\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [['\\\\s', 1], ['\\\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];\nfunction makeSafeRe(value) {\n for (var i = 0; i < safeRegexReplacements.length; i++) {\n var token = safeRegexReplacements[i][0];\n var max = safeRegexReplacements[i][1];\n value = value.split(token + '*').join(token + '{0,' + max + '}').split(token + '+').join(token + '{1,' + max + '}');\n }\n return value;\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\nvar NUMERICIDENTIFIER = R++;\nsrc[NUMERICIDENTIFIER] = '0|[1-9]\\\\d*';\nvar NUMERICIDENTIFIERLOOSE = R++;\nsrc[NUMERICIDENTIFIERLOOSE] = '\\\\d+';\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\nvar NONNUMERICIDENTIFIER = R++;\nsrc[NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*';\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\nvar MAINVERSION = R++;\nsrc[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\\\.' + '(' + src[NUMERICIDENTIFIER] + ')';\nvar MAINVERSIONLOOSE = R++;\nsrc[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')';\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\nvar PRERELEASEIDENTIFIER = R++;\nsrc[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + '|' + src[NONNUMERICIDENTIFIER] + ')';\nvar PRERELEASEIDENTIFIERLOOSE = R++;\nsrc[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + '|' + src[NONNUMERICIDENTIFIER] + ')';\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\nvar PRERELEASE = R++;\nsrc[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + '(?:\\\\.' + src[PRERELEASEIDENTIFIER] + ')*))';\nvar PRERELEASELOOSE = R++;\nsrc[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + '(?:\\\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))';\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\nvar BUILDIDENTIFIER = R++;\nsrc[BUILDIDENTIFIER] = LETTERDASHNUMBER + '+';\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\nvar BUILD = R++;\nsrc[BUILD] = '(?:\\\\+(' + src[BUILDIDENTIFIER] + '(?:\\\\.' + src[BUILDIDENTIFIER] + ')*))';\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\nvar FULL = R++;\nvar FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + src[BUILD] + '?';\nsrc[FULL] = '^' + FULLPLAIN + '$';\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\nvar LOOSEPLAIN = '[v=\\\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + src[BUILD] + '?';\nvar LOOSE = R++;\nsrc[LOOSE] = '^' + LOOSEPLAIN + '$';\nvar GTLT = R++;\nsrc[GTLT] = '((?:<|>)?=?)';\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\nvar XRANGEIDENTIFIERLOOSE = R++;\nsrc[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*';\nvar XRANGEIDENTIFIER = R++;\nsrc[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\\\*';\nvar XRANGEPLAIN = R++;\nsrc[XRANGEPLAIN] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGEPLAINLOOSE = R++;\nsrc[XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + ')?)?';\nvar XRANGE = R++;\nsrc[XRANGE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAIN] + '$';\nvar XRANGELOOSE = R++;\nsrc[XRANGELOOSE] = '^' + src[GTLT] + '\\\\s*' + src[XRANGEPLAINLOOSE] + '$';\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\nvar COERCE = R++;\nsrc[COERCE] = '(?:^|[^\\\\d])' + '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\\\d])';\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\nvar LONETILDE = R++;\nsrc[LONETILDE] = '(?:~>?)';\nvar TILDETRIM = R++;\nsrc[TILDETRIM] = '(\\\\s*)' + src[LONETILDE] + '\\\\s+';\nre[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');\nsafeRe[TILDETRIM] = new RegExp(makeSafeRe(src[TILDETRIM]), 'g');\nvar tildeTrimReplace = '$1~';\nvar TILDE = R++;\nsrc[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';\nvar TILDELOOSE = R++;\nsrc[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$';\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\nvar LONECARET = R++;\nsrc[LONECARET] = '(?:\\\\^)';\nvar CARETTRIM = R++;\nsrc[CARETTRIM] = '(\\\\s*)' + src[LONECARET] + '\\\\s+';\nre[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');\nsafeRe[CARETTRIM] = new RegExp(makeSafeRe(src[CARETTRIM]), 'g');\nvar caretTrimReplace = '$1^';\nvar CARET = R++;\nsrc[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';\nvar CARETLOOSE = R++;\nsrc[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$';\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\nvar COMPARATORLOOSE = R++;\nsrc[COMPARATORLOOSE] = '^' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + ')$|^$';\nvar COMPARATOR = R++;\nsrc[COMPARATOR] = '^' + src[GTLT] + '\\\\s*(' + FULLPLAIN + ')$|^$';\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\nvar COMPARATORTRIM = R++;\nsrc[COMPARATORTRIM] = '(\\\\s*)' + src[GTLT] + '\\\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')';\n\n// this one has to use the /g flag\nre[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');\nsafeRe[COMPARATORTRIM] = new RegExp(makeSafeRe(src[COMPARATORTRIM]), 'g');\nvar comparatorTrimReplace = '$1$2$3';\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\nvar HYPHENRANGE = R++;\nsrc[HYPHENRANGE] = '^\\\\s*(' + src[XRANGEPLAIN] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAIN] + ')' + '\\\\s*$';\nvar HYPHENRANGELOOSE = R++;\nsrc[HYPHENRANGELOOSE] = '^\\\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s+-\\\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + '\\\\s*$';\n\n// Star ranges basically just allow anything at all.\nvar STAR = R++;\nsrc[STAR] = '(<|>)?=?\\\\s*\\\\*';\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n debug(i, src[i]);\n if (!re[i]) {\n re[i] = new RegExp(src[i]);\n\n // Replace all greedy whitespace to prevent regex dos issues. These regex are\n // used internally via the safeRe object since all inputs in this library get\n // normalized first to trim and collapse all extra whitespace. The original\n // regexes are exported for userland consumption and lower level usage. A\n // future breaking change could export the safer regex only with a note that\n // all input should have extra whitespace removed.\n safeRe[i] = new RegExp(makeSafeRe(src[i]));\n }\n}\nexports.parse = parse;\nfunction parse(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n return version;\n }\n if (typeof version !== 'string') {\n return null;\n }\n if (version.length > MAX_LENGTH) {\n return null;\n }\n var r = options.loose ? safeRe[LOOSE] : safeRe[FULL];\n if (!r.test(version)) {\n return null;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n return null;\n }\n}\nexports.valid = valid;\nfunction valid(version, options) {\n var v = parse(version, options);\n return v ? v.version : null;\n}\nexports.clean = clean;\nfunction clean(version, options) {\n var s = parse(version.trim().replace(/^[=v]+/, ''), options);\n return s ? s.version : null;\n}\nexports.SemVer = SemVer;\nfunction SemVer(version, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (version instanceof SemVer) {\n if (version.loose === options.loose) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== 'string') {\n throw new TypeError('Invalid Version: ' + version);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');\n }\n if (!(this instanceof SemVer)) {\n return new SemVer(version, options);\n }\n debug('SemVer', version, options);\n this.options = options;\n this.loose = !!options.loose;\n var m = version.trim().match(options.loose ? safeRe[LOOSE] : safeRe[FULL]);\n if (!m) {\n throw new TypeError('Invalid Version: ' + version);\n }\n this.raw = version;\n\n // these are actually numbers\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version');\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version');\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version');\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split('.').map(function (id) {\n if (/^[0-9]+$/.test(id)) {\n var num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split('.') : [];\n this.format();\n}\nSemVer.prototype.format = function () {\n this.version = this.major + '.' + this.minor + '.' + this.patch;\n if (this.prerelease.length) {\n this.version += '-' + this.prerelease.join('.');\n }\n return this.version;\n};\nSemVer.prototype.toString = function () {\n return this.version;\n};\nSemVer.prototype.compare = function (other) {\n debug('SemVer.compare', this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return this.compareMain(other) || this.comparePre(other);\n};\nSemVer.prototype.compareMain = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);\n};\nSemVer.prototype.comparePre = function (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n var i = 0;\n do {\n var a = this.prerelease[i];\n var b = other.prerelease[i];\n debug('prerelease compare', i, a, b);\n if (a === undefined && b === undefined) {\n return 0;\n } else if (b === undefined) {\n return 1;\n } else if (a === undefined) {\n return -1;\n } else if (a === b) {\n continue;\n } else {\n return compareIdentifiers(a, b);\n }\n } while (++i);\n};\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc('pre', identifier);\n break;\n case 'preminor':\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc('pre', identifier);\n break;\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0;\n this.inc('patch', identifier);\n this.inc('pre', identifier);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier);\n }\n this.inc('pre', identifier);\n break;\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n case 'pre':\n if (this.prerelease.length === 0) {\n this.prerelease = [0];\n } else {\n var i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n // didn't increment anything\n this.prerelease.push(0);\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n if (this.prerelease[0] === identifier) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = [identifier, 0];\n }\n } else {\n this.prerelease = [identifier, 0];\n }\n }\n break;\n default:\n throw new Error('invalid increment argument: ' + release);\n }\n this.format();\n this.raw = this.version;\n return this;\n};\nexports.inc = inc;\nfunction inc(version, release, loose, identifier) {\n if (typeof loose === 'string') {\n identifier = loose;\n loose = undefined;\n }\n try {\n return new SemVer(version, loose).inc(release, identifier).version;\n } catch (er) {\n return null;\n }\n}\nexports.diff = diff;\nfunction diff(version1, version2) {\n if (eq(version1, version2)) {\n return null;\n } else {\n var v1 = parse(version1);\n var v2 = parse(version2);\n var prefix = '';\n if (v1.prerelease.length || v2.prerelease.length) {\n prefix = 'pre';\n var defaultResult = 'prerelease';\n }\n for (var key in v1) {\n if (key === 'major' || key === 'minor' || key === 'patch') {\n if (v1[key] !== v2[key]) {\n return prefix + key;\n }\n }\n }\n return defaultResult; // may be undefined\n }\n}\nexports.compareIdentifiers = compareIdentifiers;\nvar numeric = /^[0-9]+$/;\nfunction compareIdentifiers(a, b) {\n var anum = numeric.test(a);\n var bnum = numeric.test(b);\n if (anum && bnum) {\n a = +a;\n b = +b;\n }\n return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;\n}\nexports.rcompareIdentifiers = rcompareIdentifiers;\nfunction rcompareIdentifiers(a, b) {\n return compareIdentifiers(b, a);\n}\nexports.major = major;\nfunction major(a, loose) {\n return new SemVer(a, loose).major;\n}\nexports.minor = minor;\nfunction minor(a, loose) {\n return new SemVer(a, loose).minor;\n}\nexports.patch = patch;\nfunction patch(a, loose) {\n return new SemVer(a, loose).patch;\n}\nexports.compare = compare;\nfunction compare(a, b, loose) {\n return new SemVer(a, loose).compare(new SemVer(b, loose));\n}\nexports.compareLoose = compareLoose;\nfunction compareLoose(a, b) {\n return compare(a, b, true);\n}\nexports.rcompare = rcompare;\nfunction rcompare(a, b, loose) {\n return compare(b, a, loose);\n}\nexports.sort = sort;\nfunction sort(list, loose) {\n return list.sort(function (a, b) {\n return exports.compare(a, b, loose);\n });\n}\nexports.rsort = rsort;\nfunction rsort(list, loose) {\n return list.sort(function (a, b) {\n return exports.rcompare(a, b, loose);\n });\n}\nexports.gt = gt;\nfunction gt(a, b, loose) {\n return compare(a, b, loose) > 0;\n}\nexports.lt = lt;\nfunction lt(a, b, loose) {\n return compare(a, b, loose) < 0;\n}\nexports.eq = eq;\nfunction eq(a, b, loose) {\n return compare(a, b, loose) === 0;\n}\nexports.neq = neq;\nfunction neq(a, b, loose) {\n return compare(a, b, loose) !== 0;\n}\nexports.gte = gte;\nfunction gte(a, b, loose) {\n return compare(a, b, loose) >= 0;\n}\nexports.lte = lte;\nfunction lte(a, b, loose) {\n return compare(a, b, loose) <= 0;\n}\nexports.cmp = cmp;\nfunction cmp(a, op, b, loose) {\n switch (op) {\n case '===':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a === b;\n case '!==':\n if (typeof a === 'object') a = a.version;\n if (typeof b === 'object') b = b.version;\n return a !== b;\n case '':\n case '=':\n case '==':\n return eq(a, b, loose);\n case '!=':\n return neq(a, b, loose);\n case '>':\n return gt(a, b, loose);\n case '>=':\n return gte(a, b, loose);\n case '<':\n return lt(a, b, loose);\n case '<=':\n return lte(a, b, loose);\n default:\n throw new TypeError('Invalid operator: ' + op);\n }\n}\nexports.Comparator = Comparator;\nfunction Comparator(comp, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp;\n } else {\n comp = comp.value;\n }\n }\n if (!(this instanceof Comparator)) {\n return new Comparator(comp, options);\n }\n comp = comp.trim().split(/\\s+/).join(' ');\n debug('comparator', comp, options);\n this.options = options;\n this.loose = !!options.loose;\n this.parse(comp);\n if (this.semver === ANY) {\n this.value = '';\n } else {\n this.value = this.operator + this.semver.version;\n }\n debug('comp', this);\n}\nvar ANY = {};\nComparator.prototype.parse = function (comp) {\n var r = this.options.loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR];\n var m = comp.match(r);\n if (!m) {\n throw new TypeError('Invalid comparator: ' + comp);\n }\n this.operator = m[1];\n if (this.operator === '=') {\n this.operator = '';\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY;\n } else {\n this.semver = new SemVer(m[2], this.options.loose);\n }\n};\nComparator.prototype.toString = function () {\n return this.value;\n};\nComparator.prototype.test = function (version) {\n debug('Comparator.test', version, this.options.loose);\n if (this.semver === ANY) {\n return true;\n }\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n return cmp(version, this.operator, this.semver, this.options);\n};\nComparator.prototype.intersects = function (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required');\n }\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n var rangeTmp;\n if (this.operator === '') {\n rangeTmp = new Range(comp.value, options);\n return satisfies(this.value, rangeTmp, options);\n } else if (comp.operator === '') {\n rangeTmp = new Range(this.value, options);\n return satisfies(comp.semver, rangeTmp, options);\n }\n var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');\n var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');\n var sameSemVer = this.semver.version === comp.semver.version;\n var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');\n var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');\n var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');\n return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;\n};\nexports.Range = Range;\nfunction Range(range, options) {\n if (!options || typeof options !== 'object') {\n options = {\n loose: !!options,\n includePrerelease: false\n };\n }\n if (range instanceof Range) {\n if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {\n return range;\n } else {\n return new Range(range.raw, options);\n }\n }\n if (range instanceof Comparator) {\n return new Range(range.value, options);\n }\n if (!(this instanceof Range)) {\n return new Range(range, options);\n }\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().split(/\\s+/).join(' ');\n\n // First, split based on boolean or ||\n this.set = this.raw.split('||').map(function (range) {\n return this.parseRange(range.trim());\n }, this).filter(function (c) {\n // throw out any that are not relevant for whatever reason\n return c.length;\n });\n if (!this.set.length) {\n throw new TypeError('Invalid SemVer Range: ' + this.raw);\n }\n this.format();\n}\nRange.prototype.format = function () {\n this.range = this.set.map(function (comps) {\n return comps.join(' ').trim();\n }).join('||').trim();\n return this.range;\n};\nRange.prototype.toString = function () {\n return this.range;\n};\nRange.prototype.parseRange = function (range) {\n var loose = this.options.loose;\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n var hr = loose ? safeRe[HYPHENRANGELOOSE] : safeRe[HYPHENRANGE];\n range = range.replace(hr, hyphenReplace);\n debug('hyphen replace', range);\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(safeRe[COMPARATORTRIM], comparatorTrimReplace);\n debug('comparator trim', range, safeRe[COMPARATORTRIM]);\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(safeRe[TILDETRIM], tildeTrimReplace);\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(safeRe[CARETTRIM], caretTrimReplace);\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n var compRe = loose ? safeRe[COMPARATORLOOSE] : safeRe[COMPARATOR];\n var set = range.split(' ').map(function (comp) {\n return parseComparator(comp, this.options);\n }, this).join(' ').split(/\\s+/);\n if (this.options.loose) {\n // in loose mode, throw out any that are not valid comparators\n set = set.filter(function (comp) {\n return !!comp.match(compRe);\n });\n }\n set = set.map(function (comp) {\n return new Comparator(comp, this.options);\n }, this);\n return set;\n};\nRange.prototype.intersects = function (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required');\n }\n return this.set.some(function (thisComparators) {\n return thisComparators.every(function (thisComparator) {\n return range.set.some(function (rangeComparators) {\n return rangeComparators.every(function (rangeComparator) {\n return thisComparator.intersects(rangeComparator, options);\n });\n });\n });\n });\n};\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators;\nfunction toComparators(range, options) {\n return new Range(range, options).set.map(function (comp) {\n return comp.map(function (c) {\n return c.value;\n }).join(' ').trim().split(' ');\n });\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator(comp, options) {\n debug('comp', comp, options);\n comp = replaceCarets(comp, options);\n debug('caret', comp);\n comp = replaceTildes(comp, options);\n debug('tildes', comp);\n comp = replaceXRanges(comp, options);\n debug('xrange', comp);\n comp = replaceStars(comp, options);\n debug('stars', comp);\n return comp;\n}\nfunction isX(id) {\n return !id || id.toLowerCase() === 'x' || id === '*';\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceTilde(comp, options);\n }).join(' ');\n}\nfunction replaceTilde(comp, options) {\n var r = options.loose ? safeRe[TILDELOOSE] : safeRe[TILDE];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('tilde', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else if (pr) {\n debug('replaceTilde pr', pr);\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n debug('tilde return', ret);\n return ret;\n });\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets(comp, options) {\n return comp.trim().split(/\\s+/).map(function (comp) {\n return replaceCaret(comp, options);\n }).join(' ');\n}\nfunction replaceCaret(comp, options) {\n debug('caret', comp, options);\n var r = options.loose ? safeRe[CARETLOOSE] : safeRe[CARET];\n return comp.replace(r, function (_, M, m, p, pr) {\n debug('caret', comp, _, M, m, p, pr);\n var ret;\n if (isX(M)) {\n ret = '';\n } else if (isX(m)) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (isX(p)) {\n if (M === '0') {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n } else {\n ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';\n }\n } else if (pr) {\n debug('replaceCaret pr', pr);\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';\n }\n } else {\n debug('no pr');\n if (M === '0') {\n if (m === '0') {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';\n }\n } else {\n ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';\n }\n }\n debug('caret return', ret);\n return ret;\n });\n}\nfunction replaceXRanges(comp, options) {\n debug('replaceXRanges', comp, options);\n return comp.split(/\\s+/).map(function (comp) {\n return replaceXRange(comp, options);\n }).join(' ');\n}\nfunction replaceXRange(comp, options) {\n comp = comp.trim();\n var r = options.loose ? safeRe[XRANGELOOSE] : safeRe[XRANGE];\n return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n debug('xRange', comp, ret, gtlt, M, m, p, pr);\n var xM = isX(M);\n var xm = xM || isX(m);\n var xp = xm || isX(p);\n var anyX = xp;\n if (gtlt === '=' && anyX) {\n gtlt = '';\n }\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0';\n } else {\n // nothing is forbidden\n ret = '*';\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0;\n }\n p = 0;\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n // >1.2.3 => >= 1.2.4\n gtlt = '>=';\n if (xm) {\n M = +M + 1;\n m = 0;\n p = 0;\n } else {\n m = +m + 1;\n p = 0;\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<';\n if (xm) {\n M = +M + 1;\n } else {\n m = +m + 1;\n }\n }\n ret = gtlt + M + '.' + m + '.' + p;\n } else if (xm) {\n ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';\n } else if (xp) {\n ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';\n }\n debug('xRange return', ret);\n return ret;\n });\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars(comp, options) {\n debug('replaceStars', comp, options);\n // Looseness is ignored here. star is always as loose as it gets!\n return comp.trim().replace(safeRe[STAR], '');\n}\n\n// This function is passed to string.replace(safeRe[HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {\n if (isX(fM)) {\n from = '';\n } else if (isX(fm)) {\n from = '>=' + fM + '.0.0';\n } else if (isX(fp)) {\n from = '>=' + fM + '.' + fm + '.0';\n } else {\n from = '>=' + from;\n }\n if (isX(tM)) {\n to = '';\n } else if (isX(tm)) {\n to = '<' + (+tM + 1) + '.0.0';\n } else if (isX(tp)) {\n to = '<' + tM + '.' + (+tm + 1) + '.0';\n } else if (tpr) {\n to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;\n } else {\n to = '<=' + to;\n }\n return (from + ' ' + to).trim();\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n if (!version) {\n return false;\n }\n if (typeof version === 'string') {\n version = new SemVer(version, this.options);\n }\n for (var i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true;\n }\n }\n return false;\n};\nfunction testSet(set, version, options) {\n for (var i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false;\n }\n }\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (i = 0; i < set.length; i++) {\n debug(set[i].semver);\n if (set[i].semver === ANY) {\n continue;\n }\n if (set[i].semver.prerelease.length > 0) {\n var allowed = set[i].semver;\n if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {\n return true;\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false;\n }\n return true;\n}\nexports.satisfies = satisfies;\nfunction satisfies(version, range, options) {\n try {\n range = new Range(range, options);\n } catch (er) {\n return false;\n }\n return range.test(version);\n}\nexports.maxSatisfying = maxSatisfying;\nfunction maxSatisfying(versions, range, options) {\n var max = null;\n var maxSV = null;\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v;\n maxSV = new SemVer(max, options);\n }\n }\n });\n return max;\n}\nexports.minSatisfying = minSatisfying;\nfunction minSatisfying(versions, range, options) {\n var min = null;\n var minSV = null;\n try {\n var rangeObj = new Range(range, options);\n } catch (er) {\n return null;\n }\n versions.forEach(function (v) {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v;\n minSV = new SemVer(min, options);\n }\n }\n });\n return min;\n}\nexports.minVersion = minVersion;\nfunction minVersion(range, loose) {\n range = new Range(range, loose);\n var minver = new SemVer('0.0.0');\n if (range.test(minver)) {\n return minver;\n }\n minver = new SemVer('0.0.0-0');\n if (range.test(minver)) {\n return minver;\n }\n minver = null;\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n comparators.forEach(function (comparator) {\n // Clone to avoid manipulating the comparator's semver object.\n var compver = new SemVer(comparator.semver.version);\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++;\n } else {\n compver.prerelease.push(0);\n }\n compver.raw = compver.format();\n /* fallthrough */\n case '':\n case '>=':\n if (!minver || gt(minver, compver)) {\n minver = compver;\n }\n break;\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break;\n /* istanbul ignore next */\n default:\n throw new Error('Unexpected operation: ' + comparator.operator);\n }\n });\n }\n if (minver && range.test(minver)) {\n return minver;\n }\n return null;\n}\nexports.validRange = validRange;\nfunction validRange(range, options) {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*';\n } catch (er) {\n return null;\n }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr;\nfunction ltr(version, range, options) {\n return outside(version, range, '<', options);\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr;\nfunction gtr(version, range, options) {\n return outside(version, range, '>', options);\n}\nexports.outside = outside;\nfunction outside(version, range, hilo, options) {\n version = new SemVer(version, options);\n range = new Range(range, options);\n var gtfn, ltefn, ltfn, comp, ecomp;\n switch (hilo) {\n case '>':\n gtfn = gt;\n ltefn = lte;\n ltfn = lt;\n comp = '>';\n ecomp = '>=';\n break;\n case '<':\n gtfn = lt;\n ltefn = gte;\n ltfn = gt;\n comp = '<';\n ecomp = '<=';\n break;\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"');\n }\n\n // If it satisifes the range it is not outside\n if (satisfies(version, range, options)) {\n return false;\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (var i = 0; i < range.set.length; ++i) {\n var comparators = range.set[i];\n var high = null;\n var low = null;\n comparators.forEach(function (comparator) {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0');\n }\n high = high || comparator;\n low = low || comparator;\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator;\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator;\n }\n });\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false;\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {\n return false;\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false;\n }\n }\n return true;\n}\nexports.prerelease = prerelease;\nfunction prerelease(version, options) {\n var parsed = parse(version, options);\n return parsed && parsed.prerelease.length ? parsed.prerelease : null;\n}\nexports.intersects = intersects;\nfunction intersects(r1, r2, options) {\n r1 = new Range(r1, options);\n r2 = new Range(r2, options);\n return r1.intersects(r2);\n}\nexports.coerce = coerce;\nfunction coerce(version) {\n if (version instanceof SemVer) {\n return version;\n }\n if (typeof version !== 'string') {\n return null;\n }\n var match = version.match(safeRe[COERCE]);\n if (match == null) {\n return null;\n }\n return parse(match[1] + '.' + (match[2] || '0') + '.' + (match[3] || '0'));\n}","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nvar GHASH = require('./ghash');\nvar xor = require('buffer-xor');\nvar incr32 = require('./incr32');\nfunction xorTest(a, b) {\n var out = 0;\n if (a.length !== b.length) out++;\n var len = Math.min(a.length, b.length);\n for (var i = 0; i < len; ++i) {\n out += a[i] ^ b[i];\n }\n return out;\n}\nfunction calcIv(self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]);\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]);\n }\n var ghash = new GHASH(ck);\n var len = iv.length;\n var toPad = len % 16;\n ghash.update(iv);\n if (toPad) {\n toPad = 16 - toPad;\n ghash.update(Buffer.alloc(toPad, 0));\n }\n ghash.update(Buffer.alloc(8, 0));\n var ivBits = len * 8;\n var tail = Buffer.alloc(8);\n tail.writeUIntBE(ivBits, 0, 8);\n ghash.update(tail);\n self._finID = ghash.state;\n var out = Buffer.from(self._finID);\n incr32(out);\n return out;\n}\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n var h = Buffer.alloc(4, 0);\n this._cipher = new aes.AES(key);\n var ck = this._cipher.encryptBlock(h);\n this._ghash = new GHASH(ck);\n iv = calcIv(this, iv, ck);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._alen = 0;\n this._len = 0;\n this._mode = mode;\n this._authTag = null;\n this._called = false;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - this._alen % 16;\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0);\n this._ghash.update(rump);\n }\n }\n this._called = true;\n var out = this._mode.encrypt(this, chunk);\n if (this._decrypt) {\n this._ghash.update(chunk);\n } else {\n this._ghash.update(out);\n }\n this._len += chunk.length;\n return out;\n};\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data');\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID));\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data');\n this._authTag = tag;\n this._cipher.scrub();\n};\nStreamCipher.prototype.getAuthTag = function getAuthTag() {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state');\n return this._authTag;\n};\nStreamCipher.prototype.setAuthTag = function setAuthTag(tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state');\n this._authTag = tag;\n};\nStreamCipher.prototype.setAAD = function setAAD(buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state');\n this._ghash.update(buf);\n this._alen += buf.length;\n};\nmodule.exports = StreamCipher;","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n};\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function (fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n return deprecated;\n};\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n return debugs[set];\n};\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str + '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\n}\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n var base = '',\n array = false,\n braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n ctx.seen.push(value);\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n return name + ': ' + str;\n}\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' ||\n // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = require('./support/isBuffer');\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function') throw new TypeError('The \"original\" argument must be of type Function');\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return fn;\n }\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n return promise;\n }\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\n};\nexports.promisify.custom = kCustomPromisifiedSymbol;\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function () {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args).then(function (ret) {\n process.nextTick(cb, null, ret);\n }, function (rej) {\n process.nextTick(callbackifyOnRejected, rej, cb);\n });\n }\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\nvar BlockHash = common.BlockHash;\nvar sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\nfunction SHA256() {\n if (!(this instanceof SHA256)) return new SHA256();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n for (var i = 0; i < 16; i++) W[i] = msg[start + i];\n for (; i < W.length; i++) W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};","var inherits = require('inherits');\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\n};\nReporter.prototype.restore = function restore(data) {\n var state = this._reporterState;\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n var state = this._reporterState;\n this.exitKey(index);\n if (state.obj !== null) state.obj[key] = value;\n};\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\nReporter.prototype.leaveObject = function leaveObject(prev) {\n var state = this._reporterState;\n var now = state.obj;\n state.obj = prev;\n return now;\n};\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var 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 if (!state.options.partial) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\nReporter.prototype.wrapResult = function wrapResult(result) {\n var state = this._reporterState;\n if (!state.options.partial) return result;\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\n;\ninherits(ReporterError, Error);\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\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};","'use strict';\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n BufferList.prototype.push = function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n BufferList.prototype.unshift = function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }\n return ret;\n };\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n return BufferList;\n}();\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({\n length: this.length\n });\n return this.constructor.name + ' ' + obj;\n };\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;","'use strict';\n\nvar assert = require('minimalistic-assert');\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n this.padding = options.padding !== false;\n}\nmodule.exports = Cipher;\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\nCipher.prototype.update = function update(data) {\n if (data.length === 0) return [];\n if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data);\n};\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++) this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = (this.bufferOff + data.length) / this.blockSize | 0;\n var out = new Array(count * this.blockSize);\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - (data.length - inputOff) % this.blockSize;\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++) this.buffer[this.bufferOff] = data[inputOff];\n return out;\n};\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n return out;\n};\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer) first = this.update(buffer);\n var last;\n if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt();\n if (first) return first.concat(last);else return last;\n};\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n while (off < buffer.length) buffer[off++] = 0;\n return true;\n};\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n return this._unpad(out);\n};","'use strict';\n\nvar asn1 = require('./asn1');\nvar aesid = require('./aesid.json');\nvar fixProc = require('./fixProc');\nvar ciphers = require('browserify-aes');\nvar compat = require('pbkdf2');\nvar Buffer = require('safe-buffer').Buffer;\nfunction decrypt(data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt;\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10);\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')];\n var iv = data.algorithm.decrypt.cipher.iv;\n var cipherText = data.subjectPrivateKey;\n var keylen = parseInt(algo.split('-')[1], 10) / 8;\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1');\n var cipher = ciphers.createDecipheriv(algo, key, iv);\n var out = [];\n out.push(cipher.update(cipherText));\n out.push(cipher['final']());\n return Buffer.concat(out);\n}\nfunction parseKeys(buffer) {\n var password;\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n subtype = ndata.algorithm.algorithm.join('.');\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der');\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n };\n default:\n throw new Error('unknown key id ' + subtype);\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n };\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der');\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n };\n default:\n throw new Error('unknown key id ' + subtype);\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der');\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n };\n default:\n throw new Error('unknown key type ' + type);\n }\n}\nparseKeys.signature = asn1.signature;\nmodule.exports = parseKeys;","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar createHash = require('create-hash');\nvar stream = require('readable-stream');\nvar inherits = require('inherits');\nvar sign = require('./sign');\nvar verify = require('./verify');\nvar algorithms = require('./algorithms.json');\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex');\n algorithms[key.toLowerCase()] = algorithms[key];\n});\nfunction Sign(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hashType = data.hash;\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Sign, stream.Writable);\nSign.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nSign.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nSign.prototype.sign = function signMethod(key, enc) {\n this.end();\n var hash = this._hash.digest();\n var sig = sign(hash, key, this._hashType, this._signType, this._tag);\n return enc ? sig.toString(enc) : sig;\n};\nfunction Verify(algorithm) {\n stream.Writable.call(this);\n var data = algorithms[algorithm];\n if (!data) {\n throw new Error('Unknown message digest');\n }\n this._hash = createHash(data.hash);\n this._tag = data.id;\n this._signType = data.sign;\n}\ninherits(Verify, stream.Writable);\nVerify.prototype._write = function _write(data, _, done) {\n this._hash.update(data);\n done();\n};\nVerify.prototype.update = function update(data, enc) {\n this._hash.update(typeof data === 'string' ? Buffer.from(data, enc) : data);\n return this;\n};\nVerify.prototype.verify = function verifyMethod(key, sig, enc) {\n var sigBuffer = typeof sig === 'string' ? Buffer.from(sig, enc) : sig;\n this.end();\n var hash = this._hash.digest();\n return verify(sigBuffer, hash, key, this._signType, this._tag);\n};\nfunction createSign(algorithm) {\n return new Sign(algorithm);\n}\nfunction createVerify(algorithm) {\n return new Verify(algorithm);\n}\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n};","var inherits = require('inherits');\nvar Reporter = require('../base').Reporter;\nvar Buffer = require('buffer').Buffer;\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\nDecoderBuffer.prototype.save = function save() {\n return {\n offset: this.offset,\n reporter: Reporter.prototype.save.call(this)\n };\n};\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n var res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n return res;\n};\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun');\n};\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun');\n var res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function (item) {\n if (!(item instanceof EncoderBuffer)) 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)) 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;\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out) out = new Buffer(this.length);\n if (!offset) offset = 0;\n if (this.length === 0) return out;\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') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset);\n offset += this.length;\n }\n return out;\n};","var timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar includes = require('lodash.includes');\nvar isBoolean = require('lodash.isboolean');\nvar isInteger = require('lodash.isinteger');\nvar isNumber = require('lodash.isnumber');\nvar isPlainObject = require('lodash.isplainobject');\nvar isString = require('lodash.isstring');\nvar once = require('lodash.once');\nvar SUPPORTED_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512', 'HS256', 'HS384', 'HS512', 'none'];\nif (PS_SUPPORTED) {\n SUPPORTED_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\nvar sign_options_schema = {\n expiresIn: {\n isValid: function (value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"expiresIn\" should be a number of seconds or string representing a timespan'\n },\n notBefore: {\n isValid: function (value) {\n return isInteger(value) || isString(value) && value;\n },\n message: '\"notBefore\" should be a number of seconds or string representing a timespan'\n },\n audience: {\n isValid: function (value) {\n return isString(value) || Array.isArray(value);\n },\n message: '\"audience\" must be a string or array'\n },\n algorithm: {\n isValid: includes.bind(null, SUPPORTED_ALGS),\n message: '\"algorithm\" must be a valid string enum value'\n },\n header: {\n isValid: isPlainObject,\n message: '\"header\" must be an object'\n },\n encoding: {\n isValid: isString,\n message: '\"encoding\" must be a string'\n },\n issuer: {\n isValid: isString,\n message: '\"issuer\" must be a string'\n },\n subject: {\n isValid: isString,\n message: '\"subject\" must be a string'\n },\n jwtid: {\n isValid: isString,\n message: '\"jwtid\" must be a string'\n },\n noTimestamp: {\n isValid: isBoolean,\n message: '\"noTimestamp\" must be a boolean'\n },\n keyid: {\n isValid: isString,\n message: '\"keyid\" must be a string'\n },\n mutatePayload: {\n isValid: isBoolean,\n message: '\"mutatePayload\" must be a boolean'\n }\n};\nvar registered_claims_schema = {\n iat: {\n isValid: isNumber,\n message: '\"iat\" should be a number of seconds'\n },\n exp: {\n isValid: isNumber,\n message: '\"exp\" should be a number of seconds'\n },\n nbf: {\n isValid: isNumber,\n message: '\"nbf\" should be a number of seconds'\n }\n};\nfunction validate(schema, allowUnknown, object, parameterName) {\n if (!isPlainObject(object)) {\n throw new Error('Expected \"' + parameterName + '\" to be a plain object.');\n }\n Object.keys(object).forEach(function (key) {\n var validator = schema[key];\n if (!validator) {\n if (!allowUnknown) {\n throw new Error('\"' + key + '\" is not allowed in \"' + parameterName + '\"');\n }\n return;\n }\n if (!validator.isValid(object[key])) {\n throw new Error(validator.message);\n }\n });\n}\nfunction validateOptions(options) {\n return validate(sign_options_schema, false, options, 'options');\n}\nfunction validatePayload(payload) {\n return validate(registered_claims_schema, true, payload, 'payload');\n}\nvar options_to_payload = {\n 'audience': 'aud',\n 'issuer': 'iss',\n 'subject': 'sub',\n 'jwtid': 'jti'\n};\nvar options_for_objects = ['expiresIn', 'notBefore', 'noTimestamp', 'audience', 'issuer', 'subject', 'jwtid'];\nmodule.exports = function (payload, secretOrPrivateKey, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n var isObjectPayload = typeof payload === 'object' && !Buffer.isBuffer(payload);\n var header = Object.assign({\n alg: options.algorithm || 'HS256',\n typ: isObjectPayload ? 'JWT' : undefined,\n kid: options.keyid\n }, options.header);\n function failure(err) {\n if (callback) {\n return callback(err);\n }\n throw err;\n }\n if (!secretOrPrivateKey && options.algorithm !== 'none') {\n return failure(new Error('secretOrPrivateKey must have a value'));\n }\n if (typeof payload === 'undefined') {\n return failure(new Error('payload is required'));\n } else if (isObjectPayload) {\n try {\n validatePayload(payload);\n } catch (error) {\n return failure(error);\n }\n if (!options.mutatePayload) {\n payload = Object.assign({}, payload);\n }\n } else {\n var invalid_options = options_for_objects.filter(function (opt) {\n return typeof options[opt] !== 'undefined';\n });\n if (invalid_options.length > 0) {\n return failure(new Error('invalid ' + invalid_options.join(',') + ' option for ' + typeof payload + ' payload'));\n }\n }\n if (typeof payload.exp !== 'undefined' && typeof options.expiresIn !== 'undefined') {\n return failure(new Error('Bad \"options.expiresIn\" option the payload already has an \"exp\" property.'));\n }\n if (typeof payload.nbf !== 'undefined' && typeof options.notBefore !== 'undefined') {\n return failure(new Error('Bad \"options.notBefore\" option the payload already has an \"nbf\" property.'));\n }\n try {\n validateOptions(options);\n } catch (error) {\n return failure(error);\n }\n var timestamp = payload.iat || Math.floor(Date.now() / 1000);\n if (options.noTimestamp) {\n delete payload.iat;\n } else if (isObjectPayload) {\n payload.iat = timestamp;\n }\n if (typeof options.notBefore !== 'undefined') {\n try {\n payload.nbf = timespan(options.notBefore, timestamp);\n } catch (err) {\n return failure(err);\n }\n if (typeof payload.nbf === 'undefined') {\n return failure(new Error('\"notBefore\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n if (typeof options.expiresIn !== 'undefined' && typeof payload === 'object') {\n try {\n payload.exp = timespan(options.expiresIn, timestamp);\n } catch (err) {\n return failure(err);\n }\n if (typeof payload.exp === 'undefined') {\n return failure(new Error('\"expiresIn\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n }\n Object.keys(options_to_payload).forEach(function (key) {\n var claim = options_to_payload[key];\n if (typeof options[key] !== 'undefined') {\n if (typeof payload[claim] !== 'undefined') {\n return failure(new Error('Bad \"options.' + key + '\" option. The payload already has an \"' + claim + '\" property.'));\n }\n payload[claim] = options[key];\n }\n });\n var encoding = options.encoding || 'utf8';\n if (typeof callback === 'function') {\n callback = callback && once(callback);\n jws.createSign({\n header: header,\n privateKey: secretOrPrivateKey,\n payload: payload,\n encoding: encoding\n }).once('error', callback).once('done', function (signature) {\n callback(null, signature);\n });\n } else {\n return jws.sign({\n header: header,\n payload: payload,\n secret: secretOrPrivateKey,\n encoding: encoding\n });\n }\n};","var inherits = require('inherits');\nvar DEREncoder = require('./der');\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\n;\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\nPEMEncoder.prototype.encode = function encode(data, options) {\n var buf = DEREncoder.prototype.encode.call(this, data);\n var p = buf.toString('base64');\n var out = ['-----BEGIN ' + options.label + '-----'];\n for (var i = 0; i < p.length; i += 64) out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};","'use strict';\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\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;\nfunction getLens(b64) {\n var len = b64.length;\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 var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\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}\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 0xFF;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n return arr;\n}\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('');\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(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');\n }\n return parts.join('');\n}","exports['des-ecb'] = {\n key: 8,\n iv: 0\n};\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n};\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n};\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n};\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n};\nexports['des-ede'] = {\n key: 16,\n iv: 0\n};","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n return (encoder || JSON.stringify)(rawValue);\n}\nvar defaults = {\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || headers && headers['Content-Type'] === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n if (strictJSONParsing || forcedJSONParsing && utils.isString(data) && data.length) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n return data;\n }],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n if (!headers) {\n return parsed;\n }\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","module.exports = require('./lib/_stream_duplex.js');","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar Cipher = require('./cipher');\nvar DES = require('./des');\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n if (type === 'encrypt') {\n this.ciphers = [DES.create({\n type: 'encrypt',\n key: k1\n }), DES.create({\n type: 'decrypt',\n key: k2\n }), DES.create({\n type: 'encrypt',\n key: k3\n })];\n } else {\n this.ciphers = [DES.create({\n type: 'decrypt',\n key: k3\n }), DES.create({\n type: 'encrypt',\n key: k2\n }), DES.create({\n type: 'decrypt',\n key: k1\n })];\n }\n}\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\nmodule.exports = EDE;\nEDE.create = function create(options) {\n return new EDE(options);\n};\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;","module.exports = function xor(a, b) {\n var len = a.length;\n var i = -1;\n while (++i < len) {\n a[i] ^= b[i];\n }\n return a;\n};","var base = exports;\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n};\nvar modes = require('./list.json');\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode];\n}\nmodule.exports = modes;","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;\n}\nmodule.exports = isString;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function () {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\n/**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\nfunction once(func) {\n return before(2, func);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = once;","'use strict';\n\nvar utils = exports;\nfunction toArray(msg, enc) {\n if (Array.isArray(msg)) return msg.slice();\n if (!msg) return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++) res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0) msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2) res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi) res.push(hi, lo);else res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\nfunction zero2(word) {\n if (word.length === 1) return '0' + word;else return word;\n}\nutils.zero2 = zero2;\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++) res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex') return toHex(arr);else return arr;\n};","module.exports = require('./lib/axios');","var exports = module.exports = function SHA(algorithm) {\n algorithm = algorithm.toLowerCase();\n var Algorithm = exports[algorithm];\n if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)');\n return new Algorithm();\n};\nexports.sha = require('./sha');\nexports.sha1 = require('./sha1');\nexports.sha224 = require('./sha224');\nexports.sha256 = require('./sha256');\nexports.sha384 = require('./sha384');\nexports.sha512 = require('./sha512');","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","var JsonWebTokenError = function (message, error) {\n Error.call(this, message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = 'JsonWebTokenError';\n this.message = message;\n if (error) this.inner = error;\n};\nJsonWebTokenError.prototype = Object.create(Error.prototype);\nJsonWebTokenError.prototype.constructor = JsonWebTokenError;\nmodule.exports = JsonWebTokenError;","'use strict';\n\n// limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\nvar MAX_BYTES = 65536;\n\n// Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\nvar MAX_UINT32 = 4294967295;\nfunction oldBrowser() {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11');\n}\nvar Buffer = require('safe-buffer').Buffer;\nvar crypto = global.crypto || global.msCrypto;\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes;\n} else {\n module.exports = oldBrowser;\n}\nfunction randomBytes(size, cb) {\n // phantomjs needs to throw\n if (size > MAX_UINT32) throw new RangeError('requested too many random bytes');\n var bytes = Buffer.allocUnsafe(size);\n if (size > 0) {\n // getRandomValues fails on IE if size == 0\n if (size > MAX_BYTES) {\n // this is the max bytes crypto.getRandomValues\n // can do at once see https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues\n for (var generated = 0; generated < size; generated += MAX_BYTES) {\n // buffer.slice automatically checks if the end is past the end of\n // the buffer so we don't have to here\n crypto.getRandomValues(bytes.slice(generated, generated + MAX_BYTES));\n }\n } else {\n crypto.getRandomValues(bytes);\n }\n }\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes);\n });\n }\n return bytes;\n}","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('stream').Transform;\nvar inherits = require('inherits');\nfunction HashBase(blockSize) {\n Transform.call(this);\n this._block = Buffer.allocUnsafe(blockSize);\n this._blockSize = blockSize;\n this._blockOffset = 0;\n this._length = [0, 0, 0, 0];\n this._finalized = false;\n}\ninherits(HashBase, Transform);\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null;\n try {\n this.update(chunk, encoding);\n } catch (err) {\n error = err;\n }\n callback(error);\n};\nHashBase.prototype._flush = function (callback) {\n var error = null;\n try {\n this.push(this.digest());\n } catch (err) {\n error = err;\n }\n callback(error);\n};\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined' && typeof Uint8Array !== 'undefined' && ArrayBuffer.isView && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\nfunction toBuffer(data, encoding) {\n // No need to do anything for exact instance\n // This is only valid when safe-buffer.Buffer === buffer.Buffer, i.e. when Buffer.from/Buffer.alloc existed\n if (data instanceof Buffer) return data;\n\n // Convert strings to Buffer\n if (typeof data === 'string') return Buffer.from(data, encoding);\n\n /*\n * Wrap any TypedArray instances and DataViews\n * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n */\n if (useArrayBuffer && ArrayBuffer.isView(data)) {\n if (data.byteLength === 0) return Buffer.alloc(0); // Bug in Node.js <6.3.1, which treats this as out-of-bounds\n var res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n // Recheck result size, as offset/length doesn't work on Node.js <5.10\n // We just go to Uint8Array case if this fails\n if (res.byteLength === data.byteLength) return res;\n }\n\n /*\n * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n * Doesn't make sense with other TypedArray instances\n */\n if (useUint8Array && data instanceof Uint8Array) return Buffer.from(data);\n\n /*\n * Old Buffer polyfill on an engine that doesn't have TypedArray support\n * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n * Convert to our current Buffer implementation\n */\n if (Buffer.isBuffer(data) && data.constructor && typeof data.constructor.isBuffer === 'function' && data.constructor.isBuffer(data)) {\n return Buffer.from(data);\n }\n throw new TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.');\n}\nHashBase.prototype.update = function (data, encoding) {\n if (this._finalized) throw new Error('Digest already called');\n data = toBuffer(data, encoding); // asserts correct input type\n\n // consume data\n var block = this._block;\n var offset = 0;\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++];\n this._update();\n this._blockOffset = 0;\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++];\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry;\n carry = this._length[j] / 0x0100000000 | 0;\n if (carry > 0) this._length[j] -= 0x0100000000 * carry;\n }\n return this;\n};\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented');\n};\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called');\n this._finalized = true;\n var digest = this._digest();\n if (encoding !== undefined) digest = digest.toString(encoding);\n\n // reset state\n this._block.fill(0);\n this._blockOffset = 0;\n for (var i = 0; i < 4; ++i) this._length[i] = 0;\n return digest;\n};\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented');\n};\nmodule.exports = HashBase;","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\n\n// alternative to using Object.keys for old browsers\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer;\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports);\n exports.Buffer = SafeBuffer;\n}\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer);\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n return Buffer(arg, encodingOrOffset, length);\n};\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n var buf = Buffer(size);\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding);\n } else {\n buf.fill(fill);\n }\n } else {\n buf.fill(0);\n }\n return buf;\n};\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return Buffer(size);\n};\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n return buffer.SlowBuffer(size);\n};","exports.pbkdf2 = require('./lib/async');\nexports.pbkdf2Sync = require('./lib/sync');","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\nvar BlockHash = common.BlockHash;\nvar sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817];\nfunction SHA512() {\n if (!(this instanceof SHA512)) return new SHA512();\n BlockHash.call(this);\n this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++) W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo);\n }\n};\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n var W = this.W;\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo);\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n hh = gh;\n hl = gl;\n gh = fh;\n gl = fl;\n fh = eh;\n fl = el;\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n dh = ch;\n dl = cl;\n ch = bh;\n cl = bl;\n bh = ah;\n bl = al;\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big');\n};\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ ~xh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ ~xl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = xh & yh ^ xh & zh ^ yh & zh;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = xl & yl ^ xl & zl ^ yl & zl;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0) r += 0x100000000;\n return r;\n}\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0) r += 0x100000000;\n return r;\n}","'use strict';\n\nvar inherits = require('inherits');\nvar Buffer = require('safe-buffer').Buffer;\nvar Base = require('cipher-base');\nvar ZEROS = Buffer.alloc(128);\nvar blocksize = 64;\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n this._alg = alg;\n this._key = key;\n if (key.length > blocksize) {\n key = alg(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n this._hash = [ipad];\n}\ninherits(Hmac, Base);\nHmac.prototype._update = function (data) {\n this._hash.push(data);\n};\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash));\n return this._alg(Buffer.concat([this._opad, h]));\n};\nmodule.exports = Hmac;","var ciphers = require('./encrypter');\nvar deciphers = require('./decrypter');\nvar modes = require('./modes/list.json');\nfunction getCiphers() {\n return Object.keys(modes);\n}\nexports.createCipher = exports.Cipher = ciphers.createCipher;\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv;\nexports.createDecipher = exports.Decipher = deciphers.createDecipher;\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv;\nexports.listCiphers = exports.getCiphers = getCiphers;","'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');","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return typeof payload === 'object' && payload.isAxiosError === true;\n};","import { ReviewStatusEnum } from '@eisc-frontend/shared-ui';\n\n/* eslint-disable no-unused-vars */\nexport const SystemAdminEmail = {\n name: 'System Administrator',\n email: process.env.SYSTEM_ADMIN_EMAIL || 'eiscregistry@jointsec.nt.ca',\n};\n\nexport const ROWS_PER_PAGE = 12;\n\nexport enum DownloadTypesEnum {\n NONE = 'NONE',\n ALL = 'ALL',\n COMMENTS = 'COMMENTS',\n ATTACHMENTS = 'ATTACHMENTS',\n}\n\nexport enum CommentStatusEnum {\n DRAFT = 'draft',\n PUBLISHED = 'published',\n}\n\nexport enum CommentTypeEnum {\n Default = 'default',\n Audio = 'audio',\n}\n\nexport enum ActionType {\n EDIT = 'Edit',\n VIEW = 'View',\n}\n\nexport const SORT_ORDER = ['DESC', 'ASC'];\n\nexport const DownloadFormatOptions = [\n { value: '.pdf', label: 'Adobe PDF' },\n { value: '.docx', label: 'Microsoft Word format' },\n { value: '.xlsx', label: 'Microsoft Excel document' },\n];\n\nexport const DownloadOptions = [\n { type: DownloadTypesEnum.NONE, label: 'Review Summary Download Options' },\n {\n type: DownloadTypesEnum.ALL,\n label: 'All Comments with Attachments',\n menuOption: true,\n showIfAttachments: true,\n },\n {\n type: DownloadTypesEnum.COMMENTS,\n label: 'Comments only',\n menuOption: true,\n },\n {\n type: DownloadTypesEnum.ATTACHMENTS,\n label: 'Attachments only',\n menuOption: true,\n showIfAttachments: true,\n },\n];\n\nexport const CommentSizeBase = {\n '.pdf': 0.03,\n '.docx': 0.007,\n '.xlsx': 0.017,\n};\n\nexport const CommentSizeFactor = {\n '.pdf': 0.0015,\n '.docx': 0.0005,\n '.xlsx': 0.0025,\n};\n\nexport const Types = [\n { value: 'All', label: 'All' },\n { value: 'Review', label: 'Item for Review' },\n { value: 'IR', label: 'Information Request' },\n];\n\nexport const PublicStatuses = [\n { value: 'All', label: 'All' },\n { value: 'Submitted,Pre-Screening', label: 'Pre-Screening' },\n { value: 'Awaiting Project Description', label: 'Submission' },\n { value: 'Description Complete,Awaiting Comments,Closed For Comments', label: 'Screening' },\n { value: 'Closed', label: 'Closed' },\n];\n\nexport const StaffStatuses = [\n { value: 'All', label: 'All' },\n { value: 'Draft', label: 'Draft' },\n { value: 'Submitted', label: 'Submitted' },\n { value: 'Pre-Screening', label: 'Pre-Screening' },\n { value: 'Awaiting Project Description', label: 'Awaiting Project Description' },\n { value: 'Description Complete', label: 'Description Complete' },\n { value: 'Awaiting Comments', label: 'Awaiting Comments' },\n { value: 'Closed For Comments', label: 'Closed For Comments' },\n { value: 'Closed', label: 'Closed' },\n];\n\nexport const DateRanges = [\n { value: 'All', label: 'All' },\n { value: '1', label: 'Last 30 Days' },\n { value: '6', label: 'Last 6 months' },\n { value: '12', label: 'Last 12 months' },\n];\n\nexport const MenuItems = [\n { value: '#staff', label: 'EISC Use' },\n { value: '#overview', label: 'Overview' },\n { value: '#documents', label: 'Documents' },\n { value: '#location', label: 'Location' },\n { value: '#comments', label: 'Comments' },\n];\n\nexport const EISCUseSectionStatus = [\n ReviewStatusEnum.DescriptionComplete,\n ReviewStatusEnum.AwaitingComments,\n ReviewStatusEnum.ClosedForComments,\n];\n\nexport const PublicReviewColumns = [\n { id: 'phase', label: 'Phase', isSortable: false },\n {\n id: 'title',\n label: 'Project Name',\n isSortable: false,\n minWidth: 135,\n },\n {\n id: 'developer',\n label: 'Developer',\n isSortable: false,\n },\n {\n id: 'createdAt',\n label: 'Submitted On',\n isSortable: true,\n isDate: true,\n },\n {\n id: 'firstFieldWork',\n label: 'Start Date',\n isSortable: false,\n isDate: true,\n },\n {\n id: 'fileNumber',\n label: 'File No.',\n },\n];\n\nexport const NonStaffReviewColumns = [\n { id: 'status', label: 'Status', isSortable: false },\n {\n id: 'title',\n label: 'Project Name',\n isSortable: false,\n minWidth: 135,\n },\n {\n id: 'developer',\n label: 'Developer',\n isSortable: false,\n },\n {\n id: 'createdAt',\n label: 'Submitted On',\n isSortable: true,\n isDate: true,\n },\n {\n id: 'firstFieldWork',\n label: 'Start Date',\n isSortable: false,\n isDate: true,\n },\n {\n id: 'fileNumber',\n label: 'File No.',\n },\n];\n\nexport const StaffReviewColumns = [\n { id: 'status', label: 'Status', isSortable: false },\n {\n id: 'title',\n label: 'Project Name',\n isSortable: false,\n minWidth: 135,\n },\n {\n id: 'developer',\n label: 'Developer',\n isSortable: true,\n },\n {\n id: 'createdAt',\n label: 'Submitted',\n isSortable: true,\n isDate: true,\n },\n {\n id: 'firstFieldWork',\n label: 'Project Schedule',\n isSortable: true,\n isDate: true,\n },\n {\n id: 'fileNumber',\n label: 'File Number',\n },\n];\n","var inherits = require('inherits');\nvar SHA512 = require('./sha512');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\nvar W = new Array(160);\nfunction Sha384() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\ninherits(Sha384, SHA512);\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d;\n this._bh = 0x629a292a;\n this._ch = 0x9159015a;\n this._dh = 0x152fecd8;\n this._eh = 0x67332667;\n this._fh = 0x8eb44a87;\n this._gh = 0xdb0c2e0d;\n this._hh = 0x47b5481d;\n this._al = 0xc1059ed8;\n this._bl = 0x367cd507;\n this._cl = 0x3070dd17;\n this._dl = 0xf70e5939;\n this._el = 0xffc00b31;\n this._fl = 0x68581511;\n this._gl = 0x64f98fa7;\n this._hl = 0xbefa4fa4;\n return this;\n};\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48);\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\n writeInt64BE(this._ah, this._al, 0);\n writeInt64BE(this._bh, this._bl, 8);\n writeInt64BE(this._ch, this._cl, 16);\n writeInt64BE(this._dh, this._dl, 24);\n writeInt64BE(this._eh, this._el, 32);\n writeInt64BE(this._fh, this._fl, 40);\n return H;\n};\nmodule.exports = Sha384;","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac)) return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize) key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++) key.push(0);\n for (i = 0; i < key.length; i++) key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++) key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n pna.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n pna.nextTick(emitErrorNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n pna.nextTick(emitErrorNT, _this, err);\n }\n } else if (cb) {\n cb(err);\n }\n });\n return this;\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","var xor = require('buffer-xor');\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n var pad = self._cache.slice(0, chunk.length);\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub);\n}\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\n};\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair) return secret;\n return new KeyPair(eddsa, {\n secret: secret\n });\n};\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n return a;\n});\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\nmodule.exports = KeyPair;","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction Signature(options, enc) {\n if (options instanceof Signature) return options;\n if (this._importDER(options, enc)) return;\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\nfunction Position() {\n this.place = 0;\n}\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n if (buf[p.place] === 0x00) {\n return false;\n }\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n p.place = off;\n return val;\n}\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if (len + p.place !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n if ((data[p.place] & 128) !== 0) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n return true;\n};\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push(len >>> (octets << 3) & 0xff);\n }\n arr.push(len);\n}\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r);\n // Pad values\n if (s[0] & 0x80) s = [0].concat(s);\n r = rmPadding(r);\n s = rmPadding(s);\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [0x02];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [0x30];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};","var ms = require('ms');\nmodule.exports = function (time, iat) {\n var timestamp = iat || Math.floor(Date.now() / 1000);\n if (typeof time === 'string') {\n var milliseconds = ms(time);\n if (typeof milliseconds === 'undefined') {\n return;\n }\n return Math.floor(timestamp + milliseconds / 1000);\n } else if (typeof time === 'number') {\n return timestamp + time;\n } else {\n return;\n }\n};","var JsonWebTokenError = require('./JsonWebTokenError');\nvar NotBeforeError = function (message, date) {\n JsonWebTokenError.call(this, message);\n this.name = 'NotBeforeError';\n this.date = date;\n};\nNotBeforeError.prototype = Object.create(JsonWebTokenError.prototype);\nNotBeforeError.prototype.constructor = NotBeforeError;\nmodule.exports = NotBeforeError;","(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 this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n 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 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 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 this._strip();\n };\n function parseBase(str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this._strip();\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 function move(dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n BN.prototype._move = function _move(dest) {\n move(dest, this);\n };\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n function inspect() {\n return (this.red ? '';\n }\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16, 2);\n };\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer(endian, length) {\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 var allocate = function allocate(ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n this._strip();\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 var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n var position = 0;\n var carry = 0;\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\n if (position < res.length) {\n res[position++] = word >> 16 & 0xff;\n }\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = word >> 24 & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n if (position < res.length) {\n res[position++] = carry;\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\n if (position >= 0) {\n res[position--] = word >> 16 & 0xff;\n }\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = word >> 24 & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n if (position >= 0) {\n res[position--] = carry;\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = num.words[off] >>> wbit & 0x01;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this._strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this._strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this._strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out._strip();\n }\n function jumboMulTo(self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n 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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 BN.prototype.imuln = function imuln(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return isNegNum ? this.ineg() : this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this._strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this._strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this._strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this._strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modrn = function modrn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\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 this._strip();\n return isNegNum ? this.ineg() : this;\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this._strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\n };\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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);","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\nfunction isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nmodule.exports = isInteger;","var Buffer = require('safe-buffer').Buffer;\nfunction encryptByte(self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev);\n var out = pad[0] ^ byteParam;\n self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]);\n return out;\n}\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n return out;\n};","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv) this._importPrivate(options.priv, options.privEnc);\n if (options.pub) this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc\n });\n};\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair) return priv;\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc\n });\n};\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n if (pub.isInfinity()) return {\n result: false,\n reason: 'Invalid public key'\n };\n if (!pub.validate()) return {\n result: false,\n reason: 'Public key is not a point'\n };\n if (!pub.mul(this.ec.curve.n).isInfinity()) return {\n result: false,\n reason: 'Public key * N != O'\n };\n return {\n result: true,\n reason: null\n };\n};\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n if (!this.pub) this.pub = this.ec.g.mul(this.priv);\n if (!enc) return this.pub;\n return this.pub.encode(enc, compact);\n};\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv;\n};\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if (!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\nKeyPair.prototype.verify = function verify(msg, signature, options) {\n return this.ec.verify(msg, signature, this, undefined, options);\n};\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};","var JsonWebTokenError = require('./lib/JsonWebTokenError');\nvar NotBeforeError = require('./lib/NotBeforeError');\nvar TokenExpiredError = require('./lib/TokenExpiredError');\nvar decode = require('./decode');\nvar timespan = require('./lib/timespan');\nvar PS_SUPPORTED = require('./lib/psSupported');\nvar jws = require('jws');\nvar PUB_KEY_ALGS = ['RS256', 'RS384', 'RS512', 'ES256', 'ES384', 'ES512'];\nvar RSA_KEY_ALGS = ['RS256', 'RS384', 'RS512'];\nvar HS_ALGS = ['HS256', 'HS384', 'HS512'];\nif (PS_SUPPORTED) {\n PUB_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n RSA_KEY_ALGS.splice(3, 0, 'PS256', 'PS384', 'PS512');\n}\nmodule.exports = function (jwtString, secretOrPublicKey, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options;\n options = {};\n }\n if (!options) {\n options = {};\n }\n\n //clone this object since we are going to mutate it.\n options = Object.assign({}, options);\n var done;\n if (callback) {\n done = callback;\n } else {\n done = function (err, data) {\n if (err) throw err;\n return data;\n };\n }\n if (options.clockTimestamp && typeof options.clockTimestamp !== 'number') {\n return done(new JsonWebTokenError('clockTimestamp must be a number'));\n }\n if (options.nonce !== undefined && (typeof options.nonce !== 'string' || options.nonce.trim() === '')) {\n return done(new JsonWebTokenError('nonce must be a non-empty string'));\n }\n var clockTimestamp = options.clockTimestamp || Math.floor(Date.now() / 1000);\n if (!jwtString) {\n return done(new JsonWebTokenError('jwt must be provided'));\n }\n if (typeof jwtString !== 'string') {\n return done(new JsonWebTokenError('jwt must be a string'));\n }\n var parts = jwtString.split('.');\n if (parts.length !== 3) {\n return done(new JsonWebTokenError('jwt malformed'));\n }\n var decodedToken;\n try {\n decodedToken = decode(jwtString, {\n complete: true\n });\n } catch (err) {\n return done(err);\n }\n if (!decodedToken) {\n return done(new JsonWebTokenError('invalid token'));\n }\n var header = decodedToken.header;\n var getSecret;\n if (typeof secretOrPublicKey === 'function') {\n if (!callback) {\n return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));\n }\n getSecret = secretOrPublicKey;\n } else {\n getSecret = function (header, secretCallback) {\n return secretCallback(null, secretOrPublicKey);\n };\n }\n return getSecret(header, function (err, secretOrPublicKey) {\n if (err) {\n return done(new JsonWebTokenError('error in secret or public key callback: ' + err.message));\n }\n var hasSignature = parts[2].trim() !== '';\n if (!hasSignature && secretOrPublicKey) {\n return done(new JsonWebTokenError('jwt signature is required'));\n }\n if (hasSignature && !secretOrPublicKey) {\n return done(new JsonWebTokenError('secret or public key must be provided'));\n }\n if (!hasSignature && !options.algorithms) {\n options.algorithms = ['none'];\n }\n if (!options.algorithms) {\n options.algorithms = ~secretOrPublicKey.toString().indexOf('BEGIN CERTIFICATE') || ~secretOrPublicKey.toString().indexOf('BEGIN PUBLIC KEY') ? PUB_KEY_ALGS : ~secretOrPublicKey.toString().indexOf('BEGIN RSA PUBLIC KEY') ? RSA_KEY_ALGS : HS_ALGS;\n }\n if (!~options.algorithms.indexOf(decodedToken.header.alg)) {\n return done(new JsonWebTokenError('invalid algorithm'));\n }\n var valid;\n try {\n valid = jws.verify(jwtString, decodedToken.header.alg, secretOrPublicKey);\n } catch (e) {\n return done(e);\n }\n if (!valid) {\n return done(new JsonWebTokenError('invalid signature'));\n }\n var payload = decodedToken.payload;\n if (typeof payload.nbf !== 'undefined' && !options.ignoreNotBefore) {\n if (typeof payload.nbf !== 'number') {\n return done(new JsonWebTokenError('invalid nbf value'));\n }\n if (payload.nbf > clockTimestamp + (options.clockTolerance || 0)) {\n return done(new NotBeforeError('jwt not active', new Date(payload.nbf * 1000)));\n }\n }\n if (typeof payload.exp !== 'undefined' && !options.ignoreExpiration) {\n if (typeof payload.exp !== 'number') {\n return done(new JsonWebTokenError('invalid exp value'));\n }\n if (clockTimestamp >= payload.exp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));\n }\n }\n if (options.audience) {\n var audiences = Array.isArray(options.audience) ? options.audience : [options.audience];\n var target = Array.isArray(payload.aud) ? payload.aud : [payload.aud];\n var match = target.some(function (targetAudience) {\n return audiences.some(function (audience) {\n return audience instanceof RegExp ? audience.test(targetAudience) : audience === targetAudience;\n });\n });\n if (!match) {\n return done(new JsonWebTokenError('jwt audience invalid. expected: ' + audiences.join(' or ')));\n }\n }\n if (options.issuer) {\n var invalid_issuer = typeof options.issuer === 'string' && payload.iss !== options.issuer || Array.isArray(options.issuer) && options.issuer.indexOf(payload.iss) === -1;\n if (invalid_issuer) {\n return done(new JsonWebTokenError('jwt issuer invalid. expected: ' + options.issuer));\n }\n }\n if (options.subject) {\n if (payload.sub !== options.subject) {\n return done(new JsonWebTokenError('jwt subject invalid. expected: ' + options.subject));\n }\n }\n if (options.jwtid) {\n if (payload.jti !== options.jwtid) {\n return done(new JsonWebTokenError('jwt jwtid invalid. expected: ' + options.jwtid));\n }\n }\n if (options.nonce) {\n if (payload.nonce !== options.nonce) {\n return done(new JsonWebTokenError('jwt nonce invalid. expected: ' + options.nonce));\n }\n }\n if (options.maxAge) {\n if (typeof payload.iat !== 'number') {\n return done(new JsonWebTokenError('iat required when maxAge is specified'));\n }\n var maxAgeTimestamp = timespan(options.maxAge, payload.iat);\n if (typeof maxAgeTimestamp === 'undefined') {\n return done(new JsonWebTokenError('\"maxAge\" should be a number of seconds or string representing a timespan eg: \"1d\", \"20h\", 60'));\n }\n if (clockTimestamp >= maxAgeTimestamp + (options.clockTolerance || 0)) {\n return done(new TokenExpiredError('maxAge exceeded', new Date(maxAgeTimestamp * 1000)));\n }\n }\n if (options.complete === true) {\n var signature = decodedToken.signature;\n return done(null, {\n header: header,\n payload: payload,\n signature: signature\n });\n }\n return done(null, payload);\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","/*global module*/\nvar Buffer = require('safe-buffer').Buffer;\nvar DataStream = require('./data-stream');\nvar jwa = require('jwa');\nvar Stream = require('stream');\nvar toString = require('./tostring');\nvar util = require('util');\nfunction base64url(string, encoding) {\n return Buffer.from(string, encoding).toString('base64').replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction jwsSecuredInput(header, payload, encoding) {\n encoding = encoding || 'utf8';\n var encodedHeader = base64url(toString(header), 'binary');\n var encodedPayload = base64url(toString(payload), encoding);\n return util.format('%s.%s', encodedHeader, encodedPayload);\n}\nfunction jwsSign(opts) {\n var header = opts.header;\n var payload = opts.payload;\n var secretOrKey = opts.secret || opts.privateKey;\n var encoding = opts.encoding;\n var algo = jwa(header.alg);\n var securedInput = jwsSecuredInput(header, payload, encoding);\n var signature = algo.sign(securedInput, secretOrKey);\n return util.format('%s.%s', securedInput, signature);\n}\nfunction SignStream(opts) {\n var secret = opts.secret || opts.privateKey || opts.key;\n var secretStream = new DataStream(secret);\n this.readable = true;\n this.header = opts.header;\n this.encoding = opts.encoding;\n this.secret = this.privateKey = this.key = secretStream;\n this.payload = new DataStream(opts.payload);\n this.secret.once('close', function () {\n if (!this.payload.writable && this.readable) this.sign();\n }.bind(this));\n this.payload.once('close', function () {\n if (!this.secret.writable && this.readable) this.sign();\n }.bind(this));\n}\nutil.inherits(SignStream, Stream);\nSignStream.prototype.sign = function sign() {\n try {\n var signature = jwsSign({\n header: this.header,\n payload: this.payload.buffer,\n secret: this.secret.buffer,\n encoding: this.encoding\n });\n this.emit('done', signature);\n this.emit('data', signature);\n this.emit('end');\n this.readable = false;\n return signature;\n } catch (e) {\n this.readable = false;\n this.emit('error', e);\n this.emit('close');\n }\n};\nSignStream.sign = jwsSign;\nmodule.exports = SignStream;","module.exports = require('./readable').Transform;","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}","var decoders = exports;\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');","'use strict';\n\nmodule.exports = require('./browser/algorithms.json');","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Readable;\n\n/**/\nvar isArray = require('isarray');\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\nutil.inherits(Readable, Stream);\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options);\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n return needMoreData(state);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null;\nvar ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n};\nvar ReflectOwnKeys;\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys;\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function () {\n return defaultMaxListeners;\n },\n set: function (arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\nEventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n var handler = events[type];\n if (handler === undefined) return false;\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);\n }\n return true;\n};\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type, listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n return target;\n}\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\nfunction _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n};\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener);\n }\n return this;\n};\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n return this;\n};\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\nEventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n if (events !== undefined) {\n var evlistener = events[type];\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n return 0;\n}\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i) copy[i] = arr[i];\n return copy;\n}\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) list[index] = list[index + 1];\n list.pop();\n}\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n }\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n}\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}","'use strict';\n\nvar utils = require('../utils');\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\nfunction SHA224() {\n if (!(this instanceof SHA224)) return new SHA224();\n SHA256.call(this);\n this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big');\n};","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0) this.pending = null;\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32) this._update(msg, i, i + this._delta32);\n }\n return this;\n};\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n return this._digest(enc);\n};\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - (len + this.padLength) % bytes;\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++) res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = len >>> 8 & 0xff;\n res[i++] = len >>> 16 & 0xff;\n res[i++] = len >>> 24 & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n for (t = 8; t < this.padLength; t++) res[i++] = 0;\n }\n return res;\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\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 BN.BN = BN;\n BN.wordSize = 26;\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 BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\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 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 = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\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 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 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 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 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 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 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 this.strip();\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 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 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 var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\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 if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n for (i = 0; i < mod; i++) {\n pow *= base;\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 this.strip();\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 BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\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 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 BN.prototype.inspect = function inspect() {\n return (this.red ? '';\n };\n\n /*\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\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 var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000'];\n var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5];\n var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176];\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\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 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 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 assert(false, 'Base should be between 2 and 36');\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 BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\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 this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\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 for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\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 res[i] = b;\n }\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n return res;\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 BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\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 function toBitArray(num) {\n var w = new Array(num.bitLength());\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\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 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 BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\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 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 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 BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\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 for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n this.length = b.length;\n return this.strip();\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 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 for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n this.length = a.length;\n return this.strip();\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 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 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 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 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 var off = bit / 26 | 0;\n var wbit = bit % 26;\n this._expand(off + 1);\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 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 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 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 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 if (this.length > num.length) return this.clone().iadd(num);\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 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 this.length = Math.max(this.length, i);\n if (a !== this) {\n this.negative = 1;\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 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 var lo = r & 0x3ffffff;\n var carry = r / 0x4000000 | 0;\n out.words[0] = lo;\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 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 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 function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\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 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 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 return out.strip();\n }\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\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 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 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 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 var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\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 FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n var rx = rtwdf_ * ro - itwdf_ * io;\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\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 itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\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 return 1 << i + 1 + odd;\n };\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n t = iws[i];\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\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 + Math.round(ws[2 * i] / N) + carry;\n ws[i] = w & 0x3ffffff;\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n return ws;\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 rws[2 * i] = carry & 0x1fff;\n carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff;\n carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\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 return ph;\n };\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n var _ = this.stub(N);\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n var rmws = out.words;\n rmws.length = N;\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\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 this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, 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 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 if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\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 if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\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 if (r !== 0) {\n var carry = 0;\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 if (carry) {\n this.words[i] = carry;\n this.length++;\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 for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n this.length += s;\n }\n return this.strip();\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 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 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 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 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 if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n return this.strip();\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 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 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 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 assert(this.negative === 0, 'imaskn works only with positive numbers');\n if (this.length <= s) {\n return this;\n }\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\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 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 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 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 if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n this.words[0] -= num;\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 return this.strip();\n };\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n this._expand(len);\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 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 return this.strip();\n };\n BN.prototype._wordDiv = function _wordDiv(num, mode) {\n var shift = this.length - num.length;\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 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 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 for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (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 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 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 if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n return {\n div: div,\n mod: mod\n };\n }\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n return {\n div: div,\n mod: res.mod\n };\n }\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\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 if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\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 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 var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\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 BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\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 return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\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 return this.strip();\n };\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\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 var g = 0;\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n var yp = y.clone();\n var xp = x.clone();\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 A.iushrn(1);\n B.iushrn(1);\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 C.iushrn(1);\n D.iushrn(1);\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 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 var a = this;\n var b = p.clone();\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\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 x1.iushrn(1);\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 x2.iushrn(1);\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 var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n return res;\n };\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\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 do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\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 a.isub(b);\n } while (true);\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 BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\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 BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n assert(num <= 0x3ffffff, 'Number is too big');\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 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 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 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 BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\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 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 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 BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\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 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 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 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 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 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 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 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 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 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 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 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 this.tmp = this._tmp();\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 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 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 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 return r;\n };\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n K256.prototype.split = function split(input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\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 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 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 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 function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\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 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 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 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 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 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, 'red works only with red numbers');\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 Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n return this.m.sub(a)._forceRed(this);\n };\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\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 Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\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 Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\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 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 while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\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 r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n return r;\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 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 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 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 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 if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n return res;\n };\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\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 function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\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 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 Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\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 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 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 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 return res._forceRed(this);\n };\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\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 return res._forceRed(this);\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);","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\nvar proto = {};\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++) this.iv[i] = iv[i];\n}\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n CBC.create = function create(options) {\n return new CBC(options);\n };\n return CBC;\n}\nexports.instantiate = instantiate;\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) iv[i] ^= inp[inOff + i];\n superProto._update.call(this, iv, 0, out, outOff);\n for (var i = 0; i < this.blockSize; i++) iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n for (var i = 0; i < this.blockSize; i++) out[outOff + i] ^= iv[i];\n for (var i = 0; i < this.blockSize; i++) iv[i] = inp[inOff + i];\n }\n};","module.exports = function xor(a, b) {\n var length = Math.min(a.length, b.length);\n var buffer = new Buffer(length);\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i];\n }\n return buffer;\n};","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');","function incr32(iv) {\n var len = iv.length;\n var item;\n while (len--) {\n item = iv.readUInt8(len);\n if (item === 255) {\n iv.writeUInt8(0, len);\n } else {\n item++;\n iv.writeUInt8(item, len);\n break;\n }\n }\n}\nmodule.exports = incr32;","'use strict';\n\nvar utils = require('../utils');\nvar SHA512 = require('./512');\nfunction SHA384() {\n if (!(this instanceof SHA384)) return new SHA384();\n SHA512.call(this);\n this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big');\n};","import axios from 'axios';\nimport Cookies from 'js-cookie';\nimport jwt from 'jsonwebtoken';\nimport { logout, setUserProfile, restartIdle } from '../contexts/auth';\n\nconst sessionThreshold = +(process.env.GATSBY_SESSION_THRESHOLD || 1800000);\n\naxios.defaults.baseURL = process.env.GATSBY_BASE_API_URL || 'http://localhost:4000/api/v1/';\n\nexport const AxiosPublic = axios.create({\n headers: {\n Accept: 'application/json',\n 'Content-type': 'application/json',\n },\n});\n\nexport const AxiosPrivate = axios.create({\n headers: {\n Accept: 'application/json',\n 'Content-type': 'application/json',\n },\n});\n\nAxiosPrivate.interceptors.request.use(\n async (config) => {\n const orsCookie = Cookies.getJSON('ORS');\n\n if (!orsCookie) {\n logout();\n }\n\n const { profile, refreshToken } = orsCookie;\n let accessToken = orsCookie.accessToken;\n\n const now = new Date().getTime();\n const tokenExpiry = jwt.decode(accessToken).exp * 1000; // both access and refresh has the same exp property\n const tokenTimeLeft = tokenExpiry - now;\n const refreshTokenExpiry = jwt.decode(refreshToken).exp * 1000;\n const refreshTokenTimeLeft = refreshTokenExpiry - now;\n\n // Session Expired\n if (tokenTimeLeft <= 0 && refreshTokenTimeLeft <= 0) {\n logout();\n }\n // Access Token has expired while refresh token still valid\n else if (tokenTimeLeft <= sessionThreshold && refreshTokenTimeLeft > 0) {\n const refreshResponse = await AxiosPublic.post('/auth/refresh', {\n refreshToken,\n });\n const { accessToken: newAccessToken, refreshToken: newRefreshToken } = refreshResponse.data;\n const refreshExpiry = jwt.decode(newRefreshToken).exp;\n\n Cookies.set(\n 'ORS',\n {\n accessToken: newAccessToken,\n refreshToken: newRefreshToken,\n profile,\n },\n {\n expires: new Date(refreshExpiry * 1000),\n },\n );\n\n accessToken = newAccessToken;\n setUserProfile(newAccessToken, refreshToken, profile, refreshExpiry);\n }\n\n const authHeader = config.headers.authorization;\n if (!authHeader) {\n config.headers.authorization = `bearer ${accessToken}`;\n }\n\n restartIdle();\n return config;\n },\n (error) => {\n Promise.reject(error);\n },\n);\n\nAxiosPublic.interceptors.request.use((config) => {\n restartIdle();\n return config;\n});\nAxiosPublic.interceptors.response.use((response) => response.data);\nAxiosPrivate.interceptors.response.use((response) => response.data);\n","import { useState } from 'react';\nimport { AxiosPublic, AxiosPrivate } from '../axios';\nimport { isLoggedIn } from '../../contexts/auth';\n\nconst loggedIn = isLoggedIn();\n\nexport const useReviews = () => {\n const [hasReviewError, setError] = useState(false);\n const [isFetchingReviews, setFetching] = useState(false);\n\n return {\n isFetchingReviews,\n hasReviewError,\n getReview: async (id) => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(`/reviews/${id}`);\n return response;\n } catch (e) {\n setError(e);\n } finally {\n setFetching(false);\n }\n },\n getReviews: async (filter) => {\n try {\n setFetching(true);\n const response = loggedIn\n ? await AxiosPrivate.get(`/reviews/private/${filter}`)\n : await AxiosPublic.get(`/reviews/${filter}`);\n return response;\n } catch (e) {\n setError(e);\n } finally {\n setFetching(false);\n }\n },\n };\n};\n","import { useState } from 'react';\nimport { BoardsQueryParameter } from '@eisc-frontend/shared-ui';\nimport { AxiosPublic } from '../axios';\n\nconst BASE_URL = 'boards';\n\nexport const useBoards = () => {\n const [hasBoardError, setError] = useState(false);\n const [isFetchingBoard, setFetchingBoard] = useState(false);\n const [isFetchingBoards, setFetching] = useState(false);\n\n return {\n isFetchingBoards,\n isFetchingBoard,\n hasBoardError,\n getBoards: async (queryParams?: BoardsQueryParameter) => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get(`/${BASE_URL}`, {\n params: queryParams,\n });\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n setError(true);\n }\n },\n getBoard: async (abbr: string) => {\n try {\n setFetchingBoard(true);\n const response = await AxiosPublic.get(`/${BASE_URL}/abbr/${abbr}`);\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n setError(true);\n }\n },\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPublic } from '../axios';\n\nexport const useOrganizations = () => {\n const [hasOrgError, setError] = useState(false);\n const [isFetchingOrgs, setFetching] = useState(false);\n\n return {\n isFetchingOrgs,\n hasOrgError,\n getOrganizations: async () => {\n try {\n setFetching(true);\n const response = await AxiosPublic.get('/organizations?orderBy=name&order=ASC');\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n setError(e);\n }\n },\n };\n};\n","import { useState } from 'react';\nimport { AxiosPrivate } from '../axios';\n\nexport const useReviewDownloads = () => {\n const [isFetching, setFetching] = useState(false);\n\n const enqueueDownloadAttachments = async (reviewId: string) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.post(`/reviews/download/${reviewId}`);\n\n return data.referenceId;\n } catch (e) {\n setFetching(false);\n } finally {\n setFetching(false);\n }\n };\n\n const downloadAttachments = async (referenceId: string) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.get(`/reviews/download/${referenceId}`);\n return data;\n } catch (e) {\n setFetching(false);\n } finally {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n enqueueDownloadAttachments,\n downloadAttachments,\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPrivate } from '../axios';\nimport ResponseException from '../../models/ResponseException';\n\nexport const useUploadResponseAttachments = () => {\n const [uploadingErrors, setUploadErrors] = useState([]);\n const [isUploadingAttachments, setUploading] = useState(false);\n\n return {\n isUploadingAttachments,\n uploadingErrors,\n uploadAttachments: async (file: any, name: string) => {\n try {\n setUploading(true);\n setUploadErrors([]);\n const formData = new FormData();\n formData.append('file', file);\n formData.append('name', name);\n const res = await AxiosPrivate.post('/response-attachments', formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n return res;\n } catch (e) {\n setUploadErrors(new ResponseException(e).getErrorMessage());\n } finally {\n setUploading(false);\n }\n },\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPrivate, AxiosPublic } from '../axios';\n\nexport const useGetCommentSet = () => {\n const [isFetching, setFetching] = useState(false);\n\n const getCommentSetById = async (commentSetId: string) => {\n try {\n const url = `/comment-set/${commentSetId}`;\n\n setFetching(true);\n const response = await AxiosPrivate.get(url);\n setFetching(false);\n return response;\n } catch (e) {\n setFetching(false);\n }\n };\n\n const getCommentSetsByParams = async (\n reviewId,\n organizationId,\n authorId,\n withComments,\n withReplies = false,\n ): Promise => {\n try {\n const params = {\n organizationId,\n authorId,\n withComments,\n withReplies,\n };\n\n const url = `/comment-set/filter/${reviewId}`;\n\n setFetching(true);\n const { data } = await AxiosPrivate.get(url, { params });\n\n return data;\n } catch (e) {\n return null;\n } finally {\n setFetching(false);\n }\n };\n\n const getCommentSetByParams = async (\n reviewId,\n organizationId,\n authorId,\n withComments,\n ): Promise => {\n const commentSets = await getCommentSetsByParams(\n reviewId,\n organizationId,\n authorId,\n withComments,\n );\n return commentSets ? commentSets[0] : null;\n };\n\n const getPublicCommentSets = async (reviewId, withComments): Promise => {\n try {\n const params = {\n withComments,\n };\n\n const url = `/comment-set/public/${reviewId}`;\n\n setFetching(true);\n const { data } = await AxiosPublic.get(url, { params });\n\n return data;\n } catch (e) {\n return null;\n } finally {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n getCommentSetById,\n getCommentSetByParams,\n getCommentSetsByParams,\n getPublicCommentSets,\n };\n};\n","import { useState } from 'react';\nimport { AxiosPrivate } from '../axios';\n\nexport const useGetUsers = () => {\n const [isFetching, setFetching] = useState(false);\n const [users, setUsers] = useState([]);\n\n const getUsers = async (organizationId: string) => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.get(`/organizations/${organizationId}/users`);\n\n setUsers(data);\n setFetching(false);\n\n return data;\n } catch (e) {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n users,\n getUsers,\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPrivate } from '../axios';\nimport ResponseException from '../../models/ResponseException';\n\nexport const useUpdateReviewStatus = () => {\n const [errors, setErrors] = useState([]);\n const [success, setSuccess] = useState(false);\n const [isFetching, setFetching] = useState(false);\n\n const updateReviewStatus = async (reviewId: string, status: string) => {\n try {\n setFetching(true);\n const response = await AxiosPrivate.patch(`/reviews/${reviewId}/status`, { status });\n setFetching(false);\n setSuccess(true);\n return response;\n } catch (e) {\n setFetching(false);\n setSuccess(false);\n setErrors(new ResponseException(e).getErrorMessage());\n }\n };\n\n return {\n isFetching,\n updateReviewStatus,\n errors,\n success,\n };\n};\n","var has = Object.prototype.hasOwnProperty;\nexport function dequal(foo, bar) {\n var ctor, len;\n if (foo === bar) return true;\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && dequal(foo[len], bar[len]));\n }\n return len === -1;\n }\n if (!ctor || typeof foo === 'object') {\n len = 0;\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n }\n return Object.keys(bar).length === len;\n }\n }\n return foo !== foo && bar !== bar;\n}","// use WeakMap to store the object->key mapping\n// so the objects can be garbage collected.\n// WeakMap uses a hashtable under the hood, so the lookup\n// complexity is almost O(1).\nvar table = new WeakMap();\n// counter of the key\nvar counter = 0;\n// hashes an array of objects and returns a string\nexport default function hash(args) {\n if (!args.length) return '';\n var key = 'arg';\n for (var i = 0; i < args.length; ++i) {\n if (args[i] === null) {\n key += '@null';\n continue;\n }\n var _hash = void 0;\n if (typeof args[i] !== 'object' && typeof args[i] !== 'function') {\n // need to consider the case that args[i] is a string:\n // args[i] _hash\n // \"undefined\" -> '\"undefined\"'\n // undefined -> 'undefined'\n // 123 -> '123'\n // \"null\" -> '\"null\"'\n if (typeof args[i] === 'string') {\n _hash = '\"' + args[i] + '\"';\n } else {\n _hash = String(args[i]);\n }\n } else {\n if (!table.has(args[i])) {\n _hash = counter;\n table.set(args[i], counter++);\n } else {\n _hash = table.get(args[i]);\n }\n }\n key += '@' + _hash;\n }\n return key;\n}","import hash from './libs/hash';\nvar Cache = /** @class */function () {\n function Cache(initialData) {\n if (initialData === void 0) {\n initialData = {};\n }\n this.cache = new Map(Object.entries(initialData));\n this.subs = [];\n }\n Cache.prototype.get = function (key) {\n var _key = this.serializeKey(key)[0];\n return this.cache.get(_key);\n };\n Cache.prototype.set = function (key, value) {\n var _key = this.serializeKey(key)[0];\n this.cache.set(_key, value);\n this.notify();\n };\n Cache.prototype.keys = function () {\n return Array.from(this.cache.keys());\n };\n Cache.prototype.has = function (key) {\n var _key = this.serializeKey(key)[0];\n return this.cache.has(_key);\n };\n Cache.prototype.clear = function () {\n this.cache.clear();\n this.notify();\n };\n Cache.prototype.delete = function (key) {\n var _key = this.serializeKey(key)[0];\n this.cache.delete(_key);\n this.notify();\n };\n // TODO: introduce namespace for the cache\n Cache.prototype.serializeKey = function (key) {\n var args = null;\n if (typeof key === 'function') {\n try {\n key = key();\n } catch (err) {\n // dependencies not ready\n key = '';\n }\n }\n if (Array.isArray(key)) {\n // args array\n args = key;\n key = hash(key);\n } else {\n // convert null to ''\n key = String(key || '');\n }\n var errorKey = key ? 'err@' + key : '';\n var isValidatingKey = key ? 'validating@' + key : '';\n return [key, args, errorKey, isValidatingKey];\n };\n Cache.prototype.subscribe = function (listener) {\n var _this = this;\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n var isSubscribed = true;\n this.subs.push(listener);\n return function () {\n if (!isSubscribed) return;\n isSubscribed = false;\n var index = _this.subs.indexOf(listener);\n if (index > -1) {\n _this.subs[index] = _this.subs[_this.subs.length - 1];\n _this.subs.length--;\n }\n };\n };\n // Notify Cache subscribers about a change in the cache\n Cache.prototype.notify = function () {\n for (var _i = 0, _a = this.subs; _i < _a.length; _i++) {\n var listener = _a[_i];\n listener();\n }\n };\n return Cache;\n}();\nexport default Cache;","/**\n * Due to bug https://bugs.chromium.org/p/chromium/issues/detail?id=678075,\n * it's not reliable to detect if the browser is currently online or offline\n * based on `navigator.onLine`.\n * As a work around, we always assume it's online on first load, and change\n * the status upon `online` or `offline` events.\n */\nvar online = true;\nvar isOnline = function () {\n return online;\n};\nvar isDocumentVisible = function () {\n if (typeof document !== 'undefined' && document.visibilityState !== undefined) {\n return document.visibilityState !== 'hidden';\n }\n // always assume it's visible\n return true;\n};\nvar fetcher = function (url) {\n return fetch(url).then(function (res) {\n return res.json();\n });\n};\nvar registerOnFocus = function (cb) {\n if (typeof window !== 'undefined' && window.addEventListener !== undefined && typeof document !== 'undefined' && document.addEventListener !== undefined) {\n // focus revalidate\n document.addEventListener('visibilitychange', function () {\n return cb();\n }, false);\n window.addEventListener('focus', function () {\n return cb();\n }, false);\n }\n};\nvar registerOnReconnect = function (cb) {\n if (typeof window !== 'undefined' && window.addEventListener !== undefined) {\n // reconnect revalidate\n window.addEventListener('online', function () {\n online = true;\n cb();\n }, false);\n // nothing to revalidate, just update the status\n window.addEventListener('offline', function () {\n return online = false;\n }, false);\n }\n};\nexport default {\n isOnline: isOnline,\n isDocumentVisible: isDocumentVisible,\n fetcher: fetcher,\n registerOnFocus: registerOnFocus,\n registerOnReconnect: registerOnReconnect\n};","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { dequal } from 'dequal/lite';\nimport Cache from './cache';\nimport webPreset from './libs/web-preset';\n// cache\nvar cache = new Cache();\n// error retry\nfunction onErrorRetry(_, __, config, revalidate, opts) {\n if (!config.isDocumentVisible()) {\n // if it's hidden, stop\n // it will auto revalidate when focus\n return;\n }\n if (typeof config.errorRetryCount === 'number' && opts.retryCount > config.errorRetryCount) {\n return;\n }\n // exponential backoff\n var count = Math.min(opts.retryCount, 8);\n var timeout = ~~((Math.random() + 0.5) * (1 << count)) * config.errorRetryInterval;\n setTimeout(revalidate, timeout, opts);\n}\n// client side: need to adjust the config\n// based on the browser status\n// slow connection (<= 70Kbps)\nvar slowConnection = typeof window !== 'undefined' &&\n// @ts-ignore\nnavigator['connection'] &&\n// @ts-ignore\n['slow-2g', '2g'].indexOf(navigator['connection'].effectiveType) !== -1;\n// config\nvar defaultConfig = __assign({\n // events\n onLoadingSlow: function () {},\n onSuccess: function () {},\n onError: function () {},\n onErrorRetry: onErrorRetry,\n errorRetryInterval: (slowConnection ? 10 : 5) * 1000,\n focusThrottleInterval: 5 * 1000,\n dedupingInterval: 2 * 1000,\n loadingTimeout: (slowConnection ? 5 : 3) * 1000,\n refreshInterval: 0,\n revalidateOnFocus: true,\n revalidateOnReconnect: true,\n refreshWhenHidden: false,\n refreshWhenOffline: false,\n shouldRetryOnError: true,\n suspense: false,\n compare: dequal,\n isPaused: function () {\n return false;\n }\n}, webPreset);\nexport { cache };\nexport default defaultConfig;","import { useEffect, useLayoutEffect } from 'react';\nexport var IS_SERVER = typeof window === 'undefined' ||\n// @ts-ignore\n!!(typeof Deno !== 'undefined' && Deno && Deno.version && Deno.version.deno);\n// polyfill for requestAnimationFrame\nexport var rAF = IS_SERVER ? null : window['requestAnimationFrame'] ? function (f) {\n return window['requestAnimationFrame'](f);\n} : function (f) {\n return setTimeout(f, 1);\n};\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport var useIsomorphicLayoutEffect = IS_SERVER ? useEffect : useLayoutEffect;","import { createContext } from 'react';\nvar SWRConfigContext = createContext({});\nSWRConfigContext.displayName = 'SWRConfigContext';\nexport default SWRConfigContext;","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function () {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n// TODO: use @ts-expect-error\nimport { useCallback, useContext, useState, useRef, useMemo, useDebugValue } from 'react';\nimport defaultConfig, { cache } from './config';\nimport { IS_SERVER, rAF, useIsomorphicLayoutEffect } from './env';\nimport SWRConfigContext from './swr-config-context';\n// global state managers\nvar CONCURRENT_PROMISES = {};\nvar CONCURRENT_PROMISES_TS = {};\nvar FOCUS_REVALIDATORS = {};\nvar RECONNECT_REVALIDATORS = {};\nvar CACHE_REVALIDATORS = {};\nvar MUTATION_TS = {};\nvar MUTATION_END_TS = {};\n// generate strictly increasing timestamps\nvar now = function () {\n var ts = 0;\n return function () {\n return ++ts;\n };\n}();\n// setup DOM events listeners for `focus` and `reconnect` actions\nif (!IS_SERVER) {\n var revalidate_1 = function (revalidators) {\n if (!defaultConfig.isDocumentVisible() || !defaultConfig.isOnline()) return;\n for (var key in revalidators) {\n if (revalidators[key][0]) revalidators[key][0]();\n }\n };\n if (typeof defaultConfig.registerOnFocus === 'function') {\n defaultConfig.registerOnFocus(function () {\n return revalidate_1(FOCUS_REVALIDATORS);\n });\n }\n if (typeof defaultConfig.registerOnReconnect === 'function') {\n defaultConfig.registerOnReconnect(function () {\n return revalidate_1(RECONNECT_REVALIDATORS);\n });\n }\n}\nvar trigger = function (_key, shouldRevalidate) {\n if (shouldRevalidate === void 0) {\n shouldRevalidate = true;\n }\n // we are ignoring the second argument which correspond to the arguments\n // the fetcher will receive when key is an array\n var _a = cache.serializeKey(_key),\n key = _a[0],\n keyErr = _a[2],\n keyValidating = _a[3];\n if (!key) return Promise.resolve();\n var updaters = CACHE_REVALIDATORS[key];\n if (key && updaters) {\n var currentData = cache.get(key);\n var currentError = cache.get(keyErr);\n var currentIsValidating = cache.get(keyValidating);\n var promises = [];\n for (var i = 0; i < updaters.length; ++i) {\n promises.push(updaters[i](shouldRevalidate, currentData, currentError, currentIsValidating, i > 0));\n }\n // return new updated value\n return Promise.all(promises).then(function () {\n return cache.get(key);\n });\n }\n return Promise.resolve(cache.get(key));\n};\nvar broadcastState = function (key, data, error, isValidating) {\n var updaters = CACHE_REVALIDATORS[key];\n if (key && updaters) {\n for (var i = 0; i < updaters.length; ++i) {\n updaters[i](false, data, error, isValidating);\n }\n }\n};\nvar mutate = function (_key, _data, shouldRevalidate) {\n if (shouldRevalidate === void 0) {\n shouldRevalidate = true;\n }\n return __awaiter(void 0, void 0, void 0, function () {\n var _a, key, keyErr, beforeMutationTs, beforeConcurrentPromisesTs, data, error, isAsyncMutation, err_1, shouldAbort, updaters, promises, i;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = cache.serializeKey(_key), key = _a[0], keyErr = _a[2];\n if (!key) return [2 /*return*/];\n // if there is no new data to update, let's just revalidate the key\n if (typeof _data === 'undefined') return [2 /*return*/, trigger(_key, shouldRevalidate)\n // update global timestamps\n ];\n // update global timestamps\n MUTATION_TS[key] = now() - 1;\n MUTATION_END_TS[key] = 0;\n beforeMutationTs = MUTATION_TS[key];\n beforeConcurrentPromisesTs = CONCURRENT_PROMISES_TS[key];\n isAsyncMutation = false;\n if (_data && typeof _data === 'function') {\n // `_data` is a function, call it passing current cache value\n try {\n _data = _data(cache.get(key));\n } catch (err) {\n // if `_data` function throws an error synchronously, it shouldn't be cached\n _data = undefined;\n error = err;\n }\n }\n if (!(_data && typeof _data.then === 'function')) return [3 /*break*/, 5];\n // `_data` is a promise\n isAsyncMutation = true;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3,, 4]);\n return [4 /*yield*/, _data];\n case 2:\n data = _b.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _b.sent();\n error = err_1;\n return [3 /*break*/, 4];\n case 4:\n return [3 /*break*/, 6];\n case 5:\n data = _data;\n _b.label = 6;\n case 6:\n shouldAbort = function () {\n // check if other mutations have occurred since we've started this mutation\n if (beforeMutationTs !== MUTATION_TS[key] || beforeConcurrentPromisesTs !== CONCURRENT_PROMISES_TS[key]) {\n if (error) throw error;\n return true;\n }\n };\n // if there's a race we don't update cache or broadcast change, just return the data\n if (shouldAbort()) return [2 /*return*/, data];\n if (typeof data !== 'undefined') {\n // update cached data\n cache.set(key, data);\n }\n // always update or reset the error\n cache.set(keyErr, error);\n // reset the timestamp to mark the mutation has ended\n MUTATION_END_TS[key] = now() - 1;\n if (!isAsyncMutation) {\n // we skip broadcasting if there's another mutation happened synchronously\n if (shouldAbort()) return [2 /*return*/, data];\n }\n updaters = CACHE_REVALIDATORS[key];\n if (updaters) {\n promises = [];\n for (i = 0; i < updaters.length; ++i) {\n promises.push(updaters[i](!!shouldRevalidate, data, error, undefined, i > 0));\n }\n // return new updated value\n return [2 /*return*/, Promise.all(promises).then(function () {\n if (error) throw error;\n return cache.get(key);\n })];\n }\n // throw error or return data to be used by caller of mutate\n if (error) throw error;\n return [2 /*return*/, data];\n }\n });\n });\n};\nfunction useSWR() {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var _key = args[0];\n var config = Object.assign({}, defaultConfig, useContext(SWRConfigContext), args.length > 2 ? args[2] : args.length === 2 && typeof args[1] === 'object' ? args[1] : {});\n // in typescript args.length > 2 is not same as args.lenth === 3\n // we do a safe type assertion here\n // args.length === 3\n var fn = args.length > 2 ? args[1] : args.length === 2 && typeof args[1] === 'function' ? args[1] :\n /**\n pass fn as null will disable revalidate\n https://paco.sh/blog/shared-hook-state-with-swr\n */\n args[1] === null ? args[1] : config.fetcher;\n // we assume `key` as the identifier of the request\n // `key` can change but `fn` shouldn't\n // (because `revalidate` only depends on `key`)\n // `keyErr` is the cache key for error objects\n var _a = cache.serializeKey(_key),\n key = _a[0],\n fnArgs = _a[1],\n keyErr = _a[2],\n keyValidating = _a[3];\n var configRef = useRef(config);\n useIsomorphicLayoutEffect(function () {\n configRef.current = config;\n });\n var willRevalidateOnMount = function () {\n return config.revalidateOnMount || !config.initialData && config.revalidateOnMount === undefined;\n };\n var resolveData = function () {\n var cachedData = cache.get(key);\n return typeof cachedData === 'undefined' ? config.initialData : cachedData;\n };\n var resolveIsValidating = function () {\n return !!cache.get(keyValidating) || key && willRevalidateOnMount();\n };\n var initialData = resolveData();\n var initialError = cache.get(keyErr);\n var initialIsValidating = resolveIsValidating();\n // if a state is accessed (data, error or isValidating),\n // we add the state to dependencies so if the state is\n // updated in the future, we can trigger a rerender\n var stateDependencies = useRef({\n data: false,\n error: false,\n isValidating: false\n });\n var stateRef = useRef({\n data: initialData,\n error: initialError,\n isValidating: initialIsValidating\n });\n // display the data label in the React DevTools next to SWR hooks\n useDebugValue(stateRef.current.data);\n var rerender = useState({})[1];\n var dispatch = useCallback(function (payload) {\n var shouldUpdateState = false;\n for (var k in payload) {\n // @ts-ignore\n if (stateRef.current[k] === payload[k]) {\n continue;\n }\n // @ts-ignore\n stateRef.current[k] = payload[k];\n // @ts-ignore\n if (stateDependencies.current[k]) {\n shouldUpdateState = true;\n }\n }\n if (shouldUpdateState) {\n // if component is unmounted, should skip rerender\n // if component is not mounted, should skip rerender\n if (unmountedRef.current || !initialMountedRef.current) return;\n rerender({});\n }\n },\n // config.suspense isn't allowed to change during the lifecycle\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n // error ref inside revalidate (is last request errored?)\n var unmountedRef = useRef(false);\n var keyRef = useRef(key);\n // check if component is mounted in suspense mode\n var initialMountedRef = useRef(false);\n // do unmount check for callbacks\n var eventsCallback = useCallback(function (event) {\n var _a;\n var params = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n params[_i - 1] = arguments[_i];\n }\n if (unmountedRef.current) return;\n if (!initialMountedRef.current) return;\n if (key !== keyRef.current) return;\n // @ts-ignore\n (_a = configRef.current)[event].apply(_a, params);\n }, [key]);\n var boundMutate = useCallback(function (data, shouldRevalidate) {\n return mutate(keyRef.current, data, shouldRevalidate);\n }, []);\n var addRevalidator = function (revalidators, callback) {\n if (!revalidators[key]) {\n revalidators[key] = [callback];\n } else {\n revalidators[key].push(callback);\n }\n return function () {\n var keyedRevalidators = revalidators[key];\n var index = keyedRevalidators.indexOf(callback);\n if (index >= 0) {\n // O(1): faster than splice\n keyedRevalidators[index] = keyedRevalidators[keyedRevalidators.length - 1];\n keyedRevalidators.pop();\n }\n };\n };\n // start a revalidation\n var revalidate = useCallback(function (revalidateOpts) {\n if (revalidateOpts === void 0) {\n revalidateOpts = {};\n }\n return __awaiter(_this, void 0, void 0, function () {\n var _a, retryCount, _b, dedupe, loading, shouldDeduping, newData, startAt, newState, err_2;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!key || !fn) return [2 /*return*/, false];\n if (unmountedRef.current) return [2 /*return*/, false];\n if (configRef.current.isPaused()) return [2 /*return*/, false];\n _a = revalidateOpts.retryCount, retryCount = _a === void 0 ? 0 : _a, _b = revalidateOpts.dedupe, dedupe = _b === void 0 ? false : _b;\n loading = true;\n shouldDeduping = typeof CONCURRENT_PROMISES[key] !== 'undefined' && dedupe;\n _c.label = 1;\n case 1:\n _c.trys.push([1, 6,, 7]);\n dispatch({\n isValidating: true\n });\n cache.set(keyValidating, true);\n if (!shouldDeduping) {\n // also update other hooks\n broadcastState(key, stateRef.current.data, stateRef.current.error, true);\n }\n newData = void 0;\n startAt = void 0;\n if (!shouldDeduping) return [3 /*break*/, 3];\n // there's already an ongoing request,\n // this one needs to be deduplicated.\n startAt = CONCURRENT_PROMISES_TS[key];\n return [4 /*yield*/, CONCURRENT_PROMISES[key]];\n case 2:\n newData = _c.sent();\n return [3 /*break*/, 5];\n case 3:\n // if no cache being rendered currently (it shows a blank page),\n // we trigger the loading slow event.\n if (config.loadingTimeout && !cache.get(key)) {\n setTimeout(function () {\n if (loading) eventsCallback('onLoadingSlow', key, config);\n }, config.loadingTimeout);\n }\n if (fnArgs !== null) {\n CONCURRENT_PROMISES[key] = fn.apply(void 0, fnArgs);\n } else {\n CONCURRENT_PROMISES[key] = fn(key);\n }\n CONCURRENT_PROMISES_TS[key] = startAt = now();\n return [4 /*yield*/, CONCURRENT_PROMISES[key]];\n case 4:\n newData = _c.sent();\n setTimeout(function () {\n delete CONCURRENT_PROMISES[key];\n delete CONCURRENT_PROMISES_TS[key];\n }, config.dedupingInterval);\n // trigger the success event,\n // only do this for the original request.\n eventsCallback('onSuccess', newData, key, config);\n _c.label = 5;\n case 5:\n // if there're other ongoing request(s), started after the current one,\n // we need to ignore the current one to avoid possible race conditions:\n // req1------------------>res1 (current one)\n // req2---------------->res2\n // the request that fired later will always be kept.\n if (CONCURRENT_PROMISES_TS[key] > startAt) {\n return [2 /*return*/, false];\n }\n // if there're other mutations(s), overlapped with the current revalidation:\n // case 1:\n // req------------------>res\n // mutate------>end\n // case 2:\n // req------------>res\n // mutate------>end\n // case 3:\n // req------------------>res\n // mutate-------...---------->\n // we have to ignore the revalidation result (res) because it's no longer fresh.\n // meanwhile, a new revalidation should be triggered when the mutation ends.\n if (MUTATION_TS[key] && (\n // case 1\n startAt <= MUTATION_TS[key] ||\n // case 2\n startAt <= MUTATION_END_TS[key] ||\n // case 3\n MUTATION_END_TS[key] === 0)) {\n dispatch({\n isValidating: false\n });\n return [2 /*return*/, false];\n }\n cache.set(keyErr, undefined);\n cache.set(keyValidating, false);\n newState = {\n isValidating: false\n };\n if (typeof stateRef.current.error !== 'undefined') {\n // we don't have an error\n newState.error = undefined;\n }\n if (!config.compare(stateRef.current.data, newData)) {\n // deep compare to avoid extra re-render\n // data changed\n newState.data = newData;\n }\n if (!config.compare(cache.get(key), newData)) {\n cache.set(key, newData);\n }\n // merge the new state\n dispatch(newState);\n if (!shouldDeduping) {\n // also update other hooks\n broadcastState(key, newData, newState.error, false);\n }\n return [3 /*break*/, 7];\n case 6:\n err_2 = _c.sent();\n delete CONCURRENT_PROMISES[key];\n delete CONCURRENT_PROMISES_TS[key];\n if (configRef.current.isPaused()) {\n dispatch({\n isValidating: false\n });\n return [2 /*return*/, false];\n }\n cache.set(keyErr, err_2);\n // get a new error\n // don't use deep equal for errors\n if (stateRef.current.error !== err_2) {\n // we keep the stale data\n dispatch({\n isValidating: false,\n error: err_2\n });\n if (!shouldDeduping) {\n // also broadcast to update other hooks\n broadcastState(key, undefined, err_2, false);\n }\n }\n // events and retry\n eventsCallback('onError', err_2, key, config);\n if (config.shouldRetryOnError) {\n // when retrying, we always enable deduping\n eventsCallback('onErrorRetry', err_2, key, config, revalidate, {\n retryCount: retryCount + 1,\n dedupe: true\n });\n }\n return [3 /*break*/, 7];\n case 7:\n loading = false;\n return [2 /*return*/, true];\n }\n });\n });\n },\n // dispatch is immutable, and `eventsCallback`, `fnArgs`, `keyErr`, and `keyValidating` are based on `key`,\n // so we can them from the deps array.\n //\n // FIXME:\n // `fn` and `config` might be changed during the lifecycle,\n // but they might be changed every render like this.\n // useSWR('key', () => fetch('/api/'), { suspense: true })\n // So we omit the values from the deps array\n // even though it might cause unexpected behaviors.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [key]);\n // mounted (client side rendering)\n useIsomorphicLayoutEffect(function () {\n if (!key) return undefined;\n // after `key` updates, we need to mark it as mounted\n unmountedRef.current = false;\n var isUpdating = initialMountedRef.current;\n initialMountedRef.current = true;\n // after the component is mounted (hydrated),\n // we need to update the data from the cache\n // and trigger a revalidation\n var currentHookData = stateRef.current.data;\n var latestKeyedData = resolveData();\n // update the state if the key changed (not the inital render) or cache updated\n keyRef.current = key;\n if (!config.compare(currentHookData, latestKeyedData)) {\n dispatch({\n data: latestKeyedData\n });\n }\n // revalidate with deduping\n var softRevalidate = function () {\n return revalidate({\n dedupe: true\n });\n };\n // trigger a revalidation\n if (isUpdating || willRevalidateOnMount()) {\n if (typeof latestKeyedData !== 'undefined' && !IS_SERVER) {\n // delay revalidate if there's cache\n // to not block the rendering\n // @ts-ignore it's safe to use requestAnimationFrame in browser\n rAF(softRevalidate);\n } else {\n softRevalidate();\n }\n }\n var pending = false;\n var onFocus = function () {\n if (pending || !configRef.current.revalidateOnFocus) return;\n pending = true;\n softRevalidate();\n setTimeout(function () {\n return pending = false;\n }, configRef.current.focusThrottleInterval);\n };\n var onReconnect = function () {\n if (configRef.current.revalidateOnReconnect) {\n softRevalidate();\n }\n };\n // register global cache update listener\n var onUpdate = function (shouldRevalidate, updatedData, updatedError, updatedIsValidating, dedupe) {\n if (shouldRevalidate === void 0) {\n shouldRevalidate = true;\n }\n if (dedupe === void 0) {\n dedupe = true;\n }\n // update hook state\n var newState = {};\n var needUpdate = false;\n if (typeof updatedData !== 'undefined' && !config.compare(stateRef.current.data, updatedData)) {\n newState.data = updatedData;\n needUpdate = true;\n }\n // always update error\n // because it can be `undefined`\n if (stateRef.current.error !== updatedError) {\n newState.error = updatedError;\n needUpdate = true;\n }\n if (typeof updatedIsValidating !== 'undefined' && stateRef.current.isValidating !== updatedIsValidating) {\n newState.isValidating = updatedIsValidating;\n needUpdate = true;\n }\n if (needUpdate) {\n dispatch(newState);\n }\n if (shouldRevalidate) {\n if (dedupe) {\n return softRevalidate();\n } else {\n return revalidate();\n }\n }\n return false;\n };\n var unsubFocus = addRevalidator(FOCUS_REVALIDATORS, onFocus);\n var unsubReconnect = addRevalidator(RECONNECT_REVALIDATORS, onReconnect);\n var unsubUpdate = addRevalidator(CACHE_REVALIDATORS, onUpdate);\n return function () {\n // cleanup\n dispatch = function () {\n return null;\n };\n // mark it as unmounted\n unmountedRef.current = true;\n unsubFocus();\n unsubReconnect();\n unsubUpdate();\n };\n }, [key, revalidate]);\n useIsomorphicLayoutEffect(function () {\n var timer = null;\n var tick = function () {\n return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!stateRef.current.error && (configRef.current.refreshWhenHidden || configRef.current.isDocumentVisible()) && (configRef.current.refreshWhenOffline || configRef.current.isOnline()))) return [3 /*break*/, 2];\n // only revalidate when the page is visible\n // if API request errored, we stop polling in this round\n // and let the error retry function handle it\n return [4 /*yield*/, revalidate({\n dedupe: true\n })];\n case 1:\n // only revalidate when the page is visible\n // if API request errored, we stop polling in this round\n // and let the error retry function handle it\n _a.sent();\n _a.label = 2;\n case 2:\n // Read the latest refreshInterval\n if (configRef.current.refreshInterval && timer) {\n timer = setTimeout(tick, configRef.current.refreshInterval);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n if (configRef.current.refreshInterval) {\n timer = setTimeout(tick, configRef.current.refreshInterval);\n }\n return function () {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n };\n }, [config.refreshInterval, config.refreshWhenHidden, config.refreshWhenOffline, revalidate]);\n // suspense\n var latestData;\n var latestError;\n if (config.suspense) {\n // in suspense mode, we can't return empty state\n // (it should be suspended)\n // try to get data and error from cache\n latestData = cache.get(key);\n latestError = cache.get(keyErr);\n if (typeof latestData === 'undefined') {\n latestData = initialData;\n }\n if (typeof latestError === 'undefined') {\n latestError = initialError;\n }\n if (typeof latestData === 'undefined' && typeof latestError === 'undefined') {\n // need to start the request if it hasn't\n if (!CONCURRENT_PROMISES[key]) {\n // trigger revalidate immediately\n // to get the promise\n // in this revalidate, should not rerender\n revalidate();\n }\n if (CONCURRENT_PROMISES[key] && typeof CONCURRENT_PROMISES[key].then === 'function') {\n // if it is a promise\n throw CONCURRENT_PROMISES[key];\n }\n // it's a value, return it directly (override)\n latestData = CONCURRENT_PROMISES[key];\n }\n if (typeof latestData === 'undefined' && latestError) {\n // in suspense mode, throw error if there's no content\n throw latestError;\n }\n }\n // define returned state\n // can be memorized since the state is a ref\n var memoizedState = useMemo(function () {\n // revalidate will be deprecated in the 1.x release\n // because mutate() covers the same use case of revalidate().\n // This remains only for backward compatibility\n var state = {\n revalidate: revalidate,\n mutate: boundMutate\n };\n Object.defineProperties(state, {\n error: {\n // `key` might be changed in the upcoming hook re-render,\n // but the previous state will stay\n // so we need to match the latest key and data (fallback to `initialData`)\n get: function () {\n stateDependencies.current.error = true;\n if (config.suspense) {\n return latestError;\n }\n return keyRef.current === key ? stateRef.current.error : initialError;\n },\n enumerable: true\n },\n data: {\n get: function () {\n stateDependencies.current.data = true;\n if (config.suspense) {\n return latestData;\n }\n return keyRef.current === key ? stateRef.current.data : initialData;\n },\n enumerable: true\n },\n isValidating: {\n get: function () {\n stateDependencies.current.isValidating = true;\n return key ? stateRef.current.isValidating : false;\n },\n enumerable: true\n }\n });\n return state;\n // `config.suspense` isn't allowed to change during the lifecycle.\n // `boundMutate` is immutable, and the immutability of `revalidate` depends on `key`\n // so we can omit them from the deps array,\n // but we put it to enable react-hooks/exhaustive-deps rule.\n // `initialData` and `initialError` are not initial values\n // because they are changed during the lifecycle\n // so we should add them in the deps array.\n }, [revalidate, initialData, initialError, boundMutate, key, config.suspense, latestError, latestData]);\n return memoizedState;\n}\nObject.defineProperty(SWRConfigContext.Provider, 'default', {\n value: defaultConfig\n});\nvar SWRConfig = SWRConfigContext.Provider;\nexport { trigger, mutate, SWRConfig };\nexport default useSWR;","// `useSWR` and related APIs\nimport { default as useSWR } from './use-swr';\nexport default useSWR;\nexport * from './use-swr';\n// `useSWRInfinite`\nexport { useSWRInfinite } from './use-swr-infinite';\n// Cache related, to be replaced by the new APIs\nexport { cache } from './config';","import useSWR from 'swr';\nimport { AxiosPublic } from '../axios';\nimport { CatalogCodeEnum } from '@eisc-frontend/shared-ui';\nimport { Catalog } from '../../interfaces';\n\nconst CATALOG_BASE_URL = 'catalog';\nconst fetchQuery = (url) => AxiosPublic.get(url).then((res) => res.data);\n\nexport const useCatalog = (catalogCode: CatalogCodeEnum) => {\n // Check https://swr.vercel.app/docs/options#options for more SWR options\n const { data, error } = useSWR(`/${CATALOG_BASE_URL}/${catalogCode}`, fetchQuery, {\n revalidateOnFocus: false,\n });\n const catalogData: Catalog[] = data?.map((el) => ({ label: el.name, value: el.id }));\n\n return {\n data: catalogData,\n isLoading: !error && !data,\n };\n};\n","import { useState } from 'react';\nimport { AxiosPrivate } from '../axios';\n\nexport const useUploadForm = () => {\n const [isFetching, setFetching] = useState(false);\n const [uploadErrors, setUploadErrors] = useState([]);\n const [success, setSuccess] = useState(false);\n const [uploadedFiles, setUploadedFiles] = useState(null);\n\n const ATTACHMENT_UPLOAD_URL = '/review-attachments';\n\n const upload = async (files: any[], reviewId: string) => {\n setFetching(true);\n setUploadErrors([]);\n\n try {\n const res = await Promise.all(\n files.map(async (file) => {\n const name = file.path.replace(/\\s/g, '');\n const formData = new FormData();\n formData.append('file', file);\n formData.append('name', name);\n formData.append('reviewId', reviewId);\n return await AxiosPrivate.post(ATTACHMENT_UPLOAD_URL, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n }),\n );\n\n setUploadedFiles(res.map((r) => r.data));\n setSuccess(true);\n } catch (e) {\n setUploadErrors(e);\n setSuccess(false);\n } finally {\n setFetching(false);\n }\n };\n\n return {\n isFetching,\n upload,\n uploadErrors,\n success,\n uploadedFiles,\n };\n};\n","import { useState } from 'react';\n\nimport { AxiosPrivate } from '../axios';\nimport ResponseException from '../../models/ResponseException';\nimport ReviewInternalDataModel from '../../models/ReviewInternalDataModel';\n\nexport const useUpdateReview = () => {\n const [errors, setErrors] = useState([]);\n const [success, setSuccess] = useState(false);\n const [isFetching, setFetching] = useState(false);\n\n const updateReview = async (reviewId: string, data: ReviewInternalDataModel) => {\n try {\n setFetching(true);\n console.log(`Info being sent - ${JSON.stringify(data, null, 2)}`);\n const response = await AxiosPrivate.patch(`/reviews/${reviewId}/internaldata`, data);\n setFetching(false);\n setSuccess(true);\n return response;\n } catch (e) {\n setFetching(false);\n setSuccess(false);\n setErrors(new ResponseException(e).getErrorMessage());\n }\n };\n\n return {\n isFetching,\n updateReview,\n errors,\n success,\n };\n};\n","import { useState, useContext } from 'react';\nimport { AxiosPrivate } from '../axios';\nimport { GlobalContext } from '../../contexts/GlobalContext';\n\nexport const useGetAllUsers = () => {\n const globalContext = useContext(GlobalContext);\n const [isFetching, setFetching] = useState(false);\n const [allUsers, setAllUsers] = useState([]);\n\n return {\n allUsers,\n isFetching,\n onLoad: async () => {\n try {\n setFetching(true);\n const { data } = await AxiosPrivate.get(`/users?orderBy=firstName&order=ASC`);\n\n setAllUsers(data);\n setFetching(false);\n } catch (e) {\n globalContext.showMessage({\n title: 'Error',\n body: 'An error has occurred retrieving users',\n variant: 'error',\n });\n setFetching(false);\n }\n },\n };\n};\n","import { useState, useContext } from 'react';\nimport { AxiosPrivate } from '../axios';\nimport { GlobalContext } from '../../contexts/GlobalContext';\n\nexport const useDistributionList = () => {\n const globalContext = useContext(GlobalContext);\n const [isFetching, setIsFetching] = useState(false);\n const [items, setItems] = useState([]);\n\n const getAll = async (query) => {\n try {\n setIsFetching(true);\n\n const { data } = await AxiosPrivate.get('/distribution-list', {\n params: { ...query },\n });\n\n setItems(data.distributionLists);\n } catch (e) {\n globalContext.showMessage({\n title: 'Error',\n body: 'An error has occurred retrieving distribution lists',\n variant: 'error',\n });\n } finally {\n setIsFetching(false);\n }\n };\n\n return {\n isFetching,\n items,\n getAll,\n };\n};\n","import { ROWS_PER_PAGE, SORT_ORDER } from '../../constants';\n\nexport const generateQuery = (\n searchFilter = '',\n statusFilter = 'All',\n dateFilter = 'All',\n developerFilter = 'All',\n offset = 0,\n orderBy = 'createdAt',\n order = SORT_ORDER[0],\n boardAbbr = '',\n) => {\n let base = `?take=${ROWS_PER_PAGE}&skip=${offset}&orderBy=${\n orderBy || 'createdAt'\n }&order=${order}`; // pagination\n\n if (searchFilter) {\n base += `&searchFilter=\"${searchFilter}\"`; // search by title, file number or developer\n }\n\n // filter by status (eg. Avtive, Completed, ...)\n if (statusFilter !== 'All') {\n base += statusFilter;\n }\n\n if (dateFilter !== 'All') {\n base += `&dateRange=${dateFilter}`; // filter by date range (eg. Last week, Last month, ...)\n }\n\n if (developerFilter !== 'All') {\n base += `&developerId=${developerFilter}`;\n }\n\n if (boardAbbr !== '') {\n base += `&boardAbbr=${boardAbbr}`;\n }\n\n return base;\n};\n","var r;\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++) res[i] = this.rand.getByte();\n return res;\n};\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function () {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","'use strict';\n\nvar curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};","var constants = require('../constants');\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = constants._reverse(exports.tagClass);\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 = constants._reverse(exports.tag);","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/**/\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\n\nvar destroyImpl = require('./internal/streams/destroy');\nutil.inherits(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","var MAX_ALLOC = Math.pow(2, 30) - 1; // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number');\n }\n if (iterations < 0) {\n throw new TypeError('Bad iterations');\n }\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number');\n }\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) {\n /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length');\n }\n};","'use strict';\n\n// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m;\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m;\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m;\nvar evp = require('evp_bytestokey');\nvar ciphers = require('browserify-aes');\nvar Buffer = require('safe-buffer').Buffer;\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n if (!match) {\n var match2 = key.match(fullRegex);\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64');\n } else {\n var suite = 'aes' + match[1];\n var iv = Buffer.from(match[2], 'hex');\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64');\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key;\n var out = [];\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv);\n out.push(cipher.update(cipherText));\n out.push(cipher['final']());\n decrypted = Buffer.concat(out);\n }\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\n };\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar pna = require('process-nextick-args');\n/**/\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\n\n/**/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nutil.inherits(Duplex, Readable);\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n if (options && options.readable === false) this.readable = false;\n if (options && options.writable === false) this.writable = false;\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n this.once('end', onend);\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n pna.nextTick(cb, err);\n};","module.exports = require('events').EventEmitter;","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\nfunction ft_1(s, x, y, z) {\n if (s === 0) return ch32(x, y, z);\n if (s === 1 || s === 3) return p32(x, y, z);\n if (s === 2) return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\nfunction ch32(x, y, z) {\n return x & y ^ ~x & z;\n}\nexports.ch32 = ch32;\nfunction maj32(x, y, z) {\n return x & y ^ x & z ^ y & z;\n}\nexports.maj32 = maj32;\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3;\n}\nexports.g0_256 = g0_256;\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10;\n}\nexports.g1_256 = g1_256;","var aes = require('./aes');\nvar Buffer = require('safe-buffer').Buffer;\nvar Transform = require('cipher-base');\nvar inherits = require('inherits');\nfunction StreamCipher(mode, key, iv, decrypt) {\n Transform.call(this);\n this._cipher = new aes.AES(key);\n this._prev = Buffer.from(iv);\n this._cache = Buffer.allocUnsafe(0);\n this._secCache = Buffer.allocUnsafe(0);\n this._decrypt = decrypt;\n this._mode = mode;\n}\ninherits(StreamCipher, Transform);\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\nmodule.exports = StreamCipher;","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160)) return new RIPEMD160();\n BlockHash.call(this);\n this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little');\n};\nfunction f(j, x, y, z) {\n if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z);\n}\nfunction K(j) {\n if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e;\n}\nfunction Kh(j) {\n if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000;\n}\nvar r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];\nvar rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];\nvar s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];\nvar sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];","var defaultEncoding;\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8';\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10);\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary';\n} else {\n defaultEncoding = 'utf-8';\n}\nmodule.exports = defaultEncoding;","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() :\n// Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();"],"sourceRoot":""}