{"version":3,"sources":["webpack:////workdir/node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/utils.js","webpack:////workdir/node_modules/engine.io-client/lib/index.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/ec/index.js","webpack:////workdir/node_modules/diffie-hellman/lib/generatePrime.js","webpack:////workdir/node_modules/engine.io-client/lib/socket.js","webpack:////workdir/node_modules/evp_bytestokey/index.js","webpack:////workdir/node_modules/flatted/esm/index.js","webpack:////workdir/node_modules/has-cors/index.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curve/base.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curve/short.js","webpack:////workdir/node_modules/engine.io-client/lib/transport.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/polling.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:////workdir/node_modules/des.js/lib/des/cipher.js","webpack:////workdir/node_modules/des.js/lib/des.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/index.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js","webpack:////workdir/node_modules/des.js/lib/des/ede.js","webpack:////workdir/node_modules/engine.io-parser/lib/encodePacket.browser.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/polling-jsonp.js","webpack:////workdir/node_modules/engine.io-parser/lib/decodePacket.browser.js","webpack:////workdir/node_modules/engine.io-client/lib/util.js","webpack:////workdir/node_modules/elliptic/lib/elliptic.js","webpack:////workdir/node_modules/diffie-hellman/lib/dh.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/ec/key.js","webpack:////workdir/node_modules/events/events.js","webpack:////workdir/node_modules/des.js/lib/des/cbc.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/polling-xhr.js","webpack:////workdir/node_modules/engine.io-client/lib/transports/websocket.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curve/index.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:////workdir/node_modules/engine.io-client/lib/globalThis.browser.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/curves.js","webpack:////workdir/node_modules/des.js/lib/des/utils.js","webpack:////workdir/node_modules/engine.io-parser/lib/index.js","webpack:////workdir/node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:////workdir/node_modules/engine.io-client/lib/xmlhttprequest.js","webpack:////workdir/node_modules/des.js/lib/des/des.js","webpack:////workdir/node_modules/engine.io-parser/lib/commons.js","webpack:////workdir/node_modules/diffie-hellman/browser.js"],"names":["BN","utils","assert","cachedProperty","parseBytes","Signature","eddsa","sig","this","Array","isArray","R","slice","encodingLength","S","isPoint","_R","_S","_Rencoded","Rencoded","_Sencoded","Sencoded","decodeInt","decodePoint","encodePoint","encodeInt","prototype","toBytes","concat","toHex","encode","toUpperCase","module","exports","minAssert","minUtils","getNAF","num","w","bits","naf","Math","max","bitLength","fill","ws","k","clone","i","length","z","mod","andln","isOdd","isubn","iushrn","getJSF","k1","k2","jsf","m8","d1","d2","cmpn","u1","u2","m14","m24","push","obj","name","computer","key","undefined","call","bytes","toArray","intFromLE","zero2","Socket","uri","opts","protocol","Transport","transports","parser","inherits","Base","MontCurve","conf","a","toRed","red","b","i4","redInvm","two","a24","redMul","redAdd","Point","curve","x","BasePoint","one","zero","validate","point","normalize","x2","redSqr","rhs","y","redSqrt","cmp","enc","pointFromJSON","fromJSON","precompute","_encode","getX","p","byteLength","inspect","isInfinity","fromRed","toString","dbl","aa","redSub","bb","c","nx","nz","add","Error","diffAdd","diff","d","da","cb","redISub","mul","t","mulAdd","jumlAdd","eq","other","HmacDRBG","curves","rand","KeyPair","EC","options","Object","hasOwnProperty","PresetCurve","n","nh","ushrn","g","hash","keyPair","keyFromPrivate","priv","fromPrivate","keyFromPublic","pub","fromPublic","genKeyPair","drbg","pers","persEnc","entropy","hmacStrength","entropyEnc","nonce","ns2","sub","generate","iaddn","_truncateToN","msg","truncOnly","delta","sign","bkey","getPrivate","ns1","iter","kp","kpX","r","umod","s","invm","iadd","recoveryParam","getY","canonical","verify","signature","sinv","_maxwellTrick","jmulAdd","getPublic","eqXToP","recoverPubKey","j","e","isYOdd","isSecondKey","pointFromX","rInv","s1","s2","getKeyRecoveryParam","Q","Qprime","randomBytes","findPrime","simpleSieve","fermatTest","TWENTYFOUR","MillerRabin","millerRabin","ONE","TWO","FIVE","TEN","THREE","ELEVEN","FOUR","primes","_getPrimes","limit","res","sqrt","ceil","modn","mont","redPow","subn","gen","n2","ishrn","isEven","testn","shrn","test","Emitter","debug","parseuri","parseqs","installTimerFunctions","super","hostname","host","secure","port","query","location","readyState","writeBuffer","prevBufferLen","assign","path","agent","withCredentials","upgrade","jsonp","timestampParam","rememberUpgrade","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","replace","decode","id","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","addEventListener","transport","removeAllListeners","close","offlineEventListener","onClose","open","EIO","sid","socket","priorWebsocketSuccess","indexOf","setTimeoutFn","emit","createTransport","shift","setTransport","on","onDrain","bind","onPacket","onError","probe","failed","onTransportOpen","send","type","data","once","upgrading","pause","cleanup","flush","err","freezeTransport","onerror","error","onTransportClose","onclose","onupgrade","to","removeListener","l","packet","onHandshake","JSON","parse","resetPingTimeout","sendPacket","code","filterUpgrades","onOpen","clearTimeoutFn","autoUnref","unref","splice","writable","fn","compress","cleanupAndClose","waitForUpgrade","reason","desc","pingIntervalTimer","removeEventListener","filteredUpgrades","o","Buffer","MD5","EVP_BytesToKey","password","salt","keyBits","ivLen","isBuffer","from","RangeError","keyLen","alloc","iv","tmp","update","digest","used","keyStart","min","copy","ivStart","$parse","stringify","$stringify","keys","Primitive","String","primitive","ignore","object","noop","_","value","primitives","Primitives","revive","input","parsed","output","$","lazy","ke","has","apply","set","known","index","text","reviver","map","Set","replacer","space","v","Map","firstRun","join","after","get","toJSON","any","XMLHttpRequest","BaseCurve","prime","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","div","redN","precomputed","_fixedNafMul","doubles","_getDoubles","I","step","nafW","repr","jpoint","mixedAdd","points","neg","toP","_wnafMul","nafPoints","_getNAFPoints","wnd","acc","dblp","_wnafMulAdd","defW","coeffs","len","jacobianResult","wndWidth","comb","toJ","redNeg","ja","jb","encodeCompressed","compact","power","beta","_getBeta","_hasDoubles","ShortCurve","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","isRed","inf","forceRed","JPoint","zOne","lambda","basis","betas","_getEndoRoots","lambdas","vec","_getEndoBasis","ntinv","l1","l2","a0","b0","a1","b1","a2","b2","prevR","aprxSqrt","floor","u","x1","y1","y2","q","len1","sqr","len2","negative","_endoSplit","v1","v2","c1","divRound","c2","p1","p2","q1","q2","odd","redIAdd","ax","_endoWnafMulAdd","npoints","ncoeffs","split","ineg","pre","endoMul","obj2point","ny","ys1","dyinv","_precompute","negate","zinv","zinv2","ay","pz2","z2","h","h2","h3","pow","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","m","yyyy8","f","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","zs","rx","xc","description","doOpen","doClose","packets","write","decodePacket","binaryType","yeast","Polling","poll","onPause","polling","total","doPoll","callback","decodePayload","forEach","encodePayload","doWrite","schema","timestampRequests","supportsBinary","b64","Number","ipv6","EdwardsCurve","twisted","mOneA","extended","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","Cipher","blockSize","_init","buffer","bufferOff","_updateDecrypt","_updateEncrypt","_buffer","off","_flushBuffer","out","_update","inputOff","outputOff","count","final","first","last","_finalEncrypt","_finalDecrypt","_pad","_unpad","equal","DES","CBC","EDE","XHR","JSONP","websocket","xhr","xd","xs","isSSL","xdomain","xscheme","forceJSONP","globalThis","nextTick","isPromiseAvailable","Promise","resolve","then","WebSocket","MozWebSocket","usingBrowserWebSocket","defaultBinaryType","EDEState","k3","ciphers","create","state","_edeState","inp","inOff","outOff","PACKET_TYPES","withNativeBlob","Blob","withNativeArrayBuffer","ArrayBuffer","isView","encodePacket","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","readAsDataURL","rNewline","rEscapedNewline","callbacks","JSONPPolling","___eio","onData","script","parentNode","removeChild","form","iframe","document","createElement","async","src","insertAt","getElementsByTagName","insertBefore","head","body","appendChild","isUAgecko","navigator","userAgent","area","iframeId","className","style","position","top","left","target","method","setAttribute","complete","initIframe","action","html","submit","attachEvent","onreadystatechange","PACKET_TYPES_REVERSE","ERROR_PACKET","base64decoder","encodedPacket","mapBinary","charAt","decodeBase64Packet","substring","packetType","decoded","base64","pick","attr","reduce","NATIVE_SET_TIMEOUT","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","useNativeTimers","elliptic","version","ec","SEVEN","setPublicKey","_pub","setPrivateKey","_priv","DH","primeCache","checkPrime","generator","hex","rem","malleable","setGenerator","__prime","_prime","_primeLen","_primeCode","formatReturnValue","bn","buf","defineProperty","enumerable","__gen","generateKeys","_gen","getPublicKey","computeSecret","secret","getPrime","front","getPrivateKey","getGenerator","params","_secret","_pubBytes","fromSecret","lastIx","privBytes","message","getSecret","pubBytes","_importDER","Position","place","getLength","initial","octetLen","val","rmPadding","constructLength","arr","octets","log","LN2","rlen","slen","toDER","backHalf","_importPrivate","privEnc","_importPublic","pubEnc","derive","ReflectOwnKeys","Reflect","ReflectApply","receiver","args","Function","ProcessEmitWarning","warning","console","warn","ownKeys","getOwnPropertySymbols","getOwnPropertyNames","NumberIsNaN","isNaN","EventEmitter","init","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","listener","TypeError","_getMaxListeners","that","_addListener","prepend","events","existing","newListener","unshift","warned","emitter","onceWrapper","fired","wrapFn","arguments","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","spliceOne","list","pop","ret","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","handler","flags","wrapListener","arg","getPrototypeOf","setMaxListeners","getMaxListeners","doError","er","context","listeners","addListener","prependListener","prependOnceListener","originalListener","rawListeners","eventNames","proto","CBCState","instantiate","_cbcInit","_cbcState","superProto","constructor","super_","empty","hasXHR2","responseType","forceBase64","Request","req","request","pollXhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","requestTimeout","timeout","hasXDR","onLoad","responseText","status","requestsCount","requests","onSuccess","fromError","abort","XDomainRequest","enablesXDR","unloadHandler","terminationEvent","isReactNative","product","toLowerCase","WS","check","protocols","headers","addEventListeners","onopen","_socket","onmessage","ev","lastPacket","base","short","edwards","EDDSA","pointClass","sha512","keyFromSecret","hashInt","messagePrefix","s_","makeSignature","SG","RplusAh","normed","xIsOdd","self","window","defineCurve","configurable","sha256","sha384","readUInt32BE","writeUInt32BE","ip","inL","inR","outL","outR","rip","pc1","r28shl","pc2table","pc2","expand","sTable","substitute","sb","permuteTable","permute","padSplit","size","group","str","SEPARATOR","fromCharCode","encodedPackets","encodedPayload","decodedPacket","hasCORS","DESState","_desState","deriveKeys","shiftTable","kL","kR","_encrypt","_decrypt","pad","lStart","rStart","keyL","keyR","getDiffieHellman","ENCODINGS","createDiffieHellman","genc","generatePrime","DiffieHellmanGroup","createDiffieHellmanGroup","DiffieHellman"],"mappings":"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ACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN3Y,IAAK,CACHiZ,IAAK,EACLN,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,wE,qBCrwBR,MAAMiiB,EAAU,EAAQ,QAClBtU,EAAa,EAAQ,QAE3B9mB,EAAOC,QAAU,SAASgD,GACxB,MAAM0jB,EAAU1jB,EAAK0jB,QAIfC,EAAU3jB,EAAK2jB,QAIfwQ,EAAan0B,EAAKm0B,WAGxB,IACE,GAAI,qBAAuBvf,kBAAoB8O,GAAWyU,GACxD,OAAO,IAAIvjB,eAEb,MAAO5M,IAKT,IACE,GAAI,qBAAuBksB,iBAAmBvQ,GAAWwQ,EACvD,OAAO,IAAID,eAEb,MAAOlsB,IAET,IAAK0b,EACH,IACE,OAAO,IAAIG,EAAW,CAAC,UAAUlnB,OAAO,UAAU4X,KAAK,OACrD,qBAEF,MAAOvM,O,kCCnCb,IAAI/M,EAAS,EAAQ,QACjBoF,EAAW,EAAQ,QAEnBrF,EAAQ,EAAQ,QAChBymB,EAAS,EAAQ,QAErB,SAAS2W,IACP78B,KAAKqW,IAAM,IAAIpW,MAAM,GACrBD,KAAKgX,KAAO,KAGd,SAASyQ,EAAIxe,GACXid,EAAOhiB,KAAKlE,KAAMiJ,GAElB,IAAImgB,EAAQ,IAAIyT,EAChB78B,KAAK88B,UAAY1T,EAEjBppB,KAAK+8B,WAAW3T,EAAOngB,EAAQjF,KAEjCc,EAAS2iB,EAAKvB,GACd1kB,EAAOC,QAAUgmB,EAEjBA,EAAI0B,OAAS,SAAgBlgB,GAC3B,OAAO,IAAIwe,EAAIxe,IAGjB,IAAI+zB,EAAa,CACf,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGvBvV,EAAIvmB,UAAU67B,WAAa,SAAoB3T,EAAOplB,GACpDolB,EAAMpS,KAAO,IAAI/W,MAAM,IAEvBP,EAAO8nB,MAAMxjB,EAAIvB,OAAQzC,KAAKmmB,UAAW,sBAEzC,IAAI8W,EAAKx9B,EAAMw7B,aAAaj3B,EAAK,GAC7Bk5B,EAAKz9B,EAAMw7B,aAAaj3B,EAAK,GAEjCvE,EAAMg8B,IAAIwB,EAAIC,EAAI9T,EAAM/S,IAAK,GAC7B4mB,EAAK7T,EAAM/S,IAAI,GACf6mB,EAAK9T,EAAM/S,IAAI,GACf,IAAK,IAAI7T,EAAI,EAAGA,EAAI4mB,EAAMpS,KAAKvU,OAAQD,GAAK,EAAG,CAC7C,IAAI4P,EAAQ4qB,EAAWx6B,IAAM,GAC7By6B,EAAKx9B,EAAMi8B,OAAOuB,EAAI7qB,GACtB8qB,EAAKz9B,EAAMi8B,OAAOwB,EAAI9qB,GACtB3S,EAAMm8B,IAAIqB,EAAIC,EAAI9T,EAAMpS,KAAMxU,KAIlCilB,EAAIvmB,UAAU2lB,QAAU,SAAiByC,EAAKC,EAAO3C,EAAK4C,GACxD,IAAIJ,EAAQppB,KAAK88B,UAEb/oB,EAAItU,EAAMw7B,aAAa3R,EAAKC,GAC5B/d,EAAI/L,EAAMw7B,aAAa3R,EAAKC,EAAQ,GAGxC9pB,EAAM07B,GAAGpnB,EAAGvI,EAAG4d,EAAM/S,IAAK,GAC1BtC,EAAIqV,EAAM/S,IAAI,GACd7K,EAAI4d,EAAM/S,IAAI,GAEI,YAAdrW,KAAK+S,KACP/S,KAAKm9B,SAAS/T,EAAOrV,EAAGvI,EAAG4d,EAAM/S,IAAK,GAEtCrW,KAAKo9B,SAAShU,EAAOrV,EAAGvI,EAAG4d,EAAM/S,IAAK,GAExCtC,EAAIqV,EAAM/S,IAAI,GACd7K,EAAI4d,EAAM/S,IAAI,GAEd5W,EAAMy7B,cAActU,EAAK7S,EAAGyV,GAC5B/pB,EAAMy7B,cAActU,EAAKpb,EAAGge,EAAS,IAGvC/B,EAAIvmB,UAAUomB,KAAO,SAAcjB,EAAQK,GAEzC,IADA,IAAIlP,EAAQ6O,EAAO5jB,OAASikB,EACnBlkB,EAAIkkB,EAAKlkB,EAAI6jB,EAAO5jB,OAAQD,IACnC6jB,EAAO7jB,GAAKgV,EAEd,OAAO,GAGTiQ,EAAIvmB,UAAUqmB,OAAS,SAAgBlB,GAErC,IADA,IAAIgX,EAAMhX,EAAOA,EAAO5jB,OAAS,GACxBD,EAAI6jB,EAAO5jB,OAAS46B,EAAK76B,EAAI6jB,EAAO5jB,OAAQD,IACnD9C,EAAO8nB,MAAMnB,EAAO7jB,GAAI66B,GAE1B,OAAOhX,EAAOjmB,MAAM,EAAGimB,EAAO5jB,OAAS46B,IAGzC5V,EAAIvmB,UAAUi8B,SAAW,SAAkB/T,EAAOkU,EAAQC,EAAQ3W,EAAKF,GAKrE,IAJA,IAAI3S,EAAIupB,EACJ9xB,EAAI+xB,EAGC/6B,EAAI,EAAGA,EAAI4mB,EAAMpS,KAAKvU,OAAQD,GAAK,EAAG,CAC7C,IAAIg7B,EAAOpU,EAAMpS,KAAKxU,GAClBi7B,EAAOrU,EAAMpS,KAAKxU,EAAI,GAG1B/C,EAAMo8B,OAAOrwB,EAAG4d,EAAM/S,IAAK,GAE3BmnB,GAAQpU,EAAM/S,IAAI,GAClBonB,GAAQrU,EAAM/S,IAAI,GAClB,IAAI3K,EAAIjM,EAAMs8B,WAAWyB,EAAMC,GAC3Brb,EAAI3iB,EAAMy8B,QAAQxwB,GAElBnD,EAAIiD,EACRA,GAAKuI,EAAIqO,KAAO,EAChBrO,EAAIxL,EAIN9I,EAAM+7B,IAAIhwB,EAAGuI,EAAG6S,EAAKF,IAGvBe,EAAIvmB,UAAUk8B,SAAW,SAAkBhU,EAAOkU,EAAQC,EAAQ3W,EAAKF,GAKrE,IAJA,IAAI3S,EAAIwpB,EACJ/xB,EAAI8xB,EAGC96B,EAAI4mB,EAAMpS,KAAKvU,OAAS,EAAGD,GAAK,EAAGA,GAAK,EAAG,CAClD,IAAIg7B,EAAOpU,EAAMpS,KAAKxU,GAClBi7B,EAAOrU,EAAMpS,KAAKxU,EAAI,GAG1B/C,EAAMo8B,OAAO9nB,EAAGqV,EAAM/S,IAAK,GAE3BmnB,GAAQpU,EAAM/S,IAAI,GAClBonB,GAAQrU,EAAM/S,IAAI,GAClB,IAAI3K,EAAIjM,EAAMs8B,WAAWyB,EAAMC,GAC3Brb,EAAI3iB,EAAMy8B,QAAQxwB,GAElBnD,EAAIwL,EACRA,GAAKvI,EAAI4W,KAAO,EAChB5W,EAAIjD,EAIN9I,EAAM+7B,IAAIznB,EAAGvI,EAAGob,EAAKF,K,mBC5IvB,MAAM+C,EAAevgB,OAAOigB,OAAO,MACnCM,EAAa,QAAU,IACvBA,EAAa,SAAW,IACxBA,EAAa,QAAU,IACvBA,EAAa,QAAU,IACvBA,EAAa,WAAa,IAC1BA,EAAa,WAAa,IAC1BA,EAAa,QAAU,IAEvB,MAAMuD,EAAuB9jB,OAAOigB,OAAO,MAC3CjgB,OAAO8N,KAAKyS,GAAchF,QAAQzgB,IAChCgpB,EAAqBvD,EAAazlB,IAAQA,IAG5C,MAAMipB,EAAe,CAAEla,KAAM,QAASC,KAAM,gBAE5CxR,EAAOC,QAAU,CACfgoB,eACAuD,uBACAC,iB,sBCnBF,kBAAoB,EAAQ,QACxBhf,EAAS,EAAQ,QAEjB0gB,EAAK,EAAQ,QAEjB,SAAS+O,EAAkB/6B,GACzB,IAAI4W,EAAQ,IAAI/D,EAAOvH,EAAOtL,GAAK4W,MAAO,OACtC5K,EAAM,IAAI6G,EAAOvH,EAAOtL,GAAKgM,IAAK,OAEtC,OAAO,IAAIggB,EAAGpV,EAAO5K,GAGvB,IAAIgvB,EAAY,CACd,QAAU,EAAM,KAAO,EAAM,QAAU,GAGzC,SAASC,EAAqBrkB,EAAO5S,EAAKmoB,EAAW+O,GACnD,OAAIroB,EAAOO,SAASpP,SAA2B1C,IAAnB05B,EAAUh3B,GAC7Bi3B,EAAoBrkB,EAAO,SAAU5S,EAAKmoB,IAGnDnoB,EAAMA,GAAO,SACbk3B,EAAOA,GAAQ,SACf/O,EAAYA,GAAa,IAAItZ,EAAO,CAAC,IAEhCA,EAAOO,SAAS+Y,KACnBA,EAAY,IAAItZ,EAAOsZ,EAAW+O,IAGf,kBAAVtkB,EACF,IAAIoV,EAAGmP,EAAcvkB,EAAOuV,GAAYA,GAAW,IAGvDtZ,EAAOO,SAASwD,KACnBA,EAAQ,IAAI/D,EAAO+D,EAAO5S,IAGrB,IAAIgoB,EAAGpV,EAAOuV,GAAW,KAGlCrtB,EAAQs8B,mBAAqBt8B,EAAQu8B,yBAA2Bv8B,EAAQi8B,iBAAmBA,EAC3Fj8B,EAAQm8B,oBAAsBn8B,EAAQw8B,cAAgBL,I","file":"static/js/app-66c336cc.js","sourcesContent":["'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n 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\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\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});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\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;\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\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;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\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 if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n 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}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","const Socket = require(\"./socket\");\n\nmodule.exports = (uri, opts) => new Socket(uri, opts);\n\n/**\n * Expose deps for legacy compatibility\n * and standalone browser access.\n */\n\nmodule.exports.Socket = Socket;\nmodule.exports.protocol = Socket.protocol; // this is an int\nmodule.exports.Transport = require(\"./transport\");\nmodule.exports.transports = require(\"./transports/index\");\nmodule.exports.parser = require(\"engine.io-parser\");\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n 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.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\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 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 gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","const transports = require(\"./transports/index\");\nconst Emitter = require(\"component-emitter\");\nconst debug = require(\"debug\")(\"engine.io-client:socket\");\nconst parser = require(\"engine.io-parser\");\nconst parseuri = require(\"parseuri\");\nconst parseqs = require(\"parseqs\");\nconst { installTimerFunctions } = require(\"./util\");\n\nclass Socket extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri or options\n * @param {Object} options\n * @api public\n */\n constructor(uri, opts = {}) {\n super();\n\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n\n if (uri) {\n uri = parseuri(uri);\n opts.hostname = uri.host;\n opts.secure = uri.protocol === \"https\" || uri.protocol === \"wss\";\n opts.port = uri.port;\n if (uri.query) opts.query = uri.query;\n } else if (opts.host) {\n opts.hostname = parseuri(opts.host).host;\n }\n\n installTimerFunctions(this, opts);\n\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? 443\n : 80);\n\n this.transports = opts.transports || [\"polling\", \"websocket\"];\n this.readyState = \"\";\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n\n this.opts = Object.assign(\n {\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n jsonp: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024\n },\n transportOptions: {},\n closeOnBeforeunload: true\n },\n opts\n );\n\n this.opts.path = this.opts.path.replace(/\\/$/, \"\") + \"/\";\n\n if (typeof this.opts.query === \"string\") {\n this.opts.query = parseqs.decode(this.opts.query);\n }\n\n // set on handshake\n this.id = null;\n this.upgrades = null;\n this.pingInterval = null;\n this.pingTimeout = null;\n\n // set on heartbeat\n this.pingTimeoutTimer = null;\n\n if (typeof addEventListener === \"function\") {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n addEventListener(\n \"beforeunload\",\n () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n },\n false\n );\n }\n if (this.hostname !== \"localhost\") {\n this.offlineEventListener = () => {\n this.onClose(\"transport close\");\n };\n addEventListener(\"offline\", this.offlineEventListener, false);\n }\n }\n\n this.open();\n }\n\n /**\n * Creates transport of the given type.\n *\n * @param {String} transport name\n * @return {Transport}\n * @api private\n */\n createTransport(name) {\n debug('creating transport \"%s\"', name);\n const query = clone(this.opts.query);\n\n // append engine.io protocol identifier\n query.EIO = parser.protocol;\n\n // transport name\n query.transport = name;\n\n // session id if we already have one\n if (this.id) query.sid = this.id;\n\n const opts = Object.assign(\n {},\n this.opts.transportOptions[name],\n this.opts,\n {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port\n }\n );\n\n debug(\"options: %j\", opts);\n\n return new transports[name](opts);\n }\n\n /**\n * Initializes transport to use and starts probe.\n *\n * @api private\n */\n open() {\n let transport;\n if (\n this.opts.rememberUpgrade &&\n Socket.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ) {\n transport = \"websocket\";\n } else if (0 === this.transports.length) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emit(\"error\", \"No transports available\");\n }, 0);\n return;\n } else {\n transport = this.transports[0];\n }\n this.readyState = \"opening\";\n\n // Retry with the next transport if the transport is disabled (jsonp: false)\n try {\n transport = this.createTransport(transport);\n } catch (e) {\n debug(\"error while creating transport: %s\", e);\n this.transports.shift();\n this.open();\n return;\n }\n\n transport.open();\n this.setTransport(transport);\n }\n\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @api private\n */\n setTransport(transport) {\n debug(\"setting transport %s\", transport.name);\n\n if (this.transport) {\n debug(\"clearing existing transport %s\", this.transport.name);\n this.transport.removeAllListeners();\n }\n\n // set up transport\n this.transport = transport;\n\n // set up transport listeners\n transport\n .on(\"drain\", this.onDrain.bind(this))\n .on(\"packet\", this.onPacket.bind(this))\n .on(\"error\", this.onError.bind(this))\n .on(\"close\", () => {\n this.onClose(\"transport close\");\n });\n }\n\n /**\n * Probes a transport.\n *\n * @param {String} transport name\n * @api private\n */\n probe(name) {\n debug('probing transport \"%s\"', name);\n let transport = this.createTransport(name, { probe: 1 });\n let failed = false;\n\n Socket.priorWebsocketSuccess = false;\n\n const onTransportOpen = () => {\n if (failed) return;\n\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", msg => {\n if (failed) return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n debug('probe transport \"%s\" pong', name);\n this.upgrading = true;\n this.emit(\"upgrading\", transport);\n if (!transport) return;\n Socket.priorWebsocketSuccess = \"websocket\" === transport.name;\n\n debug('pausing current transport \"%s\"', this.transport.name);\n this.transport.pause(() => {\n if (failed) return;\n if (\"closed\" === this.readyState) return;\n debug(\"changing transport and sending upgrade packet\");\n\n cleanup();\n\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emit(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n } else {\n debug('probe transport \"%s\" failed', name);\n const err = new Error(\"probe error\");\n err.transport = transport.name;\n this.emit(\"upgradeError\", err);\n }\n });\n };\n\n function freezeTransport() {\n if (failed) return;\n\n // Any callback called by transport should be ignored since now\n failed = true;\n\n cleanup();\n\n transport.close();\n transport = null;\n }\n\n // Handle any error that happens while probing\n const onerror = err => {\n const error = new Error(\"probe error: \" + err);\n error.transport = transport.name;\n\n freezeTransport();\n\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n\n this.emit(\"upgradeError\", error);\n };\n\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.removeListener(\"close\", onclose);\n this.removeListener(\"upgrading\", onupgrade);\n };\n\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n\n transport.open();\n }\n\n /**\n * Called when connection is deemed open.\n *\n * @api public\n */\n onOpen() {\n debug(\"socket open\");\n this.readyState = \"open\";\n Socket.priorWebsocketSuccess = \"websocket\" === this.transport.name;\n this.emit(\"open\");\n this.flush();\n\n // we check for `readyState` in case an `open`\n // listener already closed the socket\n if (\n \"open\" === this.readyState &&\n this.opts.upgrade &&\n this.transport.pause\n ) {\n debug(\"starting upgrade probes\");\n let i = 0;\n const l = this.upgrades.length;\n for (; i < l; i++) {\n this.probe(this.upgrades[i]);\n }\n }\n }\n\n /**\n * Handles a packet.\n *\n * @api private\n */\n onPacket(packet) {\n if (\n \"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState\n ) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n\n this.emit(\"packet\", packet);\n\n // Socket is live - any packet counts\n this.emit(\"heartbeat\");\n\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n\n case \"ping\":\n this.resetPingTimeout();\n this.sendPacket(\"pong\");\n this.emit(\"ping\");\n this.emit(\"pong\");\n break;\n\n case \"error\":\n const err = new Error(\"server error\");\n err.code = packet.data;\n this.onError(err);\n break;\n\n case \"message\":\n this.emit(\"data\", packet.data);\n this.emit(\"message\", packet.data);\n break;\n }\n } else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n }\n\n /**\n * Called upon handshake completion.\n *\n * @param {Object} handshake obj\n * @api private\n */\n onHandshake(data) {\n this.emit(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this.upgrades = this.filterUpgrades(data.upgrades);\n this.pingInterval = data.pingInterval;\n this.pingTimeout = data.pingTimeout;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState) return;\n this.resetPingTimeout();\n }\n\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @api private\n */\n resetPingTimeout() {\n this.clearTimeoutFn(this.pingTimeoutTimer);\n this.pingTimeoutTimer = this.setTimeoutFn(() => {\n this.onClose(\"ping timeout\");\n }, this.pingInterval + this.pingTimeout);\n if (this.opts.autoUnref) {\n this.pingTimeoutTimer.unref();\n }\n }\n\n /**\n * Called on `drain` event\n *\n * @api private\n */\n onDrain() {\n this.writeBuffer.splice(0, this.prevBufferLen);\n\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this.prevBufferLen = 0;\n\n if (0 === this.writeBuffer.length) {\n this.emit(\"drain\");\n } else {\n this.flush();\n }\n }\n\n /**\n * Flush write buffers.\n *\n * @api private\n */\n flush() {\n if (\n \"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length\n ) {\n debug(\"flushing %d packets in socket\", this.writeBuffer.length);\n this.transport.send(this.writeBuffer);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this.prevBufferLen = this.writeBuffer.length;\n this.emit(\"flush\");\n }\n }\n\n /**\n * Sends a message.\n *\n * @param {String} message.\n * @param {Function} callback function.\n * @param {Object} options.\n * @return {Socket} for chaining.\n * @api public\n */\n write(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n\n send(msg, options, fn) {\n this.sendPacket(\"message\", msg, options, fn);\n return this;\n }\n\n /**\n * Sends a packet.\n *\n * @param {String} packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} callback function.\n * @api private\n */\n sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n\n options = options || {};\n options.compress = false !== options.compress;\n\n const packet = {\n type: type,\n data: data,\n options: options\n };\n this.emit(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn) this.once(\"flush\", fn);\n this.flush();\n }\n\n /**\n * Closes the connection.\n *\n * @api private\n */\n close() {\n const close = () => {\n this.onClose(\"forced close\");\n debug(\"socket closing - telling transport to close\");\n this.transport.close();\n };\n\n const cleanupAndClose = () => {\n this.removeListener(\"upgrade\", cleanupAndClose);\n this.removeListener(\"upgradeError\", cleanupAndClose);\n close();\n };\n\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n });\n } else if (this.upgrading) {\n waitForUpgrade();\n } else {\n close();\n }\n }\n\n return this;\n }\n\n /**\n * Called upon transport error\n *\n * @api private\n */\n onError(err) {\n debug(\"socket error %j\", err);\n Socket.priorWebsocketSuccess = false;\n this.emit(\"error\", err);\n this.onClose(\"transport error\", err);\n }\n\n /**\n * Called upon transport close.\n *\n * @api private\n */\n onClose(reason, desc) {\n if (\n \"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState\n ) {\n debug('socket close with reason: \"%s\"', reason);\n\n // clear timers\n this.clearTimeoutFn(this.pingIntervalTimer);\n this.clearTimeoutFn(this.pingTimeoutTimer);\n\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n\n // ensure transport won't stay open\n this.transport.close();\n\n // ignore further transport communication\n this.transport.removeAllListeners();\n\n if (typeof removeEventListener === \"function\") {\n removeEventListener(\"offline\", this.offlineEventListener, false);\n }\n\n // set ready state\n this.readyState = \"closed\";\n\n // clear session id\n this.id = null;\n\n // emit close event\n this.emit(\"close\", reason, desc);\n\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this.prevBufferLen = 0;\n }\n }\n\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} server upgrades\n * @api private\n *\n */\n filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n let i = 0;\n const j = upgrades.length;\n for (; i < j; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n\nSocket.priorWebsocketSuccess = false;\n\n/**\n * Protocol version.\n *\n * @api public\n */\n\nSocket.protocol = parser.protocol; // this is an int\n\nfunction clone(obj) {\n const o = {};\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n o[i] = obj[i];\n }\n }\n return o;\n}\n\nmodule.exports = Socket;\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","/*! (c) 2020 Andrea Giammarchi */\n\nconst {parse: $parse, stringify: $stringify} = JSON;\nconst {keys} = Object;\n\nconst Primitive = String; // it could be Number\nconst primitive = 'string'; // it could be 'number'\n\nconst ignore = {};\nconst object = 'object';\n\nconst noop = (_, value) => value;\n\nconst primitives = value => (\n value instanceof Primitive ? Primitive(value) : value\n);\n\nconst Primitives = (_, value) => (\n typeof value === primitive ? new Primitive(value) : value\n);\n\nconst revive = (input, parsed, output, $) => {\n const lazy = [];\n for (let ke = keys(output), {length} = ke, y = 0; y < length; y++) {\n const k = ke[y];\n const value = output[k];\n if (value instanceof Primitive) {\n const tmp = input[value];\n if (typeof tmp === object && !parsed.has(tmp)) {\n parsed.add(tmp);\n output[k] = ignore;\n lazy.push({k, a: [input, parsed, tmp, $]});\n }\n else\n output[k] = $.call(output, k, tmp);\n }\n else if (output[k] !== ignore)\n output[k] = $.call(output, k, value);\n }\n for (let {length} = lazy, i = 0; i < length; i++) {\n const {k, a} = lazy[i];\n output[k] = $.call(output, k, revive.apply(null, a));\n }\n return output;\n};\n\nconst set = (known, input, value) => {\n const index = Primitive(input.push(value) - 1);\n known.set(value, index);\n return index;\n};\n\nexport const parse = (text, reviver) => {\n const input = $parse(text, Primitives).map(primitives);\n const value = input[0];\n const $ = reviver || noop;\n const tmp = typeof value === object && value ?\n revive(input, new Set, value, $) :\n value;\n return $.call({'': tmp}, '', tmp);\n};\n\nexport const stringify = (value, replacer, space) => {\n const $ = replacer && typeof replacer === object ?\n (k, v) => (k === '' || -1 < replacer.indexOf(k) ? v : void 0) :\n (replacer || noop);\n const known = new Map;\n const input = [];\n const output = [];\n let i = +set(known, input, $.call({'': value}, '', value));\n let firstRun = !i;\n while (i < input.length) {\n firstRun = true;\n output[i] = $stringify(input[i++], replace, space);\n }\n return '[' + output.join(',') + ']';\n function replace(key, value) {\n if (firstRun) {\n firstRun = !firstRun;\n return value;\n }\n const after = $.call(this, key, value);\n switch (typeof after) {\n case object:\n if (after === null) return after;\n case primitive:\n return known.get(after) || set(known, input, after);\n }\n return after;\n }\n};\n\nexport const toJSON = any => $parse(stringify(any));\nexport const fromJSON = any => parse($stringify(any));\n","\n/**\n * Module exports.\n *\n * Logic borrowed from Modernizr:\n *\n * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js\n */\n\ntry {\n module.exports = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n} catch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n module.exports = false;\n}\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\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 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;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\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 for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\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 for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\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\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\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\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\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)\n return this;\n\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\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\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)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\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)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\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 for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\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\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\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\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\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));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, 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\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\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)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\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 =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\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)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\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')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n 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())\n 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)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n 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)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\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())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n 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)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n 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)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (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)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\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 if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\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())\n return this.curve.point(null, null);\n\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\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())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\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\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\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\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\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)\n jz4 = jz4.redMul(jyd4);\n\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())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\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\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\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\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)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n 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};\n","const parser = require(\"engine.io-parser\");\nconst Emitter = require(\"component-emitter\");\nconst { installTimerFunctions } = require(\"./util\");\nconst debug = require(\"debug\")(\"engine.io-client:transport\");\n\nclass Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} options.\n * @api private\n */\n constructor(opts) {\n super();\n installTimerFunctions(this, opts);\n\n this.opts = opts;\n this.query = opts.query;\n this.readyState = \"\";\n this.socket = opts.socket;\n }\n\n /**\n * Emits an error.\n *\n * @param {String} str\n * @return {Transport} for chaining\n * @api public\n */\n onError(msg, desc) {\n const err = new Error(msg);\n err.type = \"TransportError\";\n err.description = desc;\n this.emit(\"error\", err);\n return this;\n }\n\n /**\n * Opens the transport.\n *\n * @api public\n */\n open() {\n if (\"closed\" === this.readyState || \"\" === this.readyState) {\n this.readyState = \"opening\";\n this.doOpen();\n }\n\n return this;\n }\n\n /**\n * Closes the transport.\n *\n * @api private\n */\n close() {\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.doClose();\n this.onClose();\n }\n\n return this;\n }\n\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n * @api private\n */\n send(packets) {\n if (\"open\" === this.readyState) {\n this.write(packets);\n } else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n debug(\"transport is not open, discarding packets\");\n }\n }\n\n /**\n * Called upon open\n *\n * @api private\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n this.emit(\"open\");\n }\n\n /**\n * Called with data.\n *\n * @param {String} data\n * @api private\n */\n onData(data) {\n const packet = parser.decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n\n /**\n * Called with a decoded packet.\n */\n onPacket(packet) {\n this.emit(\"packet\", packet);\n }\n\n /**\n * Called upon close.\n *\n * @api private\n */\n onClose() {\n this.readyState = \"closed\";\n this.emit(\"close\");\n }\n}\n\nmodule.exports = Transport;\n","const Transport = require(\"../transport\");\nconst parseqs = require(\"parseqs\");\nconst parser = require(\"engine.io-parser\");\nconst yeast = require(\"yeast\");\n\nconst debug = require(\"debug\")(\"engine.io-client:polling\");\n\nclass Polling extends Transport {\n /**\n * Transport name.\n */\n get name() {\n return \"polling\";\n }\n\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @api private\n */\n doOpen() {\n this.poll();\n }\n\n /**\n * Pauses polling.\n *\n * @param {Function} callback upon buffers are flushed and transport is paused\n * @api private\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n\n const pause = () => {\n debug(\"paused\");\n this.readyState = \"paused\";\n onPause();\n };\n\n if (this.polling || !this.writable) {\n let total = 0;\n\n if (this.polling) {\n debug(\"we are currently polling - waiting to pause\");\n total++;\n this.once(\"pollComplete\", function() {\n debug(\"pre-pause polling complete\");\n --total || pause();\n });\n }\n\n if (!this.writable) {\n debug(\"we are currently writing - waiting to pause\");\n total++;\n this.once(\"drain\", function() {\n debug(\"pre-pause writing complete\");\n --total || pause();\n });\n }\n } else {\n pause();\n }\n }\n\n /**\n * Starts polling cycle.\n *\n * @api public\n */\n poll() {\n debug(\"polling\");\n this.polling = true;\n this.doPoll();\n this.emit(\"poll\");\n }\n\n /**\n * Overloads onData to detect payloads.\n *\n * @api private\n */\n onData(data) {\n debug(\"polling got data %s\", data);\n const callback = packet => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose();\n return false;\n }\n\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n\n // decode payload\n parser.decodePayload(data, this.socket.binaryType).forEach(callback);\n\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this.polling = false;\n this.emit(\"pollComplete\");\n\n if (\"open\" === this.readyState) {\n this.poll();\n } else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n }\n\n /**\n * For polling, send a close packet.\n *\n * @api private\n */\n doClose() {\n const close = () => {\n debug(\"writing close packet\");\n this.write([{ type: \"close\" }]);\n };\n\n if (\"open\" === this.readyState) {\n debug(\"transport open - closing\");\n close();\n } else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug(\"transport not open - deferring close\");\n this.once(\"open\", close);\n }\n }\n\n /**\n * Writes a packets payload.\n *\n * @param {Array} data packets\n * @param {Function} drain callback\n * @api private\n */\n write(packets) {\n this.writable = false;\n\n parser.encodePayload(packets, data => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emit(\"drain\");\n });\n });\n }\n\n /**\n * Generates uri for connection.\n *\n * @api private\n */\n uri() {\n let query = this.query || {};\n const schema = this.opts.secure ? \"https\" : \"http\";\n let port = \"\";\n\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = yeast();\n }\n\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n\n query = parseqs.encode(query);\n\n // avoid port if default for schema\n if (\n this.opts.port &&\n ((\"https\" === schema && Number(this.opts.port) !== 443) ||\n (\"http\" === schema && Number(this.opts.port) !== 80))\n ) {\n port = \":\" + this.opts.port;\n }\n\n // prepend ? to query\n if (query.length) {\n query = \"?\" + query;\n }\n\n const ipv6 = this.opts.hostname.indexOf(\":\") !== -1;\n return (\n schema +\n \"://\" +\n (ipv6 ? \"[\" + this.opts.hostname + \"]\" : this.opts.hostname) +\n port +\n this.opts.path +\n query\n );\n }\n}\n\nmodule.exports = Polling;\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\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\n Base.call(this, 'edwards', conf);\n\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\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\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\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\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)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\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\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\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())\n 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 &&\n (this.y.cmp(this.z) === 0 ||\n (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\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n 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\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n 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)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n 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(),\n this.y,\n this.z,\n 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 ||\n this.getX().cmp(other.getX()) === 0 &&\n 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)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n 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 for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\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\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\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 this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\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');\n","const XMLHttpRequest = require(\"xmlhttprequest-ssl\");\nconst XHR = require(\"./polling-xhr\");\nconst JSONP = require(\"./polling-jsonp\");\nconst websocket = require(\"./websocket\");\n\nexports.polling = polling;\nexports.websocket = websocket;\n\n/**\n * Polling transport polymorphic constructor.\n * Decides on xhr vs jsonp based on feature detection.\n *\n * @api private\n */\n\nfunction polling(opts) {\n let xhr;\n let xd = false;\n let xs = false;\n const jsonp = false !== opts.jsonp;\n\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? 443 : 80;\n }\n\n xd = opts.hostname !== location.hostname || port !== opts.port;\n xs = opts.secure !== isSSL;\n }\n\n opts.xdomain = xd;\n opts.xscheme = xs;\n xhr = new XMLHttpRequest(opts);\n\n if (\"open\" in xhr && !opts.forceJSONP) {\n return new XHR(opts);\n } else {\n if (!jsonp) throw new Error(\"JSONP disabled\");\n return new JSONP(opts);\n }\n}\n","const globalThis = require(\"../globalThis\");\nconst nextTick = (() => {\n const isPromiseAvailable =\n typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return cb => Promise.resolve().then(cb);\n } else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\n\nmodule.exports = {\n WebSocket: globalThis.WebSocket || globalThis.MozWebSocket,\n usingBrowserWebSocket: true,\n defaultBinaryType: \"arraybuffer\",\n nextTick\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\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 = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\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 state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","const { PACKET_TYPES } = require(\"./commons\");\n\nconst withNativeBlob =\n typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = obj => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\n\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n } else {\n return encodeBlobAsBase64(data, callback);\n }\n } else if (\n withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))\n ) {\n if (supportsBinary) {\n return callback(data);\n } else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\n\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function() {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + content);\n };\n return fileReader.readAsDataURL(data);\n};\n\nmodule.exports = encodePacket;\n","const Polling = require(\"./polling\");\nconst globalThis = require(\"../globalThis\");\n\nconst rNewline = /\\n/g;\nconst rEscapedNewline = /\\\\n/g;\n\n/**\n * Global JSONP callbacks.\n */\n\nlet callbacks;\n\nclass JSONPPolling extends Polling {\n /**\n * JSONP Polling constructor.\n *\n * @param {Object} opts.\n * @api public\n */\n constructor(opts) {\n super(opts);\n\n this.query = this.query || {};\n\n // define global callbacks array if not present\n // we do this here (lazily) to avoid unneeded global pollution\n if (!callbacks) {\n // we need to consider multiple engines in the same page\n callbacks = globalThis.___eio = globalThis.___eio || [];\n }\n\n // callback identifier\n this.index = callbacks.length;\n\n // add callback to jsonp global\n callbacks.push(this.onData.bind(this));\n\n // append to query string\n this.query.j = this.index;\n }\n\n /**\n * JSONP only supports binary as base64 encoded strings\n */\n get supportsBinary() {\n return false;\n }\n\n /**\n * Closes the socket.\n *\n * @api private\n */\n doClose() {\n if (this.script) {\n // prevent spurious errors from being emitted when the window is unloaded\n this.script.onerror = () => {};\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n if (this.form) {\n this.form.parentNode.removeChild(this.form);\n this.form = null;\n this.iframe = null;\n }\n\n super.doClose();\n }\n\n /**\n * Starts a poll cycle.\n *\n * @api private\n */\n doPoll() {\n const script = document.createElement(\"script\");\n\n if (this.script) {\n this.script.parentNode.removeChild(this.script);\n this.script = null;\n }\n\n script.async = true;\n script.src = this.uri();\n script.onerror = e => {\n this.onError(\"jsonp poll error\", e);\n };\n\n const insertAt = document.getElementsByTagName(\"script\")[0];\n if (insertAt) {\n insertAt.parentNode.insertBefore(script, insertAt);\n } else {\n (document.head || document.body).appendChild(script);\n }\n this.script = script;\n\n const isUAgecko =\n \"undefined\" !== typeof navigator && /gecko/i.test(navigator.userAgent);\n\n if (isUAgecko) {\n this.setTimeoutFn(function() {\n const iframe = document.createElement(\"iframe\");\n document.body.appendChild(iframe);\n document.body.removeChild(iframe);\n }, 100);\n }\n }\n\n /**\n * Writes with a hidden iframe.\n *\n * @param {String} data to send\n * @param {Function} called upon flush.\n * @api private\n */\n doWrite(data, fn) {\n let iframe;\n\n if (!this.form) {\n const form = document.createElement(\"form\");\n const area = document.createElement(\"textarea\");\n const id = (this.iframeId = \"eio_iframe_\" + this.index);\n\n form.className = \"socketio\";\n form.style.position = \"absolute\";\n form.style.top = \"-1000px\";\n form.style.left = \"-1000px\";\n form.target = id;\n form.method = \"POST\";\n form.setAttribute(\"accept-charset\", \"utf-8\");\n area.name = \"d\";\n form.appendChild(area);\n document.body.appendChild(form);\n\n this.form = form;\n this.area = area;\n }\n\n this.form.action = this.uri();\n\n function complete() {\n initIframe();\n fn();\n }\n\n const initIframe = () => {\n if (this.iframe) {\n try {\n this.form.removeChild(this.iframe);\n } catch (e) {\n this.onError(\"jsonp polling iframe removal error\", e);\n }\n }\n\n try {\n // ie6 dynamic iframes with target=\"\" support (thanks Chris Lambacher)\n const html = '