{"version":3,"sources":["webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/miller-rabin/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/shortid/lib/is-valid.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/nanoid/format.browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/react-side-effect/lib/index.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/public-encrypt/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./src/components/Layout/MainNav.js","webpack:///./src/components/TOC/TreeViewHeader.js","webpack:///./src/components/TOC/RenderTreeView.js","webpack:///./src/components/TOC/TOC.js","webpack:///./src/components/TOC/index.js","webpack:///./src/components/Layout/BodyLayout.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/hash-base/node_modules/safe-buffer/index.js","webpack:///./node_modules/shortid/lib/index.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/shortid/lib/random/random-byte-browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/is-what/dist/index.esm.js","webpack:///./node_modules/merge-anything/dist/index.esm.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/shallowequal/index.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/node-libs-browser/node_modules/buffer/index.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/create-ecdh/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-sign/node_modules/safe-buffer/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/shortid/lib/build.js","webpack:///./node_modules/use-page-headings-tree/dist/index.es.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/shortid/lib/alphabet.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///./src/components/Layout/SEO.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/diffie-hellman/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/stylis-rule-sheet/index.js","webpack:///./node_modules/react-helmet/lib/Helmet.js","webpack:///./node_modules/react-is/index.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/stylis/stylis.min.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/react-fast-compare/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/shortid/lib/random/random-from-seed.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/elliptic/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/react-helmet/lib/HelmetConstants.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/pbkdf2/lib/to-buffer.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/shortid/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/shortid/lib/util/cluster-worker-id-browser.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/errors-browser.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/react-is/cjs/react-is.production.min.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/react-helmet/lib/HelmetUtils.js","webpack:///./node_modules/asn1.js/node_modules/bn.js/lib/bn.js","webpack:///./node_modules/styled-components/dist/styled-components.browser.esm.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/shortid/lib/generate.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/safer-buffer/safer.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/browserify-sign/node_modules/readable-stream/lib/_stream_readable.js"],"names":["eos","_require$codes","codes","ERR_MISSING_ARGS","ERR_STREAM_DESTROYED","noop","err","destroyer","stream","reading","writing","callback","called","apply","arguments","once","closed","on","undefined","readable","writable","destroyed","setHeader","abort","isRequest","destroy","call","fn","pipe","from","to","popCallback","streams","length","pop","module","exports","_len","Array","_key","error","isArray","destroys","map","i","forEach","reduce","Error","ReflectOwnKeys","R","Reflect","ReflectApply","target","receiver","args","Function","prototype","ownKeys","Object","getOwnPropertySymbols","getOwnPropertyNames","concat","NumberIsNaN","Number","isNaN","value","EventEmitter","init","this","emitter","name","Promise","resolve","reject","errorListener","removeListener","resolver","slice","eventTargetAgnosticAddListener","handler","flags","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","type","prepend","m","events","existing","warning","create","newListener","emit","unshift","push","warned","w","String","count","console","warn","onceWrapper","fired","wrapFn","_onceWrap","state","wrapped","bind","_listeners","unwrap","evlistener","arr","ret","unwrapListeners","arrayClone","listenerCount","n","copy","addEventListener","wrapListener","arg","removeEventListener","defineProperty","enumerable","get","set","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","message","context","len","listeners","addListener","prependListener","prependOnceListener","list","position","originalListener","shift","index","spliceOne","off","removeAllListeners","key","keys","rawListeners","eventNames","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","r","Rand","rand","generate","_rand","getBytes","res","Uint8Array","getByte","self","crypto","getRandomValues","msCrypto","window","randomBytes","e","assert","val","msg","inherits","ctor","superCtor","super_","TempCtor","constructor","BN","number","base","endian","isBN","negative","words","red","_init","Buffer","wordSize","parseHex4Bits","string","c","charCodeAt","parseHexByte","lowerBound","parseBase","str","start","end","mul","Math","min","num","max","left","right","cmp","_initNumber","_initArray","toString","replace","_parseHex","_parseBase","toArray","ceil","j","strip","limbLen","limbPow","total","mod","word","imuln","_iaddn","pow","dest","clone","_expand","size","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","a","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","isZero","modn","idivn","toNumber","toJSON","toBuffer","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","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","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","_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","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","split","imulK","_strip","input","output","outLen","prev","next","mod3","one","nOne","lpow","z","inv","wnd","current","currentLen","mont","u","createErrorType","code","Base","NodeError","_Base","subClass","superClass","arg1","arg2","arg3","getMessage","__proto__","oneOf","expected","thing","join","actual","determiner","search","pos","substr","this_len","substring","endsWith","indexOf","includes","Transform","Reporter","options","_reporterState","obj","path","errors","ReporterError","rethrow","isError","save","pathLen","restore","data","enterKey","exitKey","leaveKey","enterObject","leaveObject","now","inherited","elem","JSON","stringify","stack","partial","wrapResult","result","captureStackTrace","ZEROS","alloc","Hmac","alg","_alg","ipad","_ipad","allocUnsafe","opad","_opad","_hash","_update","_final","Stream","EE","Readable","Writable","Duplex","PassThrough","source","ondata","chunk","write","pause","ondrain","resume","_isStdio","onend","onclose","didOnEnd","onerror","cleanup","equal","pna","CorkedRequest","_this","entry","finish","corkReq","cb","pendingcb","corkedRequestsFree","onCorkedFinish","asyncWrite","process","browser","version","setImmediate","nextTick","WritableState","util","internalUtil","deprecate","OurUint8Array","global","realHasInstance","destroyImpl","nop","isDuplex","objectMode","writableObjectMode","hwm","highWaterMark","writableHwm","writableHighWaterMark","defaultHwm","floor","finalCalled","needDrain","ending","ended","finished","noDecode","decodeStrings","defaultEncoding","corked","sync","bufferProcessing","onwrite","_writableState","writecb","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","_write","writev","_writev","_destroy","final","doWrite","encoding","onwriteDrain","buffer","holder","allBuffers","isBuf","callFinal","need","prefinish","getBuffer","Symbol","hasInstance","object","isBuffer","_uint8ArrayToBuffer","writeAfterEnd","valid","validChunk","newChunk","decodeChunk","last","writeOrBuffer","cork","uncork","setDefaultEncoding","toLowerCase","endWritable","_undestroy","undestroy","alphabet","id","RegExp","test","md5","RIPEMD160","sha","checkParameters","sizes","sha1","sha224","sha256","sha384","sha512","rmd160","ripemd160","saltLen","hash","shaFunc","update","digest","getDigest","blocksize","ipad1","ipad2","run","password","salt","iterations","keylen","hmac","DK","block1","destPos","hLen","writeUInt32BE","T","U","curve","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","elliptic","ec","formatReturnValue","bn","enc","buf","fill","p256","secp256r1","secp192r1","p384","p521","generateKeys","format","genKeyPair","getPublicKey","computeSecret","other","inenc","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","pub","_importPublic","setPrivateKey","priv","_priv","_importPrivate","random","log","LN2","step","bytes","objectKeys","v","method","allowHalfOpen","onEndNT","_readableState","utils","getNAF","getJSF","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","naf","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","jsf","ja","jb","decodePoint","pointFromX","encodeCompressed","encode","_encode","compact","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","BlockHash","pending","pendingTotal","blockSize","outSize","hmacStrength","padLength","_delta8","_delta32","join32","_pad","_digest","ERR_STREAM_PREMATURE_CLOSE","opts","onlegacyfinish","onfinish","writableEnded","readableEnded","endEmitted","onrequest","req","encoders","decoders","Entity","body","define","_createNamed","Generated","entity","_initNamed","_getDecoder","hasOwnProperty","decode","_getEncoder","reporter","_interopDefault","ex","React","React__default","shallowEqual","_defineProperty","configurable","canUseDOM","document","createElement","reducePropsToState","handleStateChangeOnClient","mapStateOnServer","WrappedComponent","mountedInstances","emitChange","instance","props","SideEffect","_Component","peek","rewind","recordedState","_proto","shouldComponentUpdate","nextProps","componentWillMount","componentDidUpdate","componentWillUnmount","splice","render","Component","displayName","getDisplayName","minAssert","minUtils","zero2","toHex","k1","k2","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","ERR_METHOD_NOT_IMPLEMENTED","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writechunk","rs","needReadable","_read","needTransform","writeencoding","_transform","flush","_flush","done","err2","createHash","i2ops","seed","HashBase","ARRAY16","MD5","_a","_b","_c","_d","rotl","fnF","d","fnG","fnH","fnI","M","_block","readInt32LE","_blockOffset","writeUInt32LE","_length","writeInt32LE","reactPropsRegex","cache","prop","DH","ENCODINGS","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","gen","createDiffieHellman","DiffieHellman","generator","genc","generatePrime","encrypt","block","_cipher","encryptBlock","decrypt","decryptBlock","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","_flushBuffer","inputOff","outputOff","first","_finalEncrypt","_finalDecrypt","_unpad","NavWrapper","styled","nav","strippedPath","withPrefix","NavLinkItem","item","location","className","url","pathname","fromNav","displayText","MainNav","menuItems","siteTitle","aria-label","ToggleButton","button","TreeViewHeader","pageName","isSidebarVisible","setIsSidebarVisible","tocHeadingId","onClick","aria-hidden","NodeWrapper","li","RenderNode","hasChildren","isExpanded","skipChildren","rootNode","setIsExpanded","onNodeClick","nodeDepth","ariaExpanded","iconName","style","disabled","tabIndex","fontSize","role","href","text","Tree","useState","expanded","childNodes","childListStyle","height","overflow","node","RecursivelyRenderTreeNode","RenderTreeView","treeLabelId","aria-labelledby","SidebarRoot","TOC","memo","isVisible","collapsedWidth","expandedWidth","onToggling","headingNodes","shouldDefaultToExpand","headings","setHeadings","sidebarWidth","updateToggle","usePageHeadingsTree","minWidth","innerWidth","PageWrapper","ContentWrapper","TOCWrapper","mobileWidth","Layout","children","rewriteNavPaths","useStaticQuery","site","header","footer","siteConfigJson","useContext","WrapPageContext","isTocVisible","setIsTocVisible","navItems","items","genId","currentNavItem","find","TOCHeader","useEffect","focusEl","getElementById","focus","dangerouslySetInnerHTML","__html","html","siteMetadata","title","constants","_reverse","der","SHA256","SHA224","toHex32","split32","ERR_INVALID_OPT_VALUE","getHighWaterMark","duplexKey","highWaterMarkFrom","isFinite","copyProps","src","dst","SafeBuffer","encodingOrOffset","allocUnsafeSlow","SlowBuffer","build","isValid","clusterWorkerId","seedValue","worker","workerId","characters","newCharacters","shuffled","iv","des","des3","Hash","K","W","Sha","_w","rotl30","ft","_e","readInt32BE","H","writeInt32BE","randomByte","aes","StreamCipher","AES","_prev","_cache","_secCache","_decrypt","_mode","scrub","pre","curves","PresetCurve","short","edwards","isInfinity","defineCurve","lambda","basis","proto","CBCState","instantiate","CBC","_cbcInit","_cbcState","inp","inOff","outOff","superProto","parseKeys","mgf","crt","withPublic","privateKey","reverse","modulus","zBuffer","iHash","maskedSeed","maskedDb","db","dif","compare","oaep","p1","status","ps","pkcs1","common","shaCommon","rotl32","sum32","sum32_5","ft_1","sha1_K","SHA1","getType","payload","isPlainObject","isSymbol","__spreadArrays","il","jl","assignProp","newVal","originalObject","propType","propertyIsEnumerable","mergeRecursively","origin","newComer","extensions","extend","newObject","targetVal","newComers","_i","generated","DES","EDE","ERR_INVALID_ARG_TYPE","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","errorOrDestroy","emitClose","autoDestroy","rState","Legacy","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","idx","valueA","valueB","EDEState","k3","_edeState","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","len2","encodeChunk","lookup","base64","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","createBuffer","ArrayBuffer","array","byteOffset","fromArrayLike","fromArrayBuffer","isEncoding","fromString","checked","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","parseInt","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","INSPECT_MAX_BYTES","foo","subarray","typedArraySupport","poolSize","_augment","species","_isBuffer","swap16","swap32","swap64","equals","match","thisStart","thisEnd","thisCopy","targetCopy","_arr","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","trim","stringtrim","base64clean","rng","pseudoRandomBytes","prng","createHmac","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","dh","sign","createSign","Sign","createVerify","Verify","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","CipherBase","modeName","_des","ZERO_BUF","subtle","toBrowser","checks","getNextTick","queueMicrotask","setTimeout","browserPbkdf2","algo","importKey","then","deriveBits","promise","resolvePromise","prom","catch","checkNative","resp","pem","inner","outer","enumerableOnly","symbols","filter","sym","getOwnPropertyDescriptor","_defineProperties","descriptor","custom","BufferList","Constructor","_classCallCheck","head","tail","protoProps","staticProps","hasStrings","_getString","_getBuffer","nb","getOwnPropertyDescriptors","defineProperties","_objectSpread","depth","customInspect","_this2","asn1","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tag","certificate","tbsCertificate","subjectPublicKeyInfo","PublicKey","algorithm","RSAPublicKey","subjectPublicKey","subjectPrivateKey","params","pub_key","DSAparam","kde","kdeparams","iters","cipher","cipherText","EncryptedPrivateKey","PrivateKey","RSAPrivateKey","ECPrivateKey","priv_key","DSAPrivateKey","parameters","signature","pipeline","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","c1","c2","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","endoMul","parse","obj2point","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","f","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","eddsa","Node","DEREncoder","tree","DERNode","parent","_encodeComposite","primitive","cls","content","encodedTag","tagByName","tagClassByName","encodeTag","_header","_createEncoderBuffer","lenOctets","_encodeStr","unused","_isNumstr","_isPrintstr","_encodeObjid","values","relative","_i2","_i3","ident","objid","_i4","_ident","_encodeTime","time","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","_encodeNull","_encodeInt","numArray","_size","_out","_i5","_encodeBool","_use","_skipDefault","dataBuffer","_baseState","defaultBuffer","_encodeValue","encryptStart","KeyPair","_secret","secret","isPoint","_pub","_pubBytes","fromPublic","fromSecret","encodePoint","lastIx","encodingLength","decodeInt","privBytes","verify","sig","getSecret","pubBytes","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","asUInt32Array","scrubVec","cryptBlock","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","_reset","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","m1","objectToString","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isUndefined","isRegExp","isObject","isDate","isFunction","isPrimitive","ZEROES","fromArray","GHASH","ghash","_multiply","lsbVi","Vi","Zi","abl","bl","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","normalize","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","counter","previousSeconds","seconds","_objectSpread2","byteToHex","bytesToUuid","bth","v35","hashfunc","generateUUID","namespace","unescape","encodeURIComponent","stringToBytes","uuid","hex","uuidToBytes","DNS","URL","v4","rnds","ii","getParentMap","headingLevel","latestRoots","transformRootNode","element","innerText","innerHTML","getFlatNodeListFromHeadings","roots","H2","H3","H4","H5","H6","getDefaultRoot","heading","childrenCount","rootId","tagName","checkTag","parentMap","getNodeTreeFromFlatNodeList","rootKeys","_loop","parents","currentRoot","childKey","child","parentId","checkParent","finalRoots","seq","int","use","AlgorithmIdentifier","bitstr","null_","optional","PrivateKeyInfo","octstr","EncryptedPrivateKeyInfo","explicit","ECParameters","choice","namedCurve","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","setPrototypeOf","lastPromise","wrapForNext","asyncIterator","_Object$create","iterator","DecoderBuffer","EncoderBuffer","previousSeed","randomFromSeed","ORIGINAL","reset","setCharacters","_alphabet_","unique","ind","getShuffled","characterIndex","sourceArray","targetArray","nextValue","shuffle","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","config","padded","unpad","setAutoPadding","setTo","autoPadding","ReadableState","EElistenerCount","debug","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","ERR_STREAM_PUSH_AFTER_EOF","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","kProxyEvents","readableObjectMode","pipes","pipesCount","flowing","emittedReadable","readableListening","resumeScheduled","paused","awaitDrain","readingMore","decoder","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","addChunk","maybeReadMore","isPaused","setEncoding","clear","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","xs","nOrig","doRead","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","cleanedUp","pipeOnDrain","event","dests","ev","wrap","_fromList","iterable","description","author","SEO","lang","meta","getMetaDescription","htmlAttributes","titleTemplate","property","defaultProps","Signature","S","_R","_S","_Rencoded","Rencoded","_Sencoded","Sencoded","encodeInt","toBytes","toUpperCase","emitErrorNT","readableDestroyed","writableDestroyed","emitErrorAndCloseNT","emitCloseNT","Sha512","Ch","maj","sigma0","xl","sigma1","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","ah","bh","ch","eh","fh","gh","hh","al","cl","dl","el","fl","gl","hl","xh","gamma0","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","writeInt64BE","insertRule","toSheet","selectors","line","column","ns","at","delimiter","factory","__esModule","Helmet","_extends","assign","_createClass","_react2","_interopRequireDefault","_propTypes2","_reactSideEffect2","_reactFastCompare2","_HelmetUtils","_HelmetConstants","default","_objectWithoutProperties","_possibleConstructorReturn","ReferenceError","_class","_temp","HelmetSideEffects","handleClientStateChange","HelmetExport","_React$Component","HelmetWrapper","_inherits","mapNestedChildrenToProps","nestedChildren","TAG_NAMES","SCRIPT","NOSCRIPT","STYLE","cssText","flattenArrayTypeChildren","_ref","_extends2","arrayTypeChildren","newChildProps","mapObjectTypeChildren","_ref2","_extends3","_extends4","newProps","TITLE","titleAttributes","BODY","bodyAttributes","HTML","mapArrayTypeChildrenToProps","newFlattenedProps","arrayChildName","_extends5","warnOnInvalidChildren","mapChildrenToProps","Children","_child$props","childProps","convertReactPropstoHtmlAttributes","LINK","META","_props","propTypes","oneOfType","arrayOf","defaultTitle","defer","bool","encodeSpecialCharacters","link","noscript","onChangeClientState","func","script","mappedState","baseTag","linkTags","metaTags","noscriptTags","scriptTags","styleTags","renderStatic","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherKey","match2","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","pad","lStart","rStart","keyL","keyR","expand","substitute","rip","Timeout","clearFn","_id","_clearFn","scope","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","getBlock","encryptByte","byteParam","shiftIn","paddedMsg","publicExponent","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","rem","simpleSieve","fermatTest","checkPrime","__gen","_gen","getPrime","front","getGenerator","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","any","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","def","TBSCertificate","implicit","X509Certificate","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","n2","areInputsEqual","newInputs","lastInputs","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","group","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","handle","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","documentElement","onreadystatechange","removeChild","appendChild","attachEvent","task","isEncoderBuffer","isDecoderBuffer","isEmpty","skip","raw","fail","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","getAuthTag","setAuthTag","setAAD","fin","$","O","F","E","J","Q","V","Z","be","pe","ke","ge","Ae","Ce","we","ve","me","xe","$e","ye","Oe","qe","Be","De","Ee","Ge","He","je","ze","Je","Re","Te","Ue","Ve","Xe","Ye","charAt","Qe","Pe","Ie","Me","Le","Ke","parseFloat","Algorithm","HmacDRBG","predResist","minEntropy","_reseed","reseedInterval","entropy","entropyEnc","nonce","nonceEnc","pers","persEnc","_hmac","kmac","reseed","addEnc","temp","incr32","chunkNum","EC","getKey","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","keyFromPrivate","toDER","ecSign","dsaSign","keyList","hasProp","hasElementType","Element","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","$$typeof","sum32_4","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","T1","T2","Sha256","Sha224","_f","_g","_h","oldBrowser","safeBuffer","randombytes","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","bignum","MAX_ALLOC","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","ripemd","Sha1","rotl5","_seed_","tags","methods","reverseArgs","useDecoder","contains","_wrap","stateProps","cstate","_useArgs","newKey","_decode","prevObj","present","prevKey","_peekTag","_decodeGeneric","_decodeChoice","_decodeTag","_save","track","_getUse","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","some","_encodeChoice","_encodePrimitive","ck","_ghash","_finID","toPad","ivBits","calcIv","_alen","_authTag","_called","rump","xorTest","ATTRIBUTE_NAMES","BASE","HEAD","REACT_TAG_MAP","VALID_TAG_NAMES","TAG_PROPERTIES","CHARSET","CSS_TEXT","HREF","HTTPEQUIV","INNER_HTML","ITEM_PROP","NAME","PROPERTY","REL","SRC","accesskey","charset","class","contenteditable","contextmenu","itemprop","tabindex","HELMET_PROPS","DEFAULT_TITLE","DEFER","ENCODE_SPECIAL_CHARACTERS","ON_CHANGE_CLIENT_STATE","TITLE_TEMPLATE","HTML_TAG_MAP","SELF_CLOSING_TAGS","HELMET_ATTRIBUTE","PEMEncoder","label","tagClass","0","1","2","3","SHA512","SHA384","PADDING","padBuff","DERDecoder","PEMDecoder","lines","_blockSize","_finalized","prefix","throwIfNotStringOrBuffer","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","EDDSA","pointClass","keyFromSecret","hashInt","s_","makeSignature","SG","normed","xIsOdd","aesModes","desModes","keyLen","ivLen","checkValue","pubkey","ecVerify","unpacked","montp","dsaVerify","padNum","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","ForwardRef","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","getr","prime1","prime2","blinds","blinder","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","rotr32","p32","publicKey","hLen2","dblen","cur","nonZero","readableHwm","readableHighWaterMark","needMoreData","copyFromBufferString","copyFromBuffer","fromListPartial","increasedAwaitDrain","keyBits","used","keyStart","ivStart","localStorage","trace","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","yh","yl","zh","ch64_lo","zl","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","zr","sl","sr","hr","fn1","fn2","fn3","fn4","fn5","ar","br","cr","dr","tl","tr","finalSize","_finalSize","accum","assigned","remainder","lowBits","highBits","algorithms","_hashType","_tag","_signType","_importDER","recoveryParam","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","slen","backHalf","sum32_3","Kh","Ah","Bh","Dh","Eh","rh","sh","Sha384","nh","keyPair","fromPrivate","drbg","ns2","_truncateToN","truncOnly","bkey","ns1","kp","kpX","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Qprime","modeModules","ECB","CFB","CFB8","CFB1","OFB","CTR","GCM","privEnc","pubEnc","reason","derive","requestAnimationFrame","_typeof","_objectAssign2","clock","getTitleFromPropsList","propsList","innermostTitle","getInnermostProperty","innermostTemplate","innermostDefaultTitle","getOnChangeClientState","getAttributesFromPropsList","tagType","tagAttrs","getBaseTagFromPropsList","primaryAttributes","innermostBaseTag","lowerCaseAttributeKey","getTagsFromPropsList","approvedSeenTags","approvedTags","instanceTags","instanceSeenTags","primaryAttributeKey","attributeKey","tagUnion","rafPolyfill","currentTime","cafPolyfill","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","_helmetCallback","commitTagChanges","newState","updateAttributes","updateTitle","tagUpdates","updateTags","addedTags","removedTags","_tagUpdates$tagType","newTags","oldTags","flattenArray","possibleArray","attributes","elementTag","getElementsByTagName","helmetAttributeString","getAttribute","helmetAttributes","attributesToRemove","attributeKeys","attribute","setAttribute","indexToSave","removeAttribute","headElement","querySelector","tagNodes","querySelectorAll","indexToDelete","newElement","styleSheet","createTextNode","existingTag","isEqualNode","parentNode","generateElementAttributesAsString","attr","convertElementAttributestoReactProps","initProps","getMethodsForTag","toComponent","_initProps","attributeString","flattenedTitle","generateTitleAsString","_mappedTag","mappedTag","mappedAttribute","generateTagsAsReactComponent","attributeHtml","tagContent","isSelfClosing","generateTagsAsString","initAttributes","_ref$title","interleave","strings","interpolations","classCallCheck","createClass","possibleConstructorReturn","EMPTY_ARRAY","freeze","EMPTY_OBJECT","getComponentName","isStyledComponent","styledComponentId","SC_ATTR","REACT_APP_SC_ATTR","IS_BROWSER","DISABLE_SPEEDY","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","StyledComponentsError","_Error","SC_COMPONENT_ID","extractComps","maybeCSS","css","existingComponents","componentId","matchIndex","nextComp","cssFromDOM","COMMENT_REGEX","stylisSplitter","cascade","keyframe","compress","semicolon","stylis","parsingRules","returnRulesPlugin","parsedRules","parseRulesPlugin","rule","_componentId","_selector","_selectorRegexp","selfReferenceReplacer","splitByRules","stringifyRules","rules","selector","flatCSS","cssStr","getNonce","addNameForId","names","resetIdNames","hasNameForId","stringifyNames","sheetForTag","sheet","ownerDocument","styleSheets","ownerNode","safeInsertRule","cssRule","maxIndex","cssRules","makeTextMarker","addUpUntilIndex","totalUpToIndex","wrapAsHtmlTag","additionalAttrs","SC_VERSION_ATTR","Boolean","wrapAsElement","getIdsFromMarkersFactory","markers","makeTextNode","targetDocument","makeServerTag","namesArg","markersArg","insertMarker","cssForId","namesClone","cloneNames","markersClone","getIds","insertRules","removeRules","marker","sealed","styleTag","toElement","toHTML","makeTag","tagEl","forceServer","insertBefore","getImportRuleTag","nextSibling","makeStyleTag","extractImport","usedImportRuleTag","importRules","cssRulesSize","mayHaveImport","separator","appendData","newMarker","replaceChild","makeBrowserTag","insertIndex","injectedRules","isConnected","removalIndex","deleteRule","deleteRules","makeSpeedyTag","SPLIT_REGEX","MAX_SIZE","sheetRunningId","master","StyleSheet","importRuleTag","firstTag","tagMap","deferred","rehydratedNames","ignoreRehydratedNames","capacity","clones","rehydrate","els","extracted","isStreamed","nodes","nodesSize","elNames","elNamesSize","textContent","extractedSize","_extracted$i","_j","ids","newTag","sealAllTags","lastEl","getTagForId","hasId","deferredInject","inject","remove","toReactElements","Keyframes","getName","uppercasePattern","msPattern","hyphenateStyleName","isFalsish","objToCssArray","flatten","executionContext","ruleSet","isReactComponent","styles","murmurhash","getAlphabeticChar","generateAlphabeticName","isStaticRules","attrs","hasFunctionObjectKey","_TYPE_STATICS","hasher","ComponentStyle","isStatic","generateAndInjectStyles","lastClassName","generateName","determineTheme","fallbackTheme","isDefaultTheme","theme","escapeRegex","dashesAtEnds","escape","isTag","REACT_STATICS","childContextTypes","contextTypes","getDerivedStateFromProps","KNOWN_STATICS","caller","callee","arity","TYPE_STATICS","defineProperty$1","_Object$getOwnPropert","objectPrototype","arrayPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","ThemeContext","ThemeConsumer","Consumer","StyleSheetContext","ThemeProvider","getContext","renderInner","outerTheme","Provider","getTheme","ServerStyleSheet","masterSheet","seal","collectStyles","StyleSheetManager","getStyleTags","getStyleElement","interleaveWithNodeStream","readableStream","StyleSheetConsumer","identifiers","StyledComponent","renderOuter","forwardedComponent","componentStyle","_props$forwardedCompo","foldedComponentIds","generatedClassName","elementToBeCreated","as","isTargetTag","propsForElement","computedProps","buildExecutionContext","attrDef","resolvedAttrDef","attrDefWasFn","_props$forwardedCompo2","warnTooManyClasses","createStyledComponent","isTargetStyledComp","isClass","_options$displayName","generateDisplayName","_options$componentId","_ComponentStyle","_displayName","parentComponentId","nr","generateId","_options$ParentCompon","ParentComponent","_options$attrs","finalAttrs","WrappedStyledComponent","forwardRef","forwardedRef","withComponent","previousComponentId","optionsToCopy","objectWithoutProperties","newComponentId","_foldedDefaultProps","constructWithOptions","componentConstructor","templateFunction","withConfig","domElement","GlobalStyle","createStyles","removeStyles","renderStyles","scCGSHMRCache","loopCounter","isSurrogatePair","htonl","zero8","safer","Safer","kStringMaxLength","binding","MAX_LENGTH","MAX_STRING_LENGTH","derDecodeTag","oct","tagStr","derDecodeLen","decodedTag","_skipUntilEnd","possibleEnd","numstr","printstr","subident","second","year","mon","day","hour","sec","UTC"],"mappings":"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AC,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,sEAEtsRN,IAAK,CACH/S,IAAK,EACLqT,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,mEAAo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G,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,GAA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","file":"5927687393c85fea881d7e0370438fc647a2b46c-a364ddbe8a7eb089489c.js","sourcesContent":["// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nrequire(\"core-js/modules/es.array.reduce.js\");\n\nvar eos;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\n\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\n\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true; // request.destroy just do .end - .abort is what we want\n\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\n\nfunction call(fn) {\n fn();\n}\n\nfunction pipe(from, to) {\n return from.pipe(to);\n}\n\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\n\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\n\nmodule.exports = pipeline;","module.exports = function () {\n throw new Error('Readable.from is not available in the browser');\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'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;\n\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}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n};\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\n\nmodule.exports = EventEmitter;\nmodule.exports.once = once; // Backwards-compat with node 0.10.x\n\nEventEmitter.EventEmitter = EventEmitter;\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined; // 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.\n\nvar defaultMaxListeners = 10;\n\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}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function get() {\n return defaultMaxListeners;\n },\n set: function set(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\n defaultMaxListeners = arg;\n }\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\n this._maxListeners = this._maxListeners || undefined;\n}; // Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n\n\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\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n\n for (var i = 1; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var doError = type === 'error';\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false; // If there is no 'error' event listener then throw.\n\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n\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 } // At least give some kind of context to the user\n\n\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n if (handler === undefined) return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n\n for (var i = 0; i < len; ++i) {\n ReflectApply(listeners[i], this, args);\n }\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n\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); // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n\n events = target._events;\n }\n\n existing = events[type];\n }\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]; // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n } // Check for listener leak\n\n\n m = _getMaxListeners(target);\n\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true; // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n\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\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n};\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}\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}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n}; // Emits a 'removeListener' event if and only if the listener was removed.\n\n\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\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\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\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\n return this;\n};\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this; // not listening for removeListener, no need to emit\n\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\n return this;\n } // emit removeListener for all listeners on all events\n\n\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\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\n return this;\n};\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}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\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};\n\nEventEmitter.prototype.listenerCount = listenerCount;\n\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n\n for (var i = 0; i < n; ++i) {\n copy[i] = arr[i];\n }\n\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++) {\n list[index] = list[index + 1];\n }\n\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n\n return ret;\n}\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\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n\n resolve([].slice.call(arguments));\n }\n\n ;\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\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\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}","var ciphers = require('./encrypter');\n\nvar deciphers = require('./decrypter');\n\nvar modes = require('./modes/list.json');\n\nfunction getCiphers() {\n return Object.keys(modes);\n}\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;","require(\"core-js/modules/es.typed-array.sort.js\");\n\nvar r;\n\nmodule.exports = function rand(len) {\n if (!r) r = new Rand(null);\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\n\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n}; // Emulate crypto API using randy\n\n\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes) return this.rand.getBytes(n);\n var res = new Uint8Array(n);\n\n for (var i = 0; i < res.length; i++) {\n res[i] = this.rand.getByte();\n }\n\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n }; // Safari's WebWorkers do not have `crypto`\n\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\n if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {}\n}","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\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\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\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\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\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\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\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\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\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\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\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\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\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n 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\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\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; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\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\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\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 } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\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\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\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\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\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n 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 /* jshint maxdepth : false */\n\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\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\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n 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\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\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\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\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 } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n 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\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\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 } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\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\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\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; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\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); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // 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\n\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\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 }; // Unsigned comparison\n\n\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\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\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\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\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\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\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n 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\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n 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\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError = /*#__PURE__*/function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;","module.exports = require('./readable').Transform;","'use strict';\n\nvar inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\n\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n var state = this._reporterState;\n return {\n obj: state.obj,\n pathLen: state.path.length\n };\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};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n var state = this._reporterState;\n state.path = state.path.slice(0, index - 1);\n};\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};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n var state = this._reporterState;\n var prev = state.obj;\n state.obj = {};\n return prev;\n};\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};\n\nReporter.prototype.error = function error(msg) {\n var err;\n var state = this._reporterState;\n var inherited = msg instanceof ReporterError;\n\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function (elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial) throw err;\n if (!inherited) state.errors.push(err);\n return err;\n};\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};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\n\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n\n return this;\n};","'use strict';\n\nvar inherits = require('inherits');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Base = require('cipher-base');\n\nvar ZEROS = Buffer.alloc(128);\nvar blocksize = 64;\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n this._alg = alg;\n this._key = key;\n\n if (key.length > blocksize) {\n key = alg(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = [ipad];\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.push(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash));\n\n return this._alg(Buffer.concat([this._opad, h]));\n};\n\nmodule.exports = Hmac;","// 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.\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\n\nvar inherits = require('inherits');\n\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'); // Backwards-compat with node 0.4.x\n\nStream.Stream = Stream; // 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}\n\nStream.prototype.pipe = function (dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain); // 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\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n dest.end();\n }\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n if (typeof dest.destroy === 'function') dest.destroy();\n } // don't leave dangling pipes when there are errors.\n\n\n function onerror(er) {\n cleanup();\n\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror); // remove all the event listeners that were added.\n\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\n source.on('end', cleanup);\n source.on('close', cleanup);\n dest.on('close', cleanup);\n dest.emit('pipe', source); // Allow for unix-like usage: A.pipe(B).pipe(C)\n\n return dest;\n};","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r) throw new Error(msg || 'Assertion failed: ' + l + ' != ' + r);\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// 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'use strict';\n/**/\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\nvar pna = require('process-nextick-args');\n/**/\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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\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/**/\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/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n/**/\n\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n var isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\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; // cast to ints.\n\n this.highWaterMark = Math.floor(this.highWaterMark); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\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})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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 value(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 realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this); // legacy.\n\n this.writable = true;\n\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\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end'); // TODO: defer error events consistently everywhere, not just the cb\n\n stream.emit('error', er);\n pna.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\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\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\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};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\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};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\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 get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\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\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\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}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\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); // this can emit finish, and it will always happen\n // after error\n\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); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\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\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /**/\n } else {\n afterWrite(stream, state, finished, cb);\n }\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} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\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\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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--; // 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\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\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\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n stream.emit('error', err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\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}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' + alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') + ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;","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');","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};","var md5 = require('create-hash/md5');\n\nvar RIPEMD160 = require('ripemd160');\n\nvar sha = require('sha.js');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar checkParameters = require('./precondition');\n\nvar defaultEncoding = require('./default-encoding');\n\nvar toBuffer = require('./to-buffer');\n\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};\n\nfunction Hmac(alg, key, saltLen) {\n var hash = getDigest(alg);\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n\n if (key.length > blocksize) {\n key = hash(key);\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize);\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg]);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\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}\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};\n\nfunction getDigest(alg) {\n function shaFunc(data) {\n return sha(alg).update(data).digest();\n }\n\n function rmd160Func(data) {\n return new RIPEMD160().update(data).digest();\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func;\n if (alg === 'md5') return md5;\n return shaFunc;\n}\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\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\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2);\n\n for (var k = 0; k < hLen; k++) {\n T[k] ^= U[k];\n }\n }\n\n T.copy(DK, destPos);\n destPos += hLen;\n }\n\n return DK;\n}\n\nmodule.exports = pbkdf2;","var elliptic = require('elliptic');\n\nvar BN = require('bn.js');\n\nmodule.exports = function createECDH(curve) {\n return new ECDH(curve);\n};\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;\n\nfunction ECDH(curve) {\n this.curveType = aliases[curve];\n\n if (!this.curveType) {\n this.curveType = {\n name: curve\n };\n }\n\n this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap\n\n this.keys = void 0;\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair();\n return this.getPublicKey(enc, format);\n};\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8';\n\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc);\n }\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};\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true);\n\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7;\n } else {\n key[0] = 6;\n }\n }\n\n return formatReturnValue(key, enc);\n};\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc);\n};\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this.keys._importPublic(pub);\n\n return this;\n};\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n var _priv = new BN(priv);\n\n _priv = _priv.toString(16);\n this.keys = this.curve.genKeyPair();\n\n this.keys._importPrivate(_priv);\n\n return this;\n};\n\nfunction formatReturnValue(bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray();\n }\n\n var buf = new Buffer(bn);\n\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\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1; // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step); // Compact alternative for `for (var i = 0; i < step; i++)`\n\n var i = step;\n\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''; // More compact than `id.length + 1 === size`\n\n if (id.length === +size) return id;\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// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\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}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\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 get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16); // Use Montgomery, when there is no fast reduction for the prime\n\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves\n\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); // Curve configuration, optional\n\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays\n\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; // Generalized Greg Maxwell's trick\n\n var adjustCount = this.n && this.p.div(this.n);\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}\n\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3; // Translate into more windowed form\n\n var repr = [];\n var j;\n var nafW;\n\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n\n for (var l = j + doubles.step - 1; l >= j; l--) {\n nafW = (nafW << 1) + naf[l];\n }\n\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n\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\n a = a.add(b);\n }\n\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4; // Precompute window\n\n var nafPoints = p._getNAFPoints(w);\n\n w = nafPoints.wnd;\n var wnd = nafPoints.points; // Get NAF form\n\n var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index\n\n var acc = this.jpoint(null, null, null);\n\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--) {\n l++;\n }\n\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\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\n return p.type === 'affine' ? acc.toP() : acc;\n};\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; // Fill all arrays\n\n var max = 0;\n var i;\n var j;\n var p;\n\n for (i = 0; i < len; i++) {\n p = points[i];\n\n var nafPoints = p._getNAFPoints(defW);\n\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n } // Comb small window NAFs\n\n\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n\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\n var comb = [points[a],\n /* 1 */\n null,\n /* 3 */\n null,\n /* 5 */\n points[b]\n /* 7 */\n ]; // Try to avoid Projective points, if possible\n\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\n var index = [-3,\n /* -1 -1 */\n -1,\n /* -1 0 */\n -5,\n /* -1 1 */\n -7,\n /* 0 -1 */\n 0,\n /* 0 0 */\n 7,\n /* 0 1 */\n 5,\n /* 1 -1 */\n 1,\n /* 1 0 */\n 3\n /* 1 1 */\n ];\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\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\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0) zero = false;\n }\n\n if (!zero) break;\n k++;\n i--;\n }\n\n if (i >= 0) k++;\n acc = acc.dblp(k);\n if (i < 0) break;\n\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 } // Zeroify references\n\n\n for (i = 0; i < len; i++) {\n wnd[i] = null;\n }\n\n if (jacobianResult) return acc;else return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\n\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq() {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even\n\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\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\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};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\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};\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};\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\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++) {\n acc = acc.dbl();\n }\n\n doubles.push(acc);\n }\n\n return {\n step: step,\n points: doubles\n };\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\n for (var i = 1; i < max; i++) {\n res[i] = res[i - 1].add(dbl);\n }\n\n return {\n wnd: wnd,\n points: res\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n\n for (var i = 0; i < k; i++) {\n r = r.dbl();\n }\n\n return r;\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar assert = require('minimalistic-assert');\n\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}\n\nexports.BlockHash = BlockHash;\n\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; // Enough data, try updating\n\n if (this.pending.length >= this._delta8) {\n msg = this.pending; // Process pending data in blocks\n\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\n for (var i = 0; i < msg.length; i += this._delta32) {\n this._update(msg, i, i + this._delta32);\n }\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n return this._digest(enc);\n};\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\n for (var i = 1; i < k; i++) {\n res[i] = 0;\n } // Append length\n\n\n len <<= 3;\n\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n\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\n for (t = 8; t < this.padLength; t++) {\n res[i++] = 0;\n }\n }\n\n return res;\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","'use strict';\n\nvar encoders = require('./encoders');\n\nvar decoders = require('./decoders');\n\nvar inherits = require('inherits');\n\nvar api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n var name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n\n inherits(Generated, Base);\n\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der'; // Lazily create decoder\n\n if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der'; // Lazily create encoder\n\n if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc,\n/* internal */\nreporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar React = require('react');\n\nvar React__default = _interopDefault(React);\n\nvar shallowEqual = _interopDefault(require('shallowequal'));\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect = /*#__PURE__*/function (_Component) {\n _inheritsLoose(SideEffect, _Component);\n\n function SideEffect() {\n return _Component.apply(this, arguments) || this;\n } // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n\n\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !shallowEqual(nextProps, this.props);\n };\n\n _proto.componentWillMount = function componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.Component);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;","'use strict';\n\nvar utils = exports;\n\nvar BN = require('bn.js');\n\nvar minAssert = require('minimalistic-assert');\n\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode; // Represent num in a w-NAF form\n\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n var ws = 1 << w + 1;\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n\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\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\n\nutils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form\n\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\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\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\n jsf[0].push(u1);\n var u2;\n\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\n jsf[1].push(u2); // Second phase\n\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\n return jsf;\n}\n\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] : this[key] = computer.call(this);\n };\n}\n\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes;\n}\n\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\n\nutils.intFromLE = intFromLE;","module.exports = require('events').EventEmitter;","// 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// 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'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // 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\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\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 }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\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\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\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};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","var createHash = require('create-hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function (seed, len) {\n var t = Buffer.alloc(0);\n var i = 0;\n var c;\n\n while (t.length < len) {\n c = i2ops(i++);\n t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]);\n }\n\n return t.slice(0, len);\n};\n\nfunction i2ops(c) {\n var out = Buffer.allocUnsafe(4);\n out.writeUInt32BE(c, 0);\n return out;\n}","'use strict';\n\nvar inherits = require('inherits');\n\nvar HashBase = require('hash-base');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar ARRAY16 = new Array(16);\n\nfunction MD5() {\n HashBase.call(this, 64); // state\n\n this._a = 0x67452301;\n this._b = 0xefcdab89;\n this._c = 0x98badcfe;\n this._d = 0x10325476;\n}\n\ninherits(MD5, HashBase);\n\nMD5.prototype._update = function () {\n var M = ARRAY16;\n\n for (var i = 0; i < 16; ++i) {\n M[i] = this._block.readInt32LE(i * 4);\n }\n\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};\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80;\n\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64);\n\n this._update();\n\n this._blockOffset = 0;\n }\n\n this._block.fill(0, this._blockOffset, 56);\n\n this._block.writeUInt32LE(this._length[0], 56);\n\n this._block.writeUInt32LE(this._length[1], 60);\n\n this._update(); // produce result\n\n\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};\n\nfunction rotl(x, n) {\n return x << n | x >>> 32 - n;\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}\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}\n\nfunction fnH(a, b, c, d, m, k, s) {\n return rotl(a + (b ^ c ^ d) + m + k | 0, s) + b | 0;\n}\n\nfunction fnI(a, b, c, d, m, k, s) {\n return rotl(a + (c ^ (b | ~d)) + m + k | 0, s) + b | 0;\n}\n\nmodule.exports = MD5;","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;","import memoize from '@emotion/memoize';\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\nexport default index;","var generatePrime = require('./lib/generatePrime');\n\nvar primes = require('./lib/primes.json');\n\nvar DH = require('./lib/dh');\n\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}\n\nvar ENCODINGS = {\n 'binary': true,\n 'hex': true,\n 'base64': true\n};\n\nfunction createDiffieHellman(prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator);\n }\n\n enc = enc || 'binary';\n genc = genc || 'binary';\n generator = generator || new Buffer([2]);\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc);\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true);\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc);\n }\n\n return new DH(prime, generator, true);\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman;\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman;","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\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\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\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\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\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\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\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\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\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\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\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\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\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n 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\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\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; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\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\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\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 } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\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\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\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\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\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n 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 /* jshint maxdepth : false */\n\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\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\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n 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\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\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\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\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 } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n 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\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\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 } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\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\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\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; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\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); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // 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\n\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\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 }; // Unsigned comparison\n\n\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\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\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\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\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\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\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n 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\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n 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\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block);\n};\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block);\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n this.type = this.options.type;\n this.blockSize = 8;\n\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\n\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {// Might be overrided\n};\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};\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\n for (var i = 0; i < min; i++) {\n this.buffer[this.bufferOff + i] = data[off + i];\n }\n\n this.bufferOff += min; // Shift next\n\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n\n this.bufferOff = 0;\n return this.blockSize;\n};\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\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff);\n } // Write blocks\n\n\n var max = data.length - (data.length - inputOff) % this.blockSize;\n\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n\n outputOff += this.blockSize;\n } // Queue rest\n\n\n for (; inputOff < data.length; inputOff++, this.bufferOff++) {\n this.buffer[this.bufferOff] = data[inputOff];\n }\n\n return out;\n};\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); // TODO(indutny): optimize it, this is far from optimal\n\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n } // Buffer rest of the input\n\n\n inputOff += this._buffer(data, inputOff);\n return out;\n};\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};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0) return false;\n\n while (off < buffer.length) {\n buffer[off++] = 0;\n }\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff)) return [];\n var out = new Array(this.blockSize);\n\n this._update(this.buffer, 0, out, 0);\n\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\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\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};","import React from \"react\";\r\nimport { Link, withPrefix } from \"gatsby\";\r\nimport styled from \"styled-components\";\r\n\r\nconst NavWrapper = styled.nav`\r\n\tli:not(:last-child) {\r\n\t\tborder-right: 1px solid #ccc;\r\n\t}\r\n\r\n\t.bg-dark:focus {\r\n\t\tcolor: #fff !important;\r\n\t}\r\n`;\r\n\r\nconst strippedPath = path =>\r\n\tpath.replace(withPrefix(\"/\"), \"\").replace(/\\//g, \"\");\r\n\r\nconst NavLinkItem = ({ item, location }) => {\r\n\treturn (\r\n\t\t
  • \r\n\t\t\t\r\n\t\t\t\t{item.displayText}\r\n\t\t\t\r\n\t\t
  • \r\n\t);\r\n};\r\n\r\nconst MainNav = ({ menuItems, location, siteTitle }) => {\r\n\treturn (\r\n\t\t\r\n\t\t\t

    \r\n\t\t\t\tRedistricting site navigation\r\n\t\t\t

    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{siteTitle}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\t{menuItems.map((item, i) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default MainNav;\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nconst ToggleButton = styled.button`\r\n\tz-index: 100000;\r\n\t:focus {\r\n\t\tborder: 1px solid #007bff;\r\n\t}\r\n`;\r\n\r\nconst TreeViewHeader = ({\r\n\tpageName,\r\n\tisSidebarVisible,\r\n\tsetIsSidebarVisible,\r\n\ttocHeadingId,\r\n}) => (\r\n\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t\t\t
    What’s on This Page
    \r\n\t\t\t\t
    {pageName}
    \r\n\t\t\t\r\n\t\t
    \r\n\t\t {\r\n\t\t\t\tsetIsSidebarVisible(!isSidebarVisible);\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t\r\n\t\t\r\n\t\r\n);\r\n\r\nexport default TreeViewHeader;\r\n","import React, { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nconst NodeWrapper = styled.li`\r\n\tpadding: 0;\r\n\tmargin: 0;\r\n\r\n\ta.tree-node-link {\r\n\t\tz-index: 100000;\r\n\t}\r\n\r\n\tul,\r\n\tli,\r\n\tbutton {\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t}\r\n\r\n\tbutton i {\r\n\t\ttransition: transform 100ms ease;\r\n\t\tmargin: 0;\r\n\t}\r\n\r\n\tbutton.node-icon-rotate > i {\r\n\t\ttransform: rotate(180deg);\r\n\t\ttransform-origin: center;\r\n\t}\r\n\r\n\tbutton:focus {\r\n\t\tborder: 1px solid #fff;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\r\n\ta:focus {\r\n\t\tborder: 1px solid #fff;\r\n\t\toutline: none;\r\n\t}\r\n`;\r\n\r\nconst RenderNode = ({\r\n\thasChildren,\r\n\tisExpanded,\r\n\tskipChildren,\r\n\trootNode,\r\n\tsetIsExpanded,\r\n\tonNodeClick,\r\n\tnodeDepth,\r\n}) => {\r\n\tconst ariaExpanded = hasChildren ? { \"aria-expanded\": isExpanded } : {};\r\n\tconst iconName = hasChildren ? \"ChevronUpSmall\" : \"Link\";\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t setIsExpanded(isExpanded => !isExpanded)}\r\n\t\t\t\ttabIndex={!hasChildren || skipChildren ? -1 : null}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t onNodeClick(rootNode, e)}\r\n\t\t\t\tclassName=\"text-light text-wrap tree-node-link\"\r\n\t\t\t\thref={`#${rootNode.id}`}\r\n\t\t\t>\r\n\t\t\t\t{rootNode.text}\r\n\t\t\t\r\n\t\t
    \r\n\t);\r\n};\r\n\r\nconst Tree = ({ rootNode, skipChildren, onNodeClick, nodeDepth }) => {\r\n\tconst [isExpanded, setIsExpanded] = useState(\r\n\t\t!skipChildren && rootNode.expanded\r\n\t);\r\n\tconst hasChildren = rootNode.childNodes && rootNode.childNodes.length > 0;\r\n\tnodeDepth = nodeDepth || 0;\r\n\r\n\tconst childListStyle = {\r\n\t\theight: isExpanded && rootNode.childNodes ? null : \"0px\",\r\n\t\toverflow: \"hidden\",\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t setIsExpanded(val)}\r\n\t\t\t\tonNodeClick={onNodeClick}\r\n\t\t\t\tnodeDepth={nodeDepth}\r\n\t\t\t/>\r\n\t\t\t{hasChildren ? (\r\n\t\t\t\t\r\n\t\t\t\t\t{rootNode.childNodes.map(node => (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t))}\r\n\t\t\t\t\r\n\t\t\t) : null}\r\n\t\t\r\n\t);\r\n};\r\n\r\nconst RecursivelyRenderTreeNode = ({\r\n\tnode,\r\n\tskipChildren,\r\n\tonNodeClick,\r\n\tnodeDepth,\r\n}) => (\r\n\t\r\n);\r\n\r\nconst RenderTreeView = ({ data, treeLabelId, onNodeClick }) => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{data.map ? (\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{data.map(node =>\r\n\t\t\t\t\t\t\tnode.id !== treeLabelId ? (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t) : null\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t) : null}\r\n\t\t\r\n\t);\r\n};\r\n\r\nexport default RenderTreeView;\r\n","import React, { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport \"office-ui-fabric-core/dist/css/fabric.css\";\r\nimport TreeViewHeader from \"./TreeViewHeader\";\r\nimport RenderTreeView from \"./RenderTreeView\";\r\nimport { usePageHeadingsTree } from \"use-page-headings-tree\";\r\n\r\nconst TocHeadingId = \"__TOC-Component-toc-heading\";\r\n\r\nconst SidebarRoot = styled.div`\r\n\tposition: relative;\r\n\tmin-height: 100%;\r\n\theight: 100%;\r\n\t@media all and (-ms-high-contrast: none) {\r\n\t\tposition: fixed;\r\n\t\ttop: 230px;\r\n\t}\r\n\r\n\th2 {\r\n\t\tfont-size: 1em;\r\n\t\tvertical-align: middle;\r\n\t}\r\n\r\n\th2 .page-name {\r\n\t\tfont-size: 0.9em;\r\n\t\tcolor: #555;\r\n\t}\r\n\r\n\t.animate-width {\r\n\t\ttransition: width 500ms ease-out;\r\n\t}\r\n\r\n\t.show {\r\n\t\topacity: 1;\r\n\t\ttransition: opacity 300ms ease;\r\n\t\ttransition-delay: 150ms;\r\n\t}\r\n\r\n\t.hide {\r\n\t\topacity: 0;\r\n\t\tpointer-events: none;\r\n\t}\r\n\r\n\t.nav-icon {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 1.2em;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\r\n\t.toc-sidebar-container {\r\n\t\tposition: absolute;\r\n\t\ttop: 20px;\r\n\t\tleft: 0;\r\n\t\topacity: 1;\r\n\t\tmin-height: 100%;\r\n\t\theight: 100%;\r\n\t}\r\n\r\n\t.toc-sidebar {\r\n\t\tposition: sticky;\r\n\t\ttop: 5px;\r\n\t\topacity: 1;\r\n\t\tmargin-bottom: 38px;\r\n\t}\r\n\r\n\t.tree-view-container {\r\n\t\toverflow: auto;\r\n\t}\r\n\r\n\ta {\r\n\t\tfont-weight: 400 !important;\r\n\t}\r\n`;\r\n\r\n// eslint-disable-next-line react/display-name\r\nconst TOC = React.memo(\r\n\t({\r\n\t\tisVisible,\r\n\t\tpageName,\r\n\t\tcollapsedWidth,\r\n\t\texpandedWidth,\r\n\t\tonToggling,\r\n\t\theadingNodes,\r\n\t\tshouldDefaultToExpand,\r\n\t\tlocation,\r\n\t}) => {\r\n\t\tconst [headings, setHeadings] = useState([]);\r\n\r\n\t\tconst sidebarWidth = isVisible ? expandedWidth : collapsedWidth;\r\n\r\n\t\tconst updateToggle = val => {\r\n\t\t\tif (onToggling) onToggling(val);\r\n\t\t};\r\n\r\n\t\tconst handleNodeClick = (node, e) => {\r\n\t\t\tupdateToggle(window.innerWidth > 1199);\r\n\t\t};\r\n\r\n\t\tusePageHeadingsTree(headingNodes, setHeadings, shouldDefaultToExpand);\r\n\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t},\r\n\t(prev, next) =>\r\n\t\tprev.isVisible === next.isVisible &&\r\n\t\tprev.headingNodes.length === next.headingNodes.length &&\r\n\t\tprev.location.pathname === next.location.pathname &&\r\n\t\tprev.headingNodes.length > 0 &&\r\n\t\tprev.headingNodes[prev.headingNodes.length - 1].id ===\r\n\t\t\tnext.headingNodes[next.headingNodes.length - 1].id\r\n);\r\n\r\nexport default TOC;\r\n","import TOC from \"./TOC\";\r\nexport default TOC;\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { useStaticQuery, graphql } from \"gatsby\";\r\nimport styled from \"styled-components\";\r\n\r\nimport { generate as genId } from \"shortid\";\r\n\r\nimport { WrapPageContext } from \"./ContextWrapper\";\r\nimport MainNav from \"./MainNav\";\r\nimport TOC from \"@components/TOC\";\r\n\r\nconst PageWrapper = styled.div`\r\n\ta {\r\n\t\tcolor: #006adb;\r\n\t\tfont-weight: 600;\r\n\t}\r\n\r\n\ta:focus {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\r\n\twidth: 100%;\r\n`;\r\n\r\nconst ContentWrapper = styled.div`\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n\tpadding: 0 1.2em 0 0;\r\n\tmin-height: 1300px;\r\n\toverflow-x: hidden;\r\n\r\n\th1 {\r\n\t\ttext-align: center;\r\n\t\tmargin: 1.4em 0 0.8em 0;\r\n\t\tborder-bottom: 1px solid #ccc;\r\n\t\tpadding: 0 0 0.4em 0;\r\n\t}\r\n\r\n\th2 {\r\n\t\ttext-align: center;\r\n\t\tmargin: 1em 0 1.2em 0;\r\n\t}\r\n\r\n\th3 {\r\n\t\tmargin: 1em 0 1.2em 0;\r\n\t}\r\n\r\n\tp {\r\n\t\tfont-size: 1.2em;\r\n\t}\r\n`;\r\n\r\nconst TOCWrapper = styled.div`\r\n\tz-index: 90001;\r\n\tmin-height: 100%;\r\n\twidth: ${({ mobileWidth }) => mobileWidth};\r\n\r\n\t@media (min-width: 1200px) {\r\n\t\twidth: ${({ width }) => width};\r\n\t}\r\n`;\r\n\r\nconst Layout = ({ children, location, rewriteNavPaths }) => {\r\n\tconst { site, header, footer, siteConfigJson } = useStaticQuery(graphql`\r\n\t\t{\r\n\t\t\tsite {\r\n\t\t\t\tsiteMetadata {\r\n\t\t\t\t\ttitle\r\n\t\t\t\t\tdescription\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\theader {\r\n\t\t\t\thtml\r\n\t\t\t}\r\n\t\t\tfooter {\r\n\t\t\t\thtml\r\n\t\t\t}\r\n\t\t\tsiteConfigJson {\r\n\t\t\t\tnav {\r\n\t\t\t\t\titems {\r\n\t\t\t\t\t\tdisplayText\r\n\t\t\t\t\t\turl\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t`);\r\n\r\n\tconst { isTocVisible, setIsTocVisible, headingNodes } = useContext(\r\n\t\tWrapPageContext\r\n\t);\r\n\r\n\tconst navItems = siteConfigJson.nav.items.map(item => ({\r\n\t\tid: genId(),\r\n\t\turl: rewriteNavPaths ? rewriteNavPaths(item.url) : item.url,\r\n\t\tdisplayText: item.displayText,\r\n\t}));\r\n\r\n\tconst currentNavItem = navItems.find(\r\n\t\titem => item.url === location.pathname\r\n\t);\r\n\r\n\tconst TOCHeader = currentNavItem ? currentNavItem.displayText : null;\r\n\r\n\tuseEffect(() => {\r\n\t\tconst focusEl = document.getElementById(location.hash);\r\n\t\tif (focusEl && focusEl.tabIndex) {\r\n\t\t\tfocusEl.focus();\r\n\t\t}\r\n\t}, [location.hash]);\r\n\r\n\treturn (\r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    {children}
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t);\r\n};\r\n\r\nexport default Layout;\r\n","'use strict';\n\nvar constants = exports; // Helper\n\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};\n\nconstants.der = require('./der');","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA256 = require('./256');\n\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}\n\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\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 ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\n\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\n\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n\n return Math.floor(hwm);\n } // Default value\n\n\n return state.objectMode ? 16 : 16 * 1024;\n}\n\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\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}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\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\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\n};","'use strict';\n\nvar alphabet = require('./alphabet');\n\nvar build = require('./build');\n\nvar isValid = require('./is-valid'); // if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\n\n\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\n\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\n\n\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\n\n\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n/**\n * Generate unique id\n * Returns string id\n */\n\n\nfunction generate() {\n return build(clusterWorkerId);\n} // Export all other functions as properties of the generate function\n\n\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;","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};","/*\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 */\nvar inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0];\nvar W = new Array(80);\n\nfunction Sha() {\n this.init();\n this._w = W;\n Hash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\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};\n\nfunction rotl5(num) {\n return num << 5 | num >>> 27;\n}\n\nfunction rotl30(num) {\n return num << 30 | num >>> 2;\n}\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}\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\n for (var i = 0; i < 16; ++i) {\n W[i] = M.readInt32BE(i * 4);\n }\n\n for (; i < 80; ++i) {\n W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n }\n\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\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};\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};\n\nmodule.exports = Sha;","'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function randomByte(size) {\n var bytes = [];\n\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n\n return bytes;\n };\n} else {\n randomByte = function randomByte(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;","module.exports = require('./lib/_stream_duplex.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// 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'use strict';\n\nmodule.exports = Transform;\n\nvar _require$codes = require('../errors').codes,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\n\nvar Duplex = require('./_stream_duplex');\n\nrequire('inherits')(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // 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\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\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 }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\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\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n\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};\n\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}","var aes = require('./aes');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar Transform = require('cipher-base');\n\nvar inherits = require('inherits');\n\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}\n\ninherits(StreamCipher, Transform);\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt);\n};\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub();\n};\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\nrequire('inherits')(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\n\nvar curve = require('./curve');\n\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\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}\n\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function get() {\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}\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', // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658']\n});\nvar pre;\n\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\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});","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n this.iv = new Array(8);\n\n for (var i = 0; i < this.iv.length; i++) {\n this.iv[i] = iv[i];\n }\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n\n this._cbcInit();\n }\n\n inherits(CBC, Base);\n var keys = Object.keys(proto);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\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\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] ^= inp[inOff + i];\n }\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = out[outOff + i];\n }\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++) {\n out[outOff + i] ^= iv[i];\n }\n\n for (var i = 0; i < this.blockSize; i++) {\n iv[i] = inp[inOff + i];\n }\n }\n};","var parseKeys = require('parse-asn1');\n\nvar mgf = require('./mgf');\n\nvar xor = require('./xor');\n\nvar BN = require('bn.js');\n\nvar crt = require('browserify-rsa');\n\nvar createHash = require('create-hash');\n\nvar withPublic = require('./withPublic');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function privateDecrypt(privateKey, enc, reverse) {\n var padding;\n\n if (privateKey.padding) {\n padding = privateKey.padding;\n } else if (reverse) {\n padding = 1;\n } else {\n padding = 4;\n }\n\n var key = parseKeys(privateKey);\n var k = key.modulus.byteLength();\n\n if (enc.length > k || new BN(enc).cmp(key.modulus) >= 0) {\n throw new Error('decryption error');\n }\n\n var msg;\n\n if (reverse) {\n msg = withPublic(new BN(enc), key);\n } else {\n msg = crt(enc, key);\n }\n\n var zBuffer = Buffer.alloc(k - msg.length);\n msg = Buffer.concat([zBuffer, msg], k);\n\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};\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\n if (msg[0] !== 0) {\n throw new Error('decryption error');\n }\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\n if (compare(iHash, db.slice(0, hLen))) {\n throw new Error('decryption error');\n }\n\n var i = hLen;\n\n while (db[i] === 0) {\n i++;\n }\n\n if (db[i++] !== 1) {\n throw new Error('decryption error');\n }\n\n return db.slice(i);\n}\n\nfunction pkcs1(key, msg, reverse) {\n var p1 = msg.slice(0, 2);\n var i = 2;\n var status = 0;\n\n while (msg[i++] !== 0) {\n if (i >= msg.length) {\n status++;\n break;\n }\n }\n\n var ps = msg.slice(2, i - 1);\n\n if (p1.toString('hex') !== '0002' && !reverse || p1.toString('hex') !== '0001' && reverse) {\n status++;\n }\n\n if (ps.length < 8) {\n status++;\n }\n\n if (status) {\n throw new Error('decryption error');\n }\n\n return msg.slice(i);\n}\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\n if (a.length !== b.length) {\n dif++;\n len = Math.min(a.length, b.length);\n }\n\n var i = -1;\n\n while (++i < len) {\n dif += a[i] ^ b[i];\n }\n\n return dif;\n}","'use strict';\n\nvar utils = require('../utils');\n\nvar common = require('../common');\n\nvar shaCommon = require('./common');\n\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];\n\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}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++) {\n W[i] = msg[start + i];\n }\n\n for (; i < W.length; i++) {\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n }\n\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\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\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};\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};","/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\nfunction getType(payload) {\n return Object.prototype.toString.call(payload).slice(8, -1);\n}\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\n\n\nfunction isUndefined(payload) {\n return getType(payload) === 'Undefined';\n}\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\n\n\nfunction isNull(payload) {\n return getType(payload) === 'Null';\n}\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Record}\r\n */\n\n\nfunction isPlainObject(payload) {\n if (getType(payload) !== 'Object') return false;\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\n}\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Record}\r\n */\n\n\nfunction isObject(payload) {\n return isPlainObject(payload);\n}\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\n\n\nfunction isEmptyObject(payload) {\n return isPlainObject(payload) && Object.keys(payload).length === 0;\n}\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Record}\r\n */\n\n\nfunction isAnyObject(payload) {\n return getType(payload) === 'Object';\n}\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\n\n\nfunction isObjectLike(payload) {\n return isAnyObject(payload);\n}\n/**\r\n * Returns whether the payload is a function\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\n\n\nfunction isFunction(payload) {\n return getType(payload) === 'Function';\n}\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\n\n\nfunction isArray(payload) {\n return getType(payload) === 'Array';\n}\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\n\n\nfunction isEmptyArray(payload) {\n return isArray(payload) && payload.length === 0;\n}\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\n\n\nfunction isString(payload) {\n return getType(payload) === 'String';\n}\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\n\n\nfunction isFullString(payload) {\n return isString(payload) && payload !== '';\n}\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\n\n\nfunction isEmptyString(payload) {\n return payload === '';\n}\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\n\n\nfunction isNumber(payload) {\n return getType(payload) === 'Number' && !isNaN(payload);\n}\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\n\n\nfunction isBoolean(payload) {\n return getType(payload) === 'Boolean';\n}\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\n\n\nfunction isRegExp(payload) {\n return getType(payload) === 'RegExp';\n}\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\n\n\nfunction isMap(payload) {\n return getType(payload) === 'Map';\n}\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\n\n\nfunction isWeakMap(payload) {\n return getType(payload) === 'WeakMap';\n}\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\n\n\nfunction isSet(payload) {\n return getType(payload) === 'Set';\n}\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\n\n\nfunction isWeakSet(payload) {\n return getType(payload) === 'WeakSet';\n}\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\n\n\nfunction isSymbol(payload) {\n return getType(payload) === 'Symbol';\n}\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\n\n\nfunction isDate(payload) {\n return getType(payload) === 'Date' && !isNaN(payload);\n}\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\n\n\nfunction isBlob(payload) {\n return getType(payload) === 'Blob';\n}\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\n\n\nfunction isFile(payload) {\n return getType(payload) === 'File';\n}\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\n\n\nfunction isPromise(payload) {\n return getType(payload) === 'Promise';\n}\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\n\n\nfunction isError(payload) {\n return getType(payload) === 'Error';\n}\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\n\n\nfunction isNaNValue(payload) {\n return getType(payload) === 'Number' && isNaN(payload);\n}\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\n\n\nfunction isPrimitive(payload) {\n return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);\n}\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\n\n\nfunction isNullOrUndefined(payload) {\n return isNull(payload) || isUndefined(payload);\n}\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\n\n\nfunction isType(payload, type) {\n if (!(type instanceof Function)) {\n throw new TypeError('Type must be a function');\n }\n\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\n throw new TypeError('Type is not a class');\n } // Classes usually have names (as functions usually have names)\n\n\n var name = type.name;\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };","import \"core-js/modules/es.array.reduce.js\";\nimport { isPlainObject, isArray, isSymbol } from 'is-what';\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\n\nfunction assignProp(carry, key, newVal, originalObject) {\n var propType = originalObject.propertyIsEnumerable(key) ? 'enumerable' : 'nonenumerable';\n if (propType === 'enumerable') carry[key] = newVal;\n\n if (propType === 'nonenumerable') {\n Object.defineProperty(carry, key, {\n value: newVal,\n enumerable: false,\n writable: true,\n configurable: true\n });\n }\n}\n\nfunction mergeRecursively(origin, newComer, extensions) {\n // work directly on newComer if its not an object\n if (!isPlainObject(newComer)) {\n // extend merge rules\n if (extensions && isArray(extensions)) {\n extensions.forEach(function (extend) {\n newComer = extend(origin, newComer);\n });\n }\n\n return newComer;\n } // define newObject to merge all values upon\n\n\n var newObject = {};\n\n if (isPlainObject(origin)) {\n var props_1 = Object.getOwnPropertyNames(origin);\n var symbols_1 = Object.getOwnPropertySymbols(origin);\n newObject = __spreadArrays(props_1, symbols_1).reduce(function (carry, key) {\n // @ts-ignore\n var targetVal = origin[key];\n\n if (!isSymbol(key) && !Object.getOwnPropertyNames(newComer).includes(key) || isSymbol(key) && !Object.getOwnPropertySymbols(newComer).includes(key)) {\n assignProp(carry, key, targetVal, origin);\n }\n\n return carry;\n }, {});\n }\n\n var props = Object.getOwnPropertyNames(newComer);\n var symbols = Object.getOwnPropertySymbols(newComer);\n\n var result = __spreadArrays(props, symbols).reduce(function (carry, key) {\n // re-define the origin and newComer as targetVal and newVal\n var newVal = newComer[key];\n var targetVal = isPlainObject(origin) ? origin[key] : undefined; // extend merge rules\n\n if (extensions && isArray(extensions)) {\n extensions.forEach(function (extend) {\n newVal = extend(targetVal, newVal);\n });\n } // When newVal is an object do the merge recursively\n\n\n if (targetVal !== undefined && isPlainObject(newVal)) {\n newVal = mergeRecursively(targetVal, newVal, extensions);\n }\n\n assignProp(carry, key, newVal, newComer);\n return carry;\n }, newObject);\n\n return result;\n}\n/**\r\n * Merge anything recursively.\r\n * Objects get merged, special objects (classes etc.) are re-assigned \"as is\".\r\n * Basic types overwrite objects or other basic types.\r\n *\r\n * @param {(IConfig | any)} origin\r\n * @param {...any[]} newComers\r\n * @returns the result\r\n */\n\n\nfunction merge(origin) {\n var newComers = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n newComers[_i - 1] = arguments[_i];\n }\n\n var extensions = null;\n var base = origin;\n\n if (isPlainObject(origin) && origin.extensions && Object.keys(origin).length === 1) {\n base = {};\n extensions = origin.extensions;\n }\n\n return newComers.reduce(function (result, newComer) {\n return mergeRecursively(result, newComer, extensions);\n }, base);\n}\n\nfunction concatArrays(originVal, newVal) {\n if (isArray(originVal) && isArray(newVal)) {\n // concat logic\n return originVal.concat(newVal);\n }\n\n return newVal; // always return newVal as fallback!!\n}\n\nexport default merge;\nexport { concatArrays, merge };","module.exports = require('./browser/algorithms.json');","'use strict'; // limit of Crypto.getRandomValues()\n// https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n\nvar MAX_BYTES = 65536; // Node supports requesting up to this number of bytes\n// https://github.com/nodejs/node/blob/master/lib/internal/crypto/random.js#L48\n\nvar MAX_UINT32 = 4294967295;\n\nfunction oldBrowser() {\n throw new Error('Secure random number generation is not supported by this browser.\\nUse Chrome, Firefox or Internet Explorer 11');\n}\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar crypto = global.crypto || global.msCrypto;\n\nif (crypto && crypto.getRandomValues) {\n module.exports = randomBytes;\n} else {\n module.exports = oldBrowser;\n}\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\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\n if (typeof cb === 'function') {\n return process.nextTick(function () {\n cb(null, bytes);\n });\n }\n\n return bytes;\n}","'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');","// 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// 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'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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 value(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 realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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 // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\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\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\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 get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\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\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\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) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\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} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\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\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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--; // 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\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\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\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\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 get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","'use strict';\n\nvar inherits = require('inherits');\n\nvar Legacy = require('./legacy');\n\nvar Base = require('cipher-base');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar md5 = require('create-hash/md5');\n\nvar RIPEMD160 = require('ripemd160');\n\nvar sha = require('sha.js');\n\nvar ZEROS = Buffer.alloc(128);\n\nfunction Hmac(alg, key) {\n Base.call(this, 'digest');\n\n if (typeof key === 'string') {\n key = Buffer.from(key);\n }\n\n var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64;\n this._alg = alg;\n this._key = key;\n\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\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize);\n var opad = this._opad = Buffer.allocUnsafe(blocksize);\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36;\n opad[i] = key[i] ^ 0x5C;\n }\n\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg);\n\n this._hash.update(ipad);\n}\n\ninherits(Hmac, Base);\n\nHmac.prototype._update = function (data) {\n this._hash.update(data);\n};\n\nHmac.prototype._final = function () {\n var h = this._hash.digest();\n\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg);\n return hash.update(this._opad).update(h).digest();\n};\n\nmodule.exports = function createHmac(alg, key) {\n alg = alg.toLowerCase();\n\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key);\n }\n\n if (alg === 'md5') {\n return new Legacy(md5, key);\n }\n\n return new Hmac(alg, key);\n};","//\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB); // Test for A's keys different from B.\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || ret === void 0 && valueA !== valueB) {\n return false;\n }\n }\n\n return true;\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\n\nvar DES = require('./des');\n\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\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}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\n\ninherits(EDE, Cipher);\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n\n state.ciphers[1]._update(out, outOff, out, outOff);\n\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;","'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\nexports.byteLength = byteLength;\nexports.toByteArray = toByteArray;\nexports.fromByteArray = fromByteArray;\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n} // Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\n\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens(b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4');\n } // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n\n\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} // base64 is 4/3 + up to two characters of the original data\n\n\nfunction byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n}\n\nfunction toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars\n\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n\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\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 0xFF;\n }\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\n return arr;\n}\n\nfunction tripletToBase64(num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];\n}\n\nfunction encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n\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\n return output.join('');\n}\n\nfunction fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n // go through the array every three bytes, we'll deal with trailing stuff later\n\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 } // pad the end with zeros, but make sure to not forget the extra bytes\n\n\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\n return parts.join('');\n}","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n/* eslint-disable no-proto */\n'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\nvar base64 = require('base64-js');\n\nvar ieee754 = require('ieee754');\n\nvar isArray = require('isarray');\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\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 */\n\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();\n/*\n * Export kMaxLength after typed array support is determined.\n */\n\nexports.kMaxLength = kMaxLength();\n\nfunction typedArraySupport() {\n try {\n var arr = new Uint8Array(1);\n arr.__proto__ = {\n __proto__: Uint8Array.prototype,\n foo: function foo() {\n return 42;\n }\n };\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`\n } catch (e) {\n return false;\n }\n}\n\nfunction kMaxLength() {\n return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;\n}\n\nfunction createBuffer(that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length');\n }\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\n that.length = length;\n }\n\n return that;\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\n\nfunction Buffer(arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length);\n } // Common case.\n\n\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\n return allocUnsafe(this, arg);\n }\n\n return from(this, arg, encodingOrOffset, length);\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n// TODO: Legacy, not needed anymore. Remove in next major version.\n\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr;\n};\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\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length);\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset);\n }\n\n return fromObject(that, value);\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 **/\n\n\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length);\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n\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}\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}\n\nfunction alloc(that, size, fill, encoding) {\n assertSize(size);\n\n if (size <= 0) {\n return createBuffer(that, size);\n }\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\n return createBuffer(that, size);\n}\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n\n\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding);\n};\n\nfunction allocUnsafe(that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n\n return that;\n}\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n\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 */\n\n\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size);\n};\n\nfunction fromString(that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding');\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n var actual = that.write(string, encoding);\n\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\n return that;\n}\n\nfunction fromArrayLike(that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n\n return that;\n}\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\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\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\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\n return that;\n}\n\nfunction fromObject(that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that;\n }\n\n obj.copy(that, 0, 0, len);\n return that;\n }\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\n return fromArrayLike(that, obj);\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');\n}\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\n return length | 0;\n}\n\nfunction SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n\n return Buffer.alloc(+length);\n}\n\nBuffer.isBuffer = function isBuffer(b) {\n return !!(b != null && b._isBuffer);\n};\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\n if (a === b) return 0;\n var x = a.length;\n var y = b.length;\n\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\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n};\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\n default:\n return false;\n }\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\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n\n var i;\n\n if (length === undefined) {\n length = 0;\n\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers');\n }\n\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n\n return buffer;\n};\n\nfunction byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength;\n }\n\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0; // Use a for loop to avoid recursion\n\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len;\n\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length;\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2;\n\n case 'hex':\n return len >>> 1;\n\n case 'base64':\n return base64ToBytes(string).length;\n\n default:\n if (loweredCase) return utf8ToBytes(string).length; // assume utf8\n\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\n\nBuffer.byteLength = byteLength;\n\nfunction slowToString(encoding, start, end) {\n var loweredCase = false; // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\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\n if (start === undefined || start < 0) {\n start = 0;\n } // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n\n\n if (start > this.length) {\n return '';\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return '';\n } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n\n\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return '';\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end);\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end);\n\n case 'ascii':\n return asciiSlice(this, start, end);\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end);\n\n case 'base64':\n return base64Slice(this, start, end);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\n\n\nBuffer.prototype._isBuffer = true;\n\nfunction swap(b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16() {\n var len = this.length;\n\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits');\n }\n\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n\n return this;\n};\n\nBuffer.prototype.swap32 = function swap32() {\n var len = this.length;\n\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits');\n }\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\n return this;\n};\n\nBuffer.prototype.swap64 = function swap64() {\n var len = this.length;\n\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits');\n }\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\n return this;\n};\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};\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};\n\nBuffer.prototype.inspect = function inspect() {\n var str = '';\n var max = exports.INSPECT_MAX_BYTES;\n\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n\n return '';\n};\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\n if (start === undefined) {\n start = 0;\n }\n\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n\n if (thisStart === undefined) {\n thisStart = 0;\n }\n\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index');\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n\n if (thisStart >= thisEnd) {\n return -1;\n }\n\n if (start >= end) {\n return 1;\n }\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\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\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\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\n\n\nfunction bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1; // Normalize byteOffset\n\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\n byteOffset = +byteOffset; // Coerce to Number.\n\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 } // Normalize byteOffset: negative offsets start from the end of the buffer\n\n\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\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 } // Normalize val\n\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n } // Finally, search either indexOf (if dir is true) or lastIndexOf\n\n\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\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\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\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n\n throw new TypeError('val must be string, number or Buffer');\n}\n\nfunction arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n\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\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\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\n var i;\n\n if (dir) {\n var foundIndex = -1;\n\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\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n\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\n if (found) return i;\n }\n }\n\n return -1;\n}\n\nBuffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n};\n\nBuffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n};\n\nfunction hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n\n if (length > remaining) {\n length = remaining;\n }\n } // must be an even number of digits\n\n\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\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\n return i;\n}\n\nfunction utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n}\n\nfunction asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n}\n\nfunction latin1Write(buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length);\n}\n\nfunction base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n}\n\nfunction ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n}\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; // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0; // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n } // legacy write(string, encoding, offset, length) - remove in v0.13\n\n } else {\n throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds');\n }\n\n if (!encoding) encoding = 'utf8';\n var loweredCase = false;\n\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length);\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length);\n\n case 'ascii':\n return asciiWrite(this, string, offset, length);\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length);\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length);\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\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};\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}\n\nfunction utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n var i = start;\n\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\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n\n break;\n\n case 2:\n secondByte = buf[i + 1];\n\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;\n\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;\n\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n\n break;\n\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n\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\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\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\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res);\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\n\n\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray(codePoints) {\n var len = codePoints.length;\n\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n } // Decode in chunks to avoid \"call stack size exceeded\".\n\n\n var res = '';\n var i = 0;\n\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n\n return res;\n}\n\nfunction asciiSlice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n\n return ret;\n}\n\nfunction latin1Slice(buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n\n return ret;\n}\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\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n\n return out;\n}\n\nfunction utf16leSlice(buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n\n return res;\n}\n\nBuffer.prototype.slice = function slice(start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n var newBuf;\n\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\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf;\n};\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n\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}\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\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val;\n};\n\nBuffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n};\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};\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};\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};\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};\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\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\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\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n\n mul *= 0x80;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n};\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};\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};\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};\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};\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};\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};\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};\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};\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};\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}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = value / mul & 0xFF;\n }\n\n return offset + byteLength;\n};\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};\n\nfunction objectWriteUInt16(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n\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}\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\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\n return offset + 2;\n};\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\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\n return offset + 2;\n};\n\nfunction objectWriteUInt32(buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n\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}\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\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\n return offset + 4;\n};\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\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\n return offset + 4;\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n\n this[offset + i] = (value / mul >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength;\n};\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};\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\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\n return offset + 2;\n};\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\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\n return offset + 2;\n};\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\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\n return offset + 4;\n};\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\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\n return offset + 4;\n};\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}\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\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n};\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\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\n\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; // Copy 0 bytes; we're done\n\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions\n\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds');\n }\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'); // Are we oob?\n\n if (end > this.length) end = this.length;\n\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\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\n return len;\n}; // Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\n\n\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\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n\n if (code < 256) {\n val = code;\n }\n }\n\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string');\n }\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 } // Invalid ranges are not set to a default, so can range check early.\n\n\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index');\n }\n\n if (end <= start) {\n return this;\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n var i;\n\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\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this;\n}; // HELPER FUNCTIONS\n// ================\n\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\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, ''); // Node converts strings with length < 2 to ''\n\n if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n\n return str;\n}\n\nfunction stringtrim(str) {\n if (str.trim) return str.trim();\n return str.replace(/^\\s+|\\s+$/g, '');\n}\n\nfunction toHex(n) {\n if (n < 16) return '0' + n.toString(16);\n return n.toString(16);\n}\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\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i); // is surrogate component\n\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 } // valid lead\n\n\n leadSurrogate = codePoint;\n continue;\n } // 2 leads in a row\n\n\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue;\n } // valid surrogate pair\n\n\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\n leadSurrogate = null; // encode utf8\n\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\n return bytes;\n}\n\nfunction asciiToBytes(str) {\n var byteArray = [];\n\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\n return byteArray;\n}\n\nfunction utf16leToBytes(str, units) {\n var c, hi, lo;\n var byteArray = [];\n\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\n return byteArray;\n}\n\nfunction base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n}\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\n return i;\n}\n\nfunction isnan(val) {\n return val !== val; // eslint-disable-line no-self-compare\n}","'use strict';\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes');\nexports.createHash = exports.Hash = require('create-hash');\nexports.createHmac = exports.Hmac = require('create-hmac');\n\nvar algos = require('browserify-sign/algos');\n\nvar algoKeys = Object.keys(algos);\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys);\n\nexports.getHashes = function () {\n return hashes;\n};\n\nvar p = require('pbkdf2');\n\nexports.pbkdf2 = p.pbkdf2;\nexports.pbkdf2Sync = p.pbkdf2Sync;\n\nvar aes = require('browserify-cipher');\n\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;\n\nvar dh = require('diffie-hellman');\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup;\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup;\nexports.getDiffieHellman = dh.getDiffieHellman;\nexports.createDiffieHellman = dh.createDiffieHellman;\nexports.DiffieHellman = dh.DiffieHellman;\n\nvar sign = require('browserify-sign');\n\nexports.createSign = sign.createSign;\nexports.Sign = sign.Sign;\nexports.createVerify = sign.createVerify;\nexports.Verify = sign.Verify;\nexports.createECDH = require('create-ecdh');\n\nvar publicEncrypt = require('public-encrypt');\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt;\nexports.privateEncrypt = publicEncrypt.privateEncrypt;\nexports.publicDecrypt = publicEncrypt.publicDecrypt;\nexports.privateDecrypt = publicEncrypt.privateDecrypt; // 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([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill');\n\nexports.randomFill = rf.randomFill;\nexports.randomFillSync = rf.randomFillSync;\n\nexports.createCredentials = function () {\n throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\\n'));\n};\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 CipherBase = require('cipher-base');\n\nvar des = require('des.js');\n\nvar inherits = require('inherits');\n\nvar Buffer = require('safe-buffer').Buffer;\n\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);\n\nfunction DES(opts) {\n CipherBase.call(this);\n var modeName = opts.mode.toLowerCase();\n var mode = modes[modeName];\n var type;\n\n if (opts.decrypt) {\n type = 'decrypt';\n } else {\n type = 'encrypt';\n }\n\n var key = opts.key;\n\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key);\n }\n\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)]);\n }\n\n var iv = opts.iv;\n\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv);\n }\n\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n });\n}\n\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data));\n};\n\nDES.prototype._final = function () {\n return Buffer.from(this._des.final());\n};","var Buffer = require('safe-buffer').Buffer;\n\nvar checkParameters = require('./precondition');\n\nvar defaultEncoding = require('./default-encoding');\n\nvar sync = require('./sync');\n\nvar toBuffer = require('./to-buffer');\n\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 = [];\n\nfunction checkNative(algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false);\n }\n\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false);\n }\n\n if (checks[algo] !== undefined) {\n return checks[algo];\n }\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}\n\nvar nextTick;\n\nfunction getNextTick() {\n if (nextTick) {\n return nextTick;\n }\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\n return nextTick;\n}\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}\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}\n\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest;\n digest = undefined;\n }\n\n digest = digest || 'sha1';\n var algo = toBrowser[digest.toLowerCase()];\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out;\n\n try {\n out = sync(password, salt, iterations, keylen, digest);\n } catch (e) {\n return callback(e);\n }\n\n callback(null, out);\n });\n return;\n }\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};","'use strict';\n\nvar decoders = exports;\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');","'use strict';\n\nvar utils = require('./utils');\n\nvar assert = require('minimalistic-assert');\n\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\n this._init(utils.toArray(key, enc));\n}\n\nmodule.exports = Hmac;\n\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); // Add padding to key\n\n for (var i = key.length; i < this.blockSize; i++) {\n key.push(0);\n }\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x36;\n }\n\n this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a\n\n for (i = 0; i < key.length; i++) {\n key[i] ^= 0x6a;\n }\n\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};","'use strict';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\n\nvar _require2 = require('util'),\n inspect = _require2.inspect;\n\nvar custom = inspect && inspect.custom || 'inspect';\n\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\n\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n _createClass(BufferList, [{\n key: \"push\",\n value: 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 }, {\n key: \"unshift\",\n value: 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 }, {\n key: \"shift\",\n value: 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 }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n }\n }, {\n key: \"concat\",\n value: 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\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n } // Consumes a specified amount of bytes or characters from the buffered data.\n\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n } // Consumes a specified amount of characters from the buffered data.\n\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n\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\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Consumes a specified amount of bytes from the buffered data.\n\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n\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\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n\n break;\n }\n\n ++c;\n }\n\n this.length -= c;\n return ret;\n } // Make sure the linked list only shows the minimal necessary information.\n\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread({}, options, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n\n return BufferList;\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// 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'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n/**/\n\n\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/**/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null) // 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\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\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 }; // start out asking for a readable event once data is transformed.\n\n this._readableState.needReadable = true; // 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\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n } // When the writable side finishes, then flush out anything remaining.\n\n\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\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}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\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.\n\n\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\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\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}; // 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.\n\n\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n\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};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data); // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n\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}","var asn1 = require('./asn1');\n\nvar aesid = require('./aesid.json');\n\nvar fixProc = require('./fixProc');\n\nvar ciphers = require('browserify-aes');\n\nvar compat = require('pbkdf2');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = parseKeys;\n\nfunction parseKeys(buffer) {\n var password;\n\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase;\n buffer = buffer.key;\n }\n\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer);\n }\n\n var stripped = fixProc(buffer, password);\n var type = stripped.tag;\n var data = stripped.data;\n var subtype, ndata;\n\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo;\n // falls through\n\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der');\n }\n\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der');\n\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey;\n return {\n type: 'ec',\n data: ndata\n };\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der');\n data = decrypt(data, password);\n // falls through\n\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der');\n subtype = ndata.algorithm.algorithm.join('.');\n\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der');\n\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\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\n default:\n throw new Error('unknown key id ' + subtype);\n }\n\n // throw new Error('unknown key type ' + type)\n\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der');\n\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der');\n\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n };\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\n default:\n throw new Error('unknown key type ' + type);\n }\n}\n\nparseKeys.signature = asn1.signature;\n\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}","module.exports = require('./lib/_stream_writable.js');","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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\nexport default unitlessKeys;","'use strict';\n\nvar utils = require('../utils');\n\nvar BN = require('bn.js');\n\nvar inherits = require('inherits');\n\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\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; // If the curve is endomorphic, precalculate beta and lambda\n\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\n\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n\n var beta;\n var lambda;\n\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p); // Choose the smallest beta\n\n\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\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\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 } // Get basis vectors, used for balanced length-two representation\n\n\n var basis;\n\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\n return {\n beta: beta,\n lambda: lambda,\n basis: basis\n };\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};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n\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); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n\n var a0;\n var b0; // First vector\n\n var a1;\n var b1; // Second vector\n\n var a2;\n var b2;\n var prevR;\n var i = 0;\n var r;\n var x;\n\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\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\n prevR = r;\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\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\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n } // Normalize signs\n\n\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [{\n a: a1,\n b: b1\n }, {\n a: a2,\n b: b2\n }];\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); // Calculate answer\n\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};\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'); // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd) y = y.redNeg();\n return this.point(x, y);\n};\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};\n\nShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n\n var p = points[i];\n\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\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\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients\n\n\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n\n return res;\n};\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n\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); // Force redgomery representation when loading from JSON\n\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\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}\n\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\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\n if (pre) {\n var curve = this.curve;\n\n var endoMul = function endoMul(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\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\n return beta;\n};\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};\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\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\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};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf) return p; // P + O = P\n\n if (p.inf) return this; // P + P = 2P\n\n if (this.eq(p)) return this.dbl(); // P + (-P) = O\n\n if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O\n\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};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf) return this; // 2P = O\n\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};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\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};\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};\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};\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};\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\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n\n var negate = function negate(p) {\n return p.neg();\n };\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\n return res;\n};\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};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n\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\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}\n\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\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};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity()) return p; // P + O = P\n\n if (p.isInfinity()) return this; // 12M + 4S + 7A\n\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\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\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};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity()) return p.toJ(); // P + O = P\n\n if (p.isInfinity()) return this; // 8M + 3S + 7A\n\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\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\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};\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\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n\n for (i = 0; i < pow; i++) {\n r = r.dbl();\n }\n\n return r;\n } // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n\n\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(); // Reuse results\n\n var jyd = jy.redAdd(jy);\n\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\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\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};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S\n\n var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY\n\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\n ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1\n\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 // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = B^2\n\n var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C)\n\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d); // E = 3 * A\n\n var e = a.redAdd(a).redIAdd(a); // F = E^2\n\n var f = e.redSqr(); // 8 * C\n\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8); // X3 = F - 2 * D\n\n nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C\n\n ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1\n\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz; // Z = 1\n\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n // XX = X1^2\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s); // M = 3 * XX + a\n\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S\n\n var t = m.redSqr().redISub(s).redISub(s); // X3 = T\n\n nx = t; // Y3 = M * (S - T) - 8 * YYYY\n\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); // Z3 = 2 * Y1\n\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 // delta = Z1^2\n var delta = this.z.redSqr(); // gamma = Y1^2\n\n var gamma = this.y.redSqr(); // beta = X1 * gamma\n\n var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta)\n\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta\n\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta\n\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n\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\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a; // 4M + 6S + 10A\n\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};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n // XX = X1^2\n\n var xx = this.x.redSqr(); // YY = Y1^2\n\n var yy = this.y.redSqr(); // ZZ = Z1^2\n\n var zz = this.z.redSqr(); // YYYY = YY^2\n\n var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0\n\n var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2\n\n var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n\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); // EE = E^2\n\n var ee = e.redSqr(); // T = 16*YYYY\n\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T\n\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U)\n\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); // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n\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); // Z3 = (Z1 + E)^2 - ZZ - EE\n\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine') return this.eq(p.toJ());\n if (this === p) return true; // x1 * z2^2 == x2 * z1^2\n\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; // y1 * z2^3 == y2 * z1^3\n\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};\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\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\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\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};","'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'); // Protocols\n\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\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\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\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\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\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\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\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\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\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\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\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\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\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n 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\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\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; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\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\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\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 } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\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\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\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\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\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n 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 /* jshint maxdepth : false */\n\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\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\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n 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\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\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\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\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 } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n 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\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\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 } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\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\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\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; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\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); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // 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\n\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\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 }; // Unsigned comparison\n\n\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\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\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\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\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\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\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n 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\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n 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\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","'use strict';\n\nvar inherits = require('inherits');\n\nvar Buffer = require('safer-buffer').Buffer;\n\nvar Node = require('../base/node'); // Import DER constants\n\n\nvar der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity; // Construct base tree\n\n this.tree = new DERNode();\n\n this.tree._init(entity.body);\n}\n\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n}; // Tree methods\n\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\n\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) {\n var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form\n\n if (content.length < 0x80) {\n var _header = Buffer.alloc(2);\n\n _header[0] = encodedTag;\n _header[1] = content.length;\n return this._createEncoderBuffer([_header, content]);\n } // Long form\n // Count octets required to store length\n\n\n var lenOctets = 1;\n\n for (var i = content.length; i >= 0x100; i >>= 8) {\n lenOctets++;\n }\n\n var header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) {\n header[_i] = j & 0xff;\n }\n\n return this._createEncoderBuffer([header, content]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([str.unused | 0, str.data]);\n } else if (tag === 'bmpstr') {\n var buf = Buffer.alloc(str.length * 2);\n\n for (var i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\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\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\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};\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\n for (var i = 0; i < id.length; i++) {\n id[i] |= 0;\n }\n } else if (Array.isArray(id)) {\n id = id.slice();\n\n for (var _i2 = 0; _i2 < id.length; _i2++) {\n id[_i2] |= 0;\n }\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id));\n }\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 } // Count number of octets\n\n\n var size = 0;\n\n for (var _i3 = 0; _i3 < id.length; _i3++) {\n var ident = id[_i3];\n\n for (size++; ident >= 0x80; ident >>= 7) {\n size++;\n }\n }\n\n var objid = Buffer.alloc(size);\n var offset = objid.length - 1;\n\n for (var _i4 = id.length - 1; _i4 >= 0; _i4--) {\n var _ident = id[_i4];\n objid[offset--] = _ident & 0x7f;\n\n while ((_ident >>= 7) > 0) {\n objid[offset--] = 0x80 | _ident & 0x7f;\n }\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10) return '0' + num;else return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n var str;\n var date = new Date(time);\n\n if (tag === 'gentime') {\n str = [two(date.getUTCFullYear()), 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.getUTCFullYear() % 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\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values) return this.reporter.error('String int or enum given, but no values map');\n\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' + JSON.stringify(num));\n }\n\n num = values[num];\n } // Bignum, assume big endian\n\n\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n var numArray = num.toArray();\n\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n var _size = num.length;\n if (num.length === 0) _size++;\n\n var _out = Buffer.alloc(_size);\n\n num.copy(_out);\n if (num.length === 0) _out[0] = 0;\n return this._createEncoderBuffer(_out);\n }\n\n if (num < 0x80) return this._createEncoderBuffer(num);\n if (num < 0x100) return this._createEncoderBuffer([0, num]);\n var size = 1;\n\n for (var i = num; i >= 0x100; i >>= 8) {\n size++;\n }\n\n var out = new Array(size);\n\n for (var _i5 = out.length - 1; _i5 >= 0; _i5--) {\n out[_i5] = num & 0xff;\n num >>= 8;\n }\n\n if (out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function') entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\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\n for (i = 0; i < data.length; i++) {\n if (data[i] !== state.defaultBuffer[i]) return false;\n }\n\n return true;\n}; // Utility methods\n\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 encoders = exports;\nencoders.der = require('./der');\nencoders.pem = require('./pem');","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');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');","var Buffer = require('safe-buffer').Buffer;\n\nvar xor = require('buffer-xor');\n\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}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0);\n var len;\n\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\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\n return out;\n};","'use strict';\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\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*/\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}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair) return pub;\n return new KeyPair(eddsa, {\n pub: pub\n });\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};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\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});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\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\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this._strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // '0' - '9'\n\n if (c >= 48 && c <= 57) {\n return c - 48; // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\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\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\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\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n b = c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa; // '0' - '9'\n } else {\n b = c;\n }\n\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\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\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move(dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move(dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype._strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\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\n\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect() {\n return (this.red ? '';\n }\n /*\n 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\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\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\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\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate(ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position++] = word & 0xff;\n\n if (position < res.length) {\n res[position++] = word >> 8 & 0xff;\n }\n\n if (position < res.length) {\n res[position++] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = this.words[i] << shift | carry;\n res[position--] = word & 0xff;\n\n if (position >= 0) {\n res[position--] = word >> 8 & 0xff;\n }\n\n if (position >= 0) {\n res[position--] = word >> 16 & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = word >> 24 & 0xff;\n }\n\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = num.words[off] >>> wbit & 0x01;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this._strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\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; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this._strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\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\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\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 } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\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\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\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\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\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\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\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo(self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n 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 /* jshint maxdepth : false */\n\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\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\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n 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\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\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\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\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 } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n 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\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\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 } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\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\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this._strip();\n };\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; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q._strip();\n }\n\n a._strip(); // Denormalize\n\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\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); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn(num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n }; // WARNING: DEPRECATED\n\n\n BN.prototype.modn = function modn(num) {\n return this.modrn(num);\n }; // In-place division by number\n\n\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\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n this._strip();\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // 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\n\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\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 }; // Unsigned comparison\n\n\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\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\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\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\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\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\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n 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\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n 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\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer');\n\nvar Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers\n\nfunction copyProps(src, dst) {\n for (var key in src) {\n dst[key] = src[key];\n }\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}\n\nfunction SafeBuffer(arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length);\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer\n\ncopyProps(Buffer, SafeBuffer);\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number');\n }\n\n return Buffer(arg, encodingOrOffset, length);\n};\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n var buf = Buffer(size);\n\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\n return buf;\n};\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return Buffer(size);\n};\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number');\n }\n\n return buffer.SlowBuffer(size);\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/\nvar Buffer = require('safe-buffer').Buffer;\n\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\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4);\n }\n\n return out;\n}\n\nfunction scrubVec(v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0;\n }\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\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\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} // AES constants\n\n\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\nvar G = function () {\n // Compute double table\n var d = new Array(256);\n\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\n var SBOX = [];\n var INV_SBOX = [];\n var SUB_MIX = [[], [], [], []];\n var INV_SUB_MIX = [[], [], [], []]; // Walk GF(2^8)\n\n var x = 0;\n var xi = 0;\n\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; // Compute multiplication\n\n var x2 = d[x];\n var x4 = d[x2];\n var x8 = d[x4]; // Compute sub bytes, mix columns tables\n\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; // Compute inv sub bytes, inv mix columns tables\n\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\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\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n };\n}();\n\nfunction AES(key) {\n this._key = asUInt32Array(key);\n\n this._reset();\n}\n\nAES.blockSize = 4 * 4;\nAES.keySize = 256 / 8;\nAES.prototype.blockSize = AES.blockSize;\nAES.prototype.keySize = AES.keySize;\n\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\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k];\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1];\n\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\n keySchedule[k] = keySchedule[k - keySize] ^ t;\n }\n\n var invKeySchedule = [];\n\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik;\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)];\n\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\n this._nRounds = nRounds;\n this._keySchedule = keySchedule;\n this._invKeySchedule = invKeySchedule;\n};\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M);\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds);\n};\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};\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M); // swap\n\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};\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule);\n scrubVec(this._invKeySchedule);\n scrubVec(this._key);\n};\n\nmodule.exports.AES = AES;","// 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// 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(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n\n return objectToString(arg) === '[object Array]';\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return objectToString(e) === '[object Error]' || e instanceof Error;\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}","var Buffer = require('safe-buffer').Buffer;\n\nvar ZEROES = Buffer.alloc(16, 0);\n\nfunction toArray(buf) {\n return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)];\n}\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}\n\nfunction GHASH(key) {\n this.h = key;\n this.state = Buffer.alloc(16, 0);\n this.cache = Buffer.allocUnsafe(0);\n} // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\n\n\nGHASH.prototype.ghash = function (block) {\n var i = -1;\n\n while (++i < block.length) {\n this.state[i] ^= block[i];\n }\n\n this._multiply();\n};\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\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0;\n\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 } // Store the value of LSB(V_i)\n\n\n lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1\n\n for (j = 3; j > 0; j--) {\n Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31;\n }\n\n Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n\n if (lsbVi) {\n Vi[0] = Vi[0] ^ 0xe1 << 24;\n }\n }\n\n this.state = fromArray(Zi);\n};\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf]);\n var chunk;\n\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};\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16));\n }\n\n this.ghash(fromArray([0, abl, 0, bl]));\n return this.state;\n};\n\nmodule.exports = GHASH;","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\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n };\n}","'use strict';\n\nvar utils = require('../utils');\n\nvar BN = require('bn.js');\n\nvar inherits = require('inherits');\n\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\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}\n\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA) return num.redNeg();else return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC) return num;else return this.c.redMul(num);\n}; // Just for compatibility with Short curve\n\n\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\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};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n\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\n if (x2.cmp(this.zero) === 0) {\n if (odd) throw new Error('invalid point');else return this.point(this.zero, y);\n }\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};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n\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};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n\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; // Use extended coordinates\n\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}\n\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity()) return '';\n return '';\n};\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};\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 // A = X1^2\n var a = this.x.redSqr(); // B = Y1^2\n\n var b = this.y.redSqr(); // C = 2 * Z1^2\n\n var c = this.z.redSqr();\n c = c.redIAdd(c); // D = a * A\n\n var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B\n\n\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B\n\n var g = d.redAdd(b); // F = G - C\n\n var f = g.redSub(c); // H = D - B\n\n var h = d.redSub(b); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\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 // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr(); // C = X1^2\n\n var c = this.x.redSqr(); // D = Y1^2\n\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\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c); // F = E + D\n\n var f = e.redAdd(d);\n\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F\n\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr(); // J = F - 2 * H\n\n j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J\n\n nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D)\n\n ny = f.redMul(e.redSub(d)); // Z3 = F * J\n\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d); // H = (c * Z1)^2\n\n h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H\n\n j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J\n\n nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D)\n\n ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J\n\n nz = e.redMul(j);\n }\n\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity()) return this; // Double in extended coordinates\n\n if (this.curve.extended) return this._extDbl();else return this._projDbl();\n};\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 // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2)\n\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2\n\n var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2\n\n var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A\n\n var e = b.redSub(a); // F = D - C\n\n var f = d.redSub(c); // G = D + C\n\n var g = d.redAdd(c); // H = B + A\n\n var h = b.redAdd(a); // X3 = E * F\n\n var nx = e.redMul(f); // Y3 = G * H\n\n var ny = g.redMul(h); // T3 = E * H\n\n var nt = e.redMul(h); // Z3 = F * G\n\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\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 // A = Z1 * Z2\n var a = this.z.redMul(p.z); // B = A^2\n\n var b = a.redSqr(); // C = X1 * X2\n\n var c = this.x.redMul(p.x); // D = Y1 * Y2\n\n var d = this.y.redMul(p.y); // E = d * C * D\n\n var e = this.curve.d.redMul(c).redMul(d); // F = B - E\n\n var f = b.redSub(e); // G = B + E\n\n var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n\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\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G\n\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G\n\n nz = this.curve._mulC(f).redMul(g);\n }\n\n return this.curve.point(nx, ny, nz);\n};\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};\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};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne) return this; // Normalize coordinates\n\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};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0;\n};\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\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}; // Compatibility with BaseCurve\n\n\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;","'use strict';\n\nvar generate = require('./generate');\n\nvar alphabet = require('./alphabet'); // Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\n\n\nvar REDUCE_TIME = 1567752802062; // don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\n\nvar version = 7; // Counter is used when shortid is called multiple times in one second.\n\nvar counter; // Remember the last time shortid was called in case counter is needed.\n\nvar previousSeconds;\n/**\n * Generate unique id\n * Returns string id\n */\n\nfunction build(clusterWorkerId) {\n var str = '';\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n\n if (counter > 0) {\n str = str + generate(counter);\n }\n\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;","import crypto from 'crypto';\nimport { useEffect } from 'react';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction rng() {\n return crypto.randomBytes(16);\n}\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nvar DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nvar URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\n\nfunction v35(name, version, hashfunc) {\n var generateUUID = function generateUUID(value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || bytesToUuid(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('md5').update(bytes).digest();\n}\n\nvar v3 = v35('v3', 0x30, md5);\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return crypto.createHash('sha1').update(bytes).digest();\n}\n\nvar v5 = v35('v5', 0x50, sha1);\n\nvar getParentMap = function getParentMap(headingLevel, latestRoots) {\n return Object.keys(latestRoots).map(function (k) {\n return latestRoots[k];\n }).slice(0, headingLevel[1] - 2);\n};\n\nvar transformRootNode = function transformRootNode(node, expanded) {\n return _objectSpread2({}, node, {\n id: node.element.id,\n text: node.element.innerText || node.element.innerHTML,\n expanded: expanded\n });\n};\n\nvar checkParent = function checkParent(parent) {\n if (!parent) {\n throw Error(\"(usePageHeadingsTree.js): One of the tree nodes is missing a parent.\\n\" + \"You may have skipped a heading level in your document or your query may \" + 'not contain a sequential list of heading nodes (Correct: \"h2,h3,h4\" Incorrect: \"h2,h4\")');\n }\n};\n\nvar checkTag = function checkTag(tagName) {\n if (!/^H[2-6]$/.test(tagName)) {\n throw Error(\"(usePageHeadingsTree.js): <\".concat(tagName.toLowerCase(), \"> elements are not supported. \") + \" Only heading elements (

    through

    ) are supported (for now).\");\n }\n};\n\nvar getFlatNodeListFromHeadings = function getFlatNodeListFromHeadings(headings) {\n var latestRoots = {};\n var roots = {\n H2: {},\n H3: {},\n H4: {},\n H5: {},\n H6: {}\n };\n\n var getDefaultRoot = function getDefaultRoot(heading, index) {\n return {\n childrenCount: 0,\n rootId: latestRoots[heading.tagName],\n element: heading,\n childNodes: [],\n index: index\n };\n };\n\n headings.forEach(function (h, i) {\n checkTag(h.tagName);\n latestRoots[h.tagName] = v4();\n\n if (h.tagName === \"H2\") {\n roots.H2[latestRoots.H2] = getDefaultRoot(h, i);\n return;\n }\n\n roots[h.tagName][latestRoots[h.tagName]] = _objectSpread2({}, getDefaultRoot(h, i), {\n parentMap: getParentMap(h.tagName, latestRoots)\n });\n });\n return roots;\n};\n\nvar getNodeTreeFromFlatNodeList = function getNodeTreeFromFlatNodeList(roots, shouldDefaultToExpand) {\n var rootKeys = Object.keys(roots);\n\n var _loop = function _loop(i) {\n var parents = roots[rootKeys[i - 1]];\n var currentRoot = roots[rootKeys[i]];\n\n if (currentRoot) {\n Object.keys(currentRoot).forEach(function (childKey) {\n var child = transformRootNode(currentRoot[childKey], shouldDefaultToExpand);\n\n if (child.parentMap) {\n var parentId = child.parentMap[child.parentMap.length - 1];\n var parent = parents[parentId];\n checkParent(parent);\n parent.childrenCount += child.childNodes.length + 1;\n parent.childNodes.push(child);\n }\n });\n }\n };\n\n for (var i = rootKeys.length - 1; i >= 0; i--) {\n _loop(i);\n }\n\n var finalRoots = Object.keys(roots.H2).map(function (k) {\n return transformRootNode(roots.H2[k], shouldDefaultToExpand);\n });\n return finalRoots;\n};\n\nvar usePageHeadingsTree = function usePageHeadingsTree(headings, callback, shouldDefaultToExpand) {\n useEffect(function () {\n var roots = getFlatNodeListFromHeadings(headings);\n var finalRoots = getNodeTreeFromFlatNodeList(roots, shouldDefaultToExpand);\n callback(finalRoots);\n }, [headings, shouldDefaultToExpand]);\n};\n\nexport { usePageHeadingsTree };","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};","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict';\n\nvar asn1 = require('asn1.js');\n\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 PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(this.key('algorithm').use(AlgorithmIdentifier), this.key('subjectPublicKey').bitstr());\n});\nexports.PublicKey = PublicKey;\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 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 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;\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n });\n});\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(this.key('r').int(), this.key('s').int());\n});","'use strict';\n\nvar curve = exports;\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nvar base = exports;\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function (item, ind, arr) {\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n\n shuffled = shuffle();\n return shuffled;\n}\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\n\n\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get() {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};","var AuthCipher = require('./authCipher');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar MODES = require('./modes');\n\nvar StreamCipher = require('./streamCipher');\n\nvar Transform = require('cipher-base');\n\nvar aes = require('./aes');\n\nvar ebtk = require('evp_bytestokey');\n\nvar inherits = require('inherits');\n\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}\n\ninherits(Decipher, Transform);\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data);\n\n var chunk;\n var thing;\n var out = [];\n\n while (chunk = this._cache.get(this._autopadding)) {\n thing = this._mode.decrypt(this, chunk);\n out.push(thing);\n }\n\n return Buffer.concat(out);\n};\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush();\n\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};\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo;\n return this;\n};\n\nfunction Splitter() {\n this.cache = Buffer.allocUnsafe(0);\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data]);\n};\n\nSplitter.prototype.get = function (autoPadding) {\n var out;\n\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\n return null;\n};\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache;\n};\n\nfunction unpad(last) {\n var padded = last[15];\n\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data');\n }\n\n var i = -1;\n\n while (++i < padded) {\n if (last[i + (16 - padded)] !== padded) {\n throw new Error('unable to decrypt data');\n }\n }\n\n if (padded === 16) return;\n return last.slice(0, 16 - padded);\n}\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\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\n return new Decipher(config.module, password, iv);\n}\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}\n\nexports.createDecipher = createDecipher;\nexports.createDecipheriv = createDecipheriv;","// 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'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\nmodule.exports = Readable;\n/**/\n\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n/**/\n\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\n\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/**/\n\n\nvar debugUtil = require('util');\n\nvar debug;\n\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\n\nvar BufferList = require('./internal/streams/buffer_list');\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance.\n\n\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n\nrequire('inherits')(Readable, Stream);\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\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); // 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\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // 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\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; // 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\n this.sync = true; // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish')\n\n this.autoDestroy = !!options.autoDestroy; // has it been destroyed\n\n this.destroyed = false; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s\n\n this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled\n\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n\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}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex); // legacy\n\n this.readable = true;\n\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\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\n\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\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.\n\n\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n}; // Unshift should *always* be something directly out of read()\n\n\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n\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\n if (er) {\n errorOrDestroy(stream, 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\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n\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 maybeReadMore(stream, state);\n }\n } // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n\n\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\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\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n\n return er;\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n}; // backwards compatibility.\n\n\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8\n\n this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers:\n\n var p = this._readableState.buffer.head;\n var content = '';\n\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n\n this._readableState.buffer.clear();\n\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n}; // Don't raise the hwm > 1GB\n\n\nvar MAX_HWM = 0x40000000;\n\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\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\n return n;\n} // This function is designed to be inlinable, so please take care when making\n// changes to the function body.\n\n\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n\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 } // If we're asking for more than the current hwm, then raise the hwm.\n\n\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n; // Don't have enough\n\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n\n return state.length;\n} // you can override either this method, or the async _read(n) below.\n\n\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; // 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\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || 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 n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up.\n\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\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 // if we need a readable event, then we need to do some reading.\n\n\n var doRead = state.needReadable;\n debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some\n\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n } // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n\n\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; // if the length is currently zero, then we *need* a readable event.\n\n if (state.length === 0) state.needReadable = true; // call internal read method\n\n this._read(state.highWaterMark);\n\n state.sync = false; // 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\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\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; // If we tried to read() past the EOF, then emit end on the next tick.\n\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n\n if (state.decoder) {\n var chunk = state.decoder.end();\n\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n\n state.ended = true;\n\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n state.emittedReadable = true;\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.\n\n\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\n\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n } // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n\n\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\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.\n\n\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length) // didn't get any data, stop spinning.\n break;\n }\n\n state.readingMore = false;\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.\n\n\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n\n default:\n state.pipes.push(dest);\n break;\n }\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) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\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\n\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n\n function cleanup() {\n debug('cleanup'); // cleanup event handlers once the pipe is broken\n\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; // 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\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n src.on('data', ondata);\n\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n\n if (ret === false) {\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 }\n\n src.pause();\n }\n } // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n\n\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n } // Make sure our error handler is attached before userland ones.\n\n\n prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once.\n\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n\n dest.once('close', onclose);\n\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n } // tell the dest that it's being piped to\n\n\n dest.emit('pipe', src); // start the flow if it hasn't been started already.\n\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n }; // if we're not piping anywhere, then do nothing.\n\n if (state.pipesCount === 0) return this; // just one destination. most common case.\n\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; // got a match.\n\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n } // slow case. multiple pipe destinations.\n\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\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n }\n\n return this;\n } // try to find the right one.\n\n\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}; // set up data events if they are asked for\n// Ensure readable listeners eventually get something\n\n\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused\n\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n\n return res;\n};\n\nReadable.prototype.addListener = Readable.prototype.on;\n\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n\n return res;\n};\n\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true; // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n} // pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\n\n\nReadable.prototype.resume = function () {\n var state = this._readableState;\n\n if (!state.flowing) {\n debug('resume'); // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n\n state.paused = false;\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n\n if (!state.reading) {\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n\n this._readableState.paused = true;\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n\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.\n\n\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\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); // don't skip over falsy values in objectMode\n\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n\n if (!ret) {\n paused = true;\n stream.pause();\n }\n }); // proxy all the other methods.\n // important when wrapping filters and duplexes.\n\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n } // proxy certain important events.\n\n\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n } // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n\n\n this._read = function (n) {\n debug('wrapped _read', n);\n\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n }\n\n return createReadableStreamAsyncIterator(this);\n };\n}\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 get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\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 get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\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 get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n}); // exposed for testing purposes only.\n\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\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 get() {\n return this._readableState.length;\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.\n\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.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift.\n\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\n\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = require('./internal/streams/from');\n }\n\n return from(Readable, iterable, opts);\n };\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\n return -1;\n}","module.exports = require('events').EventEmitter;","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\n\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n callback.apply(this, args);\n };\n}\n\nfunction noop() {}\n\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\n\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n\n var writableEnded = stream._writableState && stream._writableState.finished;\n\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n\n var onclose = function onclose() {\n var err;\n\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\n\nmodule.exports = eos;","/**\r\n * SEO component that queries for data with\r\n * Gatsby's useStaticQuery React hook\r\n *\r\n * See: https://www.gatsbyjs.org/docs/use-static-query/\r\n */\r\n\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Helmet from \"react-helmet\";\r\n\r\nconst site = {\r\n\tsiteMetadata: {\r\n\t\ttitle: `Nevada Reapportionment and Redistricting 2021`,\r\n\t\tdescription: `Nevada Reapportionment and Redistricting 2021`,\r\n\t\tauthor: `LCB`,\r\n\t},\r\n};\r\n\r\nfunction SEO({ description, lang, meta, title }) {\r\n\tconst getMetaDescription = site =>\r\n\t\tdescription || site.siteMetadata.description;\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n}\r\n\r\nSEO.defaultProps = {\r\n\tlang: `en`,\r\n\tmeta: [],\r\n\tdescription: ``,\r\n};\r\n\r\nSEO.propTypes = {\r\n\tdescription: PropTypes.string,\r\n\tlang: PropTypes.string,\r\n\tmeta: PropTypes.arrayOf(PropTypes.object),\r\n\ttitle: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default SEO;\r\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\n\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\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*/\n\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n if (typeof sig !== 'object') sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength)\n };\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}\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});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;","'use strict';\n/**/\n\nvar pna = require('process-nextick-args');\n/**/\n// undocumented cb() API, needed for core, not for public API\n\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\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\n return this;\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\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\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\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}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","(function (module, exports) {\n 'use strict'; // Utils\n\n function assert(val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n } // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n\n\n function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n } // BN\n\n\n function BN(number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0; // Reduction context\n\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n var Buffer;\n\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {}\n\n BN.isBN = function isBN(num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max(left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min(left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init(number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n\n assert(base === (base | 0) && base >= 2 && base <= 36);\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber(number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n\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\n this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1];\n this.length = 3;\n }\n\n if (endian !== 'le') return; // Reverse the bytes\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray(number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n\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\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\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n\n return this.strip();\n };\n\n function parseHex4Bits(string, index) {\n var c = string.charCodeAt(index); // 'A' - 'F'\n\n if (c >= 65 && c <= 70) {\n return c - 55; // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87; // '0' - '9'\n } else {\n return c - 48 & 0xf;\n }\n }\n\n function parseHexByte(string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex(number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n } // 24-bits chunks\n\n\n var off = 0;\n var j = 0;\n var w;\n\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\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\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\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase(str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n r *= mul; // 'a'\n\n if (c >= 49) {\n r += c - 49 + 0xa; // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa; // '0' - '9'\n } else {\n r += c;\n }\n }\n\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase(number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1; // Find length of limb in base\n\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\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\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n this.imuln(limbPow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy(dest) {\n dest.words = new Array(this.length);\n\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone() {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand(size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n\n return this;\n }; // Remove leading `0` from `this`\n\n\n BN.prototype.strip = function strip() {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign() {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n\n return this;\n };\n\n BN.prototype.inspect = function inspect() {\n return (this.red ? '';\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\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\n BN.prototype.toString = function toString(base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n var out;\n\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n\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\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 off += 2;\n\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize);\n\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n\n if (this.isZero()) {\n out = '0' + out;\n }\n\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n\n if (this.negative !== 0) {\n out = '-' + out;\n }\n\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber() {\n var ret = this.words[0];\n\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\n return this.negative !== 0 ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON() {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer(endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray(endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n var b, i;\n var q = this.clone();\n\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n 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\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits(w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits(w) {\n var t = w;\n var r = 0;\n\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits(w) {\n // Short-cut\n if (w === 0) return 26;\n var t = w;\n var r = 0;\n\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n\n if ((t & 0x1) === 0) {\n r++;\n }\n\n return r;\n }; // Return number of used bits in a BN\n\n\n BN.prototype.bitLength = function bitLength() {\n var w = this.words[this.length - 1];\n\n var hi = this._countBits(w);\n\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray(num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = bit / 26 | 0;\n var wbit = bit % 26;\n w[bit] = (num.words[off] & 1 << wbit) >>> wbit;\n }\n\n return w;\n } // Number of trailing zero bits\n\n\n BN.prototype.zeroBits = function zeroBits() {\n if (this.isZero()) return 0;\n var r = 0;\n\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n\n r += b;\n if (b !== 26) break;\n }\n\n return r;\n };\n\n BN.prototype.byteLength = function byteLength() {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos(width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos(width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg() {\n return this.negative !== 0;\n }; // Return negative clone of `this`\n\n\n BN.prototype.neg = function neg() {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg() {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n }; // Or `num` with `this` in-place\n\n\n BN.prototype.iuor = function iuor(num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n }; // Or `num` with `this`\n\n\n BN.prototype.or = function or(num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor(num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n }; // And `num` with `this` in-place\n\n\n BN.prototype.iuand = function iuand(num) {\n // b = min-length(num, this)\n var b;\n\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n return this.strip();\n };\n\n BN.prototype.iand = function iand(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n }; // And `num` with `this`\n\n\n BN.prototype.and = function and(num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand(num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n }; // Xor `num` with `this` in-place\n\n\n BN.prototype.iuxor = function iuxor(num) {\n // a.length > b.length\n var a;\n var b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor(num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n }; // Xor `num` with `this`\n\n\n BN.prototype.xor = function xor(num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor(num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n }; // Not ``this`` with ``width`` bitwidth\n\n\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; // Extend the buffer with leading zeroes\n\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n } // Handle complete words\n\n\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n } // Handle the residue\n\n\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft;\n } // And remove leading zeroes\n\n\n return this.strip();\n };\n\n BN.prototype.notn = function notn(width) {\n return this.clone().inotn(width);\n }; // Set `bit` of `this`\n\n\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\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | 1 << wbit;\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n }; // Add `num` to `this` in-place\n\n\n BN.prototype.iadd = function iadd(num) {\n var r; // negative + positive\n\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(); // 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 } // a.length > b.length\n\n\n var a, b;\n\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++; // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n }; // Add `num` to `this`\n\n\n BN.prototype.add = function add(num) {\n var res;\n\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n return num.clone().iadd(this);\n }; // Subtract `num` from `this` in-place\n\n\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(); // -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 } // At this point both numbers are positive\n\n\n var cmp = this.cmp(num); // Optimization - zeroify\n\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n } // a > b\n\n\n var a, b;\n\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n\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\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 } // Copy rest of the words\n\n\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n }; // Subtract `num` from `this`\n\n\n BN.prototype.sub = function sub(num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = self.length + num.length | 0;\n out.length = len;\n len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity)\n\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\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\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\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\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\n\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\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\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n\n return out;\n }; // Polyfill comb\n\n\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo(self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n var carry = 0;\n var hncarry = 0;\n\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\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\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo(self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo(num, out) {\n var res;\n var len = this.length + num.length;\n\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n }; // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n\n function FFTM(x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT(N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n }; // Returns binary-reversed representation of `x`\n\n\n FFTM.prototype.revBin = function revBin(x, l, N) {\n if (x === 0 || x === N - 1) return x;\n var rb = 0;\n\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << l - i - 1;\n x >>= 1;\n }\n\n return rb;\n }; // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n\n\n FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n 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 /* jshint maxdepth : false */\n\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\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\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate(rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n 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\n FFTM.prototype.normalize13b = function normalize13b(ws, N) {\n var carry = 0;\n\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\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) {\n var carry = 0;\n\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 } // Pad with zeroes\n\n\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub(N) {\n var ph = new Array(N);\n\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp(x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n 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\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n }; // Multiply `this` by `num`\n\n\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 }; // Multiply employing FFT\n\n\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 }; // In-place Multiplication\n\n\n BN.prototype.imul = function imul(num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000); // Carry\n\n var carry = 0;\n\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; // NOTE: lo is 27bit maximum\n\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln(num) {\n return this.clone().imuln(num);\n }; // `this` * `this`\n\n\n BN.prototype.sqr = function sqr() {\n return this.mul(this);\n }; // `this` * `this` in-place\n\n\n BN.prototype.isqr = function isqr() {\n return this.imul(this.clone());\n }; // Math.pow(`this`, `num`)\n\n\n BN.prototype.pow = function pow(num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1); // Skip leading zeroes\n\n var res = this;\n\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n res = res.mul(q);\n }\n }\n\n return res;\n }; // Shift-left in-place\n\n\n BN.prototype.iushln = function iushln(bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = 0x3ffffff >>> 26 - r << 26 - r;\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = (this.words[i] | 0) - newCarry << r;\n this.words[i] = c | carry;\n carry = newCarry >>> 26 - r;\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln(bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n }; // 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\n\n BN.prototype.iushrn = function iushrn(bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n\n if (hint) {\n h = (hint - hint % 26) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n var maskedWords = extended;\n h -= s;\n h = Math.max(0, h); // Extended mode, copy masked part\n\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n\n maskedWords.length = s;\n }\n\n if (s === 0) {// No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n\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 } // Push carried bits as a mask\n\n\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn(bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n }; // Shift-left\n\n\n BN.prototype.shln = function shln(bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln(bits) {\n return this.clone().iushln(bits);\n }; // Shift-right\n\n\n BN.prototype.shrn = function shrn(bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn(bits) {\n return this.clone().iushrn(bits);\n }; // Test if n bit is set\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) return false; // Check bit and return\n\n var w = this.words[s];\n return !!(w & q);\n }; // Return only lowers bits of number (in-place)\n\n\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\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ 0x3ffffff >>> r << r;\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n }; // Return only lowers bits of number\n\n\n BN.prototype.maskn = function maskn(bits) {\n return this.clone().imaskn(bits);\n }; // Add plain number `num` to `this`\n\n\n BN.prototype.iaddn = function iaddn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num); // Possible sign change\n\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n } // Add without checks\n\n\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn(num) {\n this.words[0] += num; // Carry\n\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n\n this.length = Math.max(this.length, i + 1);\n return this;\n }; // Subtract plain number `num` from `this`\n\n\n BN.prototype.isubn = function isubn(num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn(num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn(num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs() {\n this.negative = 0;\n return this;\n };\n\n BN.prototype.abs = function abs() {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n\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\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip(); // Subtraction overflow\n\n assert(carry === -1);\n carry = 0;\n\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\n this.negative = 1;\n return this.strip();\n };\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; // Normalize\n\n var bhi = b.words[b.length - 1] | 0;\n\n var bhiBits = this._countBits(bhi);\n\n shift = 26 - bhiBits;\n\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n } // Initialize quotient\n\n\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n\n if (diff.negative === 0) {\n a = diff;\n\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n\n qj = Math.min(qj / bhi | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n\n a._ishlnsubmul(b, 1, j);\n\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n\n if (q) {\n q.words[j] = qj;\n }\n }\n\n if (q) {\n q.strip();\n }\n\n a.strip(); // Denormalize\n\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\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\n\n BN.prototype.divmod = function divmod(num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n } // Both numbers are positive at this point\n // Strip both numbers to approximate shift value\n\n\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n } // Very short reduction\n\n\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n }; // Find `this` / `num`\n\n\n BN.prototype.div = function div(num) {\n return this.divmod(num, 'div', false).div;\n }; // Find `this` % `num`\n\n\n BN.prototype.mod = function mod(num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod(num) {\n return this.divmod(num, 'mod', true).mod;\n }; // Find Round(`this` / `num`)\n\n\n BN.prototype.divRound = function divRound(num) {\n var dm = this.divmod(num); // Fast case - exact division\n\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); // Round down\n\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up\n\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn(num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n var acc = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n }; // In-place division by number\n\n\n BN.prototype.idivn = function idivn(num) {\n assert(num <= 0x3ffffff);\n var carry = 0;\n\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = w / num | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn(num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd(p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n } // A * x + B * y = x\n\n\n var A = new BN(1);\n var B = new BN(0); // C * x + D * y = y\n\n var C = new BN(0);\n var D = new BN(1);\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n x.iushrn(i);\n\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n y.iushrn(j);\n\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n }; // 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\n\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\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) {\n ;\n }\n\n if (i > 0) {\n a.iushrn(i);\n\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) {\n ;\n }\n\n if (j > 0) {\n b.iushrn(j);\n\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd(num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0; // Remove common factor of two\n\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n }; // Invert number in the field F(num)\n\n\n BN.prototype.invm = function invm(num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven() {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd() {\n return (this.words[0] & 1) === 1;\n }; // And first word and num\n\n\n BN.prototype.andln = function andln(num) {\n return this.words[0] & num;\n }; // Increment at the bit position in-line\n\n\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; // Fast case: bit is much higher than all existing words\n\n if (this.length <= s) {\n this._expand(s + 1);\n\n this.words[s] |= q;\n return this;\n } // Add bit and propagate, if needed\n\n\n var carry = q;\n\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\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.isZero = function isZero() {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn(num) {\n var negative = num < 0;\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n this.strip();\n var res;\n\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n\n if (this.negative !== 0) return -res | 0;\n return res;\n }; // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n\n\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 }; // Unsigned comparison\n\n\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\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\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n\n break;\n }\n\n return res;\n };\n\n BN.prototype.gtn = function gtn(num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt(num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten(num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte(num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn(num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt(num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten(num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte(num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn(num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq(num) {\n return this.cmp(num) === 0;\n }; //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n\n\n BN.red = function red(num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed() {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed(ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed(ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd(num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd(num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub(num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub(num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl(num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul(num) {\n assert(this.red, 'redMul works only with red numbers');\n\n this.red._verify2(this, num);\n\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr() {\n assert(this.red, 'redSqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr() {\n assert(this.red, 'redISqr works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.isqr(this);\n }; // Square root over p\n\n\n BN.prototype.redSqrt = function redSqrt() {\n assert(this.red, 'redSqrt works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm() {\n assert(this.red, 'redInvm works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.invm(this);\n }; // Return negative clone of `this` % `red modulo`\n\n\n BN.prototype.redNeg = function redNeg() {\n assert(this.red, 'redNeg works only with red numbers');\n\n this.red._verify1(this);\n\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow(num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n\n this.red._verify1(this);\n\n return this.red.pow(this, num);\n }; // Prime numbers with efficient reduction\n\n\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n }; // Pseudo-Mersenne prime\n\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\n MPrime.prototype._tmp = function _tmp() {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce(num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split(input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK(num) {\n return num.imul(this.k);\n };\n\n function K256() {\n MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n\n inherits(K256, MPrime);\n\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\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n } // Shift by 9 limbs\n\n\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = (next & mask) << 4 | prev >>> 22;\n prev = next;\n }\n\n prev >>>= 22;\n input.words[i - 10] = prev;\n\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK(num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n\n var lo = 0;\n\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 } // Fast length reduction\n\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n\n return num;\n };\n\n function P224() {\n MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n\n inherits(P224, MPrime);\n\n function P192() {\n MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n\n inherits(P192, MPrime);\n\n function P25519() {\n // 2 ^ 255 - 19\n MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK(num) {\n // K = 0x13\n var carry = 0;\n\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\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n\n return num;\n }; // Exported mostly for testing purposes, use plain name instead\n\n\n BN._prime = function prime(name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n var prime;\n\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\n primes[name] = prime;\n return prime;\n }; //\n // Base reduction engine\n //\n\n\n function Red(m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1(a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2(a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red, 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod(a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg(a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add(a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd(a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n\n return res;\n };\n\n Red.prototype.sub = function sub(a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub(a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n\n return res;\n };\n\n Red.prototype.shl = function shl(a, num) {\n this._verify1(a);\n\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul(a, b) {\n this._verify2(a, b);\n\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr(a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr(a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt(a) {\n if (a.isZero()) return a.clone();\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1); // Fast case\n\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n } // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n\n\n var q = this.m.subn(1);\n var s = 0;\n\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n\n assert(!q.isZero());\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg(); // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n\n while (t.cmp(one) !== 0) {\n var tmp = t;\n\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\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\n return r;\n };\n\n Red.prototype.invm = function invm(a) {\n var inv = a._invmp(this.m);\n\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow(a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n\n for (var j = start - 1; j >= 0; j--) {\n var bit = word >> j & 1;\n\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo(num) {\n var r = num.umod(this.m);\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom(num) {\n var res = num.clone();\n res.red = null;\n return res;\n }; //\n // Montgomery method engine\n //\n\n\n BN.mont = function mont(num) {\n return new Mont(num);\n };\n\n function Mont(m) {\n Red.call(this, m);\n this.shift = this.m.bitLength();\n\n if (this.shift % 26 !== 0) {\n this.shift += 26 - this.shift % 26;\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n 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\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo(num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom(num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul(a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul(a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n 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\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm(a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);","'use strict'; // undocumented cb() API, needed for core, not for public API\n\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n\n return this;\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\n if (this._readableState) {\n this._readableState.destroyed = true;\n } // if this is a duplex stream mark the writable part as destroyed as well\n\n\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n\n return this;\n}\n\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\n\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\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\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}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\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// 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'use strict';\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\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} // It seems a linked list but it is not\n// there will be only 2 of these for each stream\n\n\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\n\n\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n/**/\n\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\n\nvar Stream = require('./internal/streams/stream');\n/**/\n\n\nvar Buffer = require('buffer').Buffer;\n\nvar OurUint8Array = global.Uint8Array || function () {};\n\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\n\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nvar _require = require('./internal/streams/state'),\n getHighWaterMark = _require.getHighWaterMark;\n\nvar _require$codes = require('../errors').codes,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\n\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n\nrequire('inherits')(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || require('./_stream_duplex');\n options = options || {}; // 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 // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // 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\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called\n\n this.finalCalled = false; // drain event flag.\n\n this.needDrain = false; // at the start of calling end()\n\n this.ending = false; // when end() has been called, and returned\n\n this.ended = false; // when 'finish' is emitted\n\n this.finished = false; // has it been destroyed\n\n this.destroyed = false; // 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\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode; // 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\n this.defaultEncoding = options.defaultEncoding || 'utf8'; // 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\n this.length = 0; // a flag to see when we're in the middle of a write.\n\n this.writing = false; // when true all writes will be buffered until .uncork() call\n\n this.corked = 0; // 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\n this.sync = true; // 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\n this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb)\n\n this.onwrite = function (er) {\n onwrite(stream, er);\n }; // the callback that the user supplies to write(chunk,encoding,cb)\n\n\n this.writecb = null; // the amount that is being written when _write is called.\n\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null; // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n\n this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n\n this.prefinished = false; // True if the error was already emitted and should not be thrown again\n\n this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true.\n\n this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end')\n\n this.autoDestroy = !!options.autoDestroy; // count buffered requests\n\n this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n\n while (current) {\n out.push(current);\n current = current.next;\n }\n\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})(); // Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\n\n\nvar realHasInstance;\n\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 value(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 realHasInstance(object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex'); // 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 // 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 // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex); // legacy.\n\n this.writable = true;\n\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\n Stream.call(this);\n} // Otherwise people can pipe Writable streams, which is just wrong.\n\n\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb\n\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\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.\n\n\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n\n return true;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) 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};\n\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\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 ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n\n return chunk;\n}\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 get() {\n return this._writableState.highWaterMark;\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.\n\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false.\n\n if (!ret) state.needDrain = true;\n\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\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\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 (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er); // this can emit finish, and it will always happen\n // after error\n\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, 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 errorOrDestroy(stream, er); // this can emit finish, but finish must\n // always follow error\n\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\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) || stream.destroyed;\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\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} // 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.\n\n\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n} // if there's something in the buffer waiting, then process it\n\n\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\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\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n\n state.pendingcb++;\n state.lastBufferedRequest = null;\n\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\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--; // 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\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\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\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks\n\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n } // ignore unnecessary end() calls.\n\n\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\n\nObject.defineProperty(Writable.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n});\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n\n if (err) {\n errorOrDestroy(stream, err);\n }\n\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n\n if (need) {\n prefinish(stream, state);\n\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n } // reuse the free corkReq.\n\n\n state.corkedRequestsFree.next = corkReq;\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\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 get() {\n if (this._writableState === undefined) {\n return false;\n }\n\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\n\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};","var inherits = require('inherits');\n\nvar Hash = require('./hash');\n\nvar Buffer = require('safe-buffer').Buffer;\n\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);\n\nfunction Sha512() {\n this.init();\n this._w = W;\n Hash.call(this, 128, 112);\n}\n\ninherits(Sha512, Hash);\n\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};\n\nfunction Ch(x, y, z) {\n return z ^ x & (y ^ z);\n}\n\nfunction maj(x, y, z) {\n return x & y | z & (x | y);\n}\n\nfunction sigma0(x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25);\n}\n\nfunction sigma1(x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23);\n}\n\nfunction Gamma0(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ x >>> 7;\n}\n\nfunction Gamma0l(x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25);\n}\n\nfunction Gamma1(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ x >>> 6;\n}\n\nfunction Gamma1l(x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26);\n}\n\nfunction getCarry(a, b) {\n return a >>> 0 < b >>> 0 ? 1 : 0;\n}\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\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\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); // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\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\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); // t1 = h + sigma1 + ch + K[j] + W[j]\n\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; // t2 = sigma0 + maj\n\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\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};\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64);\n\n function writeInt64BE(h, l, offset) {\n H.writeInt32BE(h, offset);\n H.writeInt32BE(l, offset + 4);\n }\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};\n\nmodule.exports = Sha512;","(function (factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module['exports'] = factory() : typeof define === 'function' && define['amd'] ? define(factory()) : window['stylisRuleSheet'] = factory();\n})(function () {\n 'use strict';\n\n return function (insertRule) {\n var delimiter = '/*|*/';\n var needle = delimiter + '}';\n\n function toSheet(block) {\n if (block) try {\n insertRule(block + '}');\n } catch (e) {}\n }\n\n return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ';'), '';\n break;\n // selector\n\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n\n default:\n return content + (at === 0 ? delimiter : '');\n }\n\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n };\n});","exports.__esModule = true;\nexports.Helmet = undefined;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactSideEffect = require(\"react-side-effect\");\n\nvar _reactSideEffect2 = _interopRequireDefault(_reactSideEffect);\n\nvar _reactFastCompare = require(\"react-fast-compare\");\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _HelmetUtils = require(\"./HelmetUtils.js\");\n\nvar _HelmetConstants = require(\"./HelmetConstants.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n _inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n _classCallCheck(this, HelmetWrapper);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !(0, _reactFastCompare2.default)(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case _HelmetConstants.TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _extends2;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_extends2 = {}, _extends2[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _extends2));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _extends3, _extends4;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.TITLE:\n return _extends({}, newProps, (_extends3 = {}, _extends3[child.type] = nestedChildren, _extends3.titleAttributes = _extends({}, newChildProps), _extends3));\n\n case _HelmetConstants.TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case _HelmetConstants.TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_extends4 = {}, _extends4[child.type] = _extends({}, newChildProps), _extends4));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _extends5;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_extends5 = {}, _extends5[arrayChildName] = arrayTypeChildren[arrayChildName], _extends5));\n });\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!_HelmetConstants.VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return (0, _HelmetUtils.warn)(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return (0, _HelmetUtils.warn)(\"Only elements types \" + _HelmetConstants.VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n _react2.default.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = _objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = (0, _HelmetUtils.convertReactPropstoHtmlAttributes)(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case _HelmetConstants.TAG_NAMES.LINK:\n case _HelmetConstants.TAG_NAMES.META:\n case _HelmetConstants.TAG_NAMES.NOSCRIPT:\n case _HelmetConstants.TAG_NAMES.SCRIPT:\n case _HelmetConstants.TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return _react2.default.createElement(Component, newProps);\n };\n\n _createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n\n return HelmetWrapper;\n }(_react2.default.Component), _class.propTypes = {\n base: _propTypes2.default.object,\n bodyAttributes: _propTypes2.default.object,\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_propTypes2.default.node), _propTypes2.default.node]),\n defaultTitle: _propTypes2.default.string,\n defer: _propTypes2.default.bool,\n encodeSpecialCharacters: _propTypes2.default.bool,\n htmlAttributes: _propTypes2.default.object,\n link: _propTypes2.default.arrayOf(_propTypes2.default.object),\n meta: _propTypes2.default.arrayOf(_propTypes2.default.object),\n noscript: _propTypes2.default.arrayOf(_propTypes2.default.object),\n onChangeClientState: _propTypes2.default.func,\n script: _propTypes2.default.arrayOf(_propTypes2.default.object),\n style: _propTypes2.default.arrayOf(_propTypes2.default.object),\n title: _propTypes2.default.string,\n titleAttributes: _propTypes2.default.object,\n titleTemplate: _propTypes2.default.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = (0, _HelmetUtils.mapStateOnServer)({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = (0, _reactSideEffect2.default)(_HelmetUtils.reducePropsToState, _HelmetUtils.handleClientStateChange, _HelmetUtils.mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexports.Helmet = HelmetExport;\nexports.default = HelmetExport;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\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;\n\nvar evp = require('evp_bytestokey');\n\nvar ciphers = require('browserify-aes');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nmodule.exports = function (okey, password) {\n var key = okey.toString();\n var match = key.match(findProc);\n var decrypted;\n\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\n var tag = key.match(startRegex)[1];\n return {\n tag: tag,\n data: decrypted\n };\n};","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\n\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\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}\n\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1];\n\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\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};\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); // Initial Permutation\n\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};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n\n for (var i = off; i < buffer.length; i++) {\n buffer[i] = value;\n }\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n\n for (var i = buffer.length - pad; i < buffer.length; i++) {\n assert.equal(buffer[i], pad);\n }\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart; // Apply f() x16 times\n\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1]; // f(r, k)\n\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 } // Reverse Initial Permutation\n\n\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart; // Apply f() x16 times\n\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]; // f(r, k)\n\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 } // Reverse Initial Permutation\n\n\n utils.rip(l, r, out, off);\n};","var scope = typeof global !== \"undefined\" && global || typeof self !== \"undefined\" && self || window;\nvar apply = Function.prototype.apply; // DOM APIs, for completeness\n\nexports.setTimeout = function () {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\n\nexports.setInterval = function () {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\n\nexports.clearTimeout = exports.clearInterval = function (timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\n\nTimeout.prototype.unref = Timeout.prototype.ref = function () {};\n\nTimeout.prototype.close = function () {\n this._clearFn.call(scope, this._id);\n}; // Does not start the time, just sets up the members needed.\n\n\nexports.enroll = function (item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function (item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function (item) {\n clearTimeout(item._idleTimeoutId);\n var msecs = item._idleTimeout;\n\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout) item._onTimeout();\n }, msecs);\n }\n}; // setimmediate attaches itself to the global object\n\n\nrequire(\"setimmediate\"); // 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.\n\n\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 xor = require('buffer-xor');\n\nfunction getBlock(self) {\n self._prev = self._cipher.encryptBlock(self._prev);\n return self._prev;\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)]);\n }\n\n var pad = self._cache.slice(0, chunk.length);\n\n self._cache = self._cache.slice(chunk.length);\n return xor(chunk, pad);\n};","var Buffer = require('safe-buffer').Buffer;\n\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\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\n return out;\n}\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\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> 7;\n }\n\n return out;\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length;\n var out = Buffer.allocUnsafe(len);\n var i = -1;\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt);\n }\n\n return out;\n};","var BN = require('bn.js');\n\nvar Buffer = require('safe-buffer').Buffer;\n\nfunction withPublic(paddedMsg, key) {\n return Buffer.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray());\n}\n\nmodule.exports = withPublic;","'use strict';\n\nvar _Object$setPrototypeO;\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar finished = require('./end-of-stream');\n\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\n\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\n\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n\n if (resolve !== null) {\n var data = iter[kStream].read(); // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\n\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\n\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\n\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n\n next: function next() {\n var _this = this; // if we have detected an error in the meanwhile\n // reject straight away\n\n\n var error = this[kError];\n\n if (error !== null) {\n return Promise.reject(error);\n }\n\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n } // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n\n\n var lastPromise = this[kLastPromise];\n var promise;\n\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n\n promise = new Promise(this[kHandlePromise]);\n }\n\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this; // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n\n\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\n\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n\n iterator[kError] = err;\n return;\n }\n\n var resolve = iterator[kLastResolve];\n\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\n\nmodule.exports = createReadableStreamAsyncIterator;","var BN = require('bn.js');\n\nvar MillerRabin = require('miller-rabin');\n\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);\n\nvar primes = require('./generatePrime');\n\nvar randomBytes = require('randombytes');\n\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\n\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n\n if (hex in primeCache) {\n return primeCache[hex];\n }\n\n var error = 0;\n\n if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\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\n primeCache[hex] = error;\n return error;\n }\n\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n\n var rem;\n\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n\n break;\n\n case '05':\n rem = prime.mod(TEN);\n\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n\n break;\n\n default:\n error += 4;\n }\n\n primeCache[hex] = error;\n return error;\n}\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\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\n\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function get() {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n\n return this._primeCode;\n }\n});\n\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\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\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\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n'use strict';\n\nvar asn = require('asn1.js');\n\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;","module.exports = require('events').EventEmitter;","var randomBytes = require('randombytes');\n\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\n\nvar BN = require('bn.js');\n\nvar TWENTYFOUR = new BN(24);\n\nvar MillerRabin = require('miller-rabin');\n\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;\n\nfunction _getPrimes() {\n if (primes !== null) return primes;\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n\n for (var j = 0; j < i && res[j] <= sqrt; j++) {\n if (k % res[j] === 0) break;\n }\n\n if (i !== j && res[j] <= sqrt) continue;\n res[i++] = k;\n }\n\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++) {\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\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\n gen = new BN(gen);\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n\n if (num.isEven()) {\n num.iadd(ONE);\n }\n\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\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\n n2 = num.shrn(1);\n\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\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');","var MD5 = require('md5.js');\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest();\n};","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n function memoized() {\n var newArgs = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n\n return memoized;\n}\n\nexport default memoizeOne;","'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}\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\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\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\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\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\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\n while (p = p.next) {\n ret += s + p.data;\n }\n\n return ret;\n };\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\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n\n return ret;\n };\n\n return BufferList;\n}();\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}","// 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// 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'use strict';\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n};\n/**/\n\n\nmodule.exports = Duplex;\n\nvar Readable = require('./_stream_readable');\n\nvar Writable = require('./_stream_writable');\n\nrequire('inherits')(Duplex, Readable);\n\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n\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}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\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 get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\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 get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\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 get() {\n return this._writableState.length;\n }\n}); // the no-half-open enforcer\n\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return; // no more data can be written.\n // But allow more writes to happen in this tick.\n\n process.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\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 get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(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 } // backward compatibility, the user is explicitly\n // managing destroyed\n\n\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\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};\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};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\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\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >>> j + i & 1;\n }\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\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= inL >>> j + i & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\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\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\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0; // 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\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\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= inR >> j + i & 1;\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\n\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\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= inL >> j + i & 1;\n }\n }\n\n for (var j = 0; j <= 24; 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};\n\nexports.r28shl = function r28shl(num, shift) {\n return num << shift & 0xfffffff | num >>> 28 - shift;\n};\n\nvar pc2table = [// 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, // 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];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n var len = pc2table.length >>> 1;\n\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= inL >>> pc2table[i] & 0x1;\n }\n\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= inR >>> pc2table[i] & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n outL = (r & 1) << 5 | r >>> 27;\n\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= r >>> i & 0x3f;\n }\n\n for (var i = 11; i >= 3; i -= 4) {\n outR |= r >>> i & 0x3f;\n outR <<= 6;\n }\n\n outR |= (r & 0x1f) << 1 | r >>> 31;\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\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];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n\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\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\n return out >>> 0;\n};\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];\n\nexports.permute = function permute(num) {\n var out = 0;\n\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= num >>> permuteTable[i] & 0x1;\n }\n\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n\n while (str.length < size) {\n str = '0' + str;\n }\n\n var out = [];\n\n for (var i = 0; i < size; i += group) {\n out.push(str.slice(i, i + group));\n }\n\n return out.join(' ');\n};","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a